存取叢集 - Amazon MemoryDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

存取叢集

您的 MemoryDB 執行個體旨在透過 Amazon EC2執行個體存取。

您可以從相同 Amazon 中的 Amazon EC2執行個體存取 MemoryDB 節點VPC。或者,透過VPC對等,您可以從不同 Amazon EC2中的 Amazon 存取 MemoryDB 節點VPC。

授予對叢集的存取權

您只能從在相同 Amazon 中執行的 Amazon EC2執行個體連線至 MemoryDB 叢集VPC。在此情況下,您需要授權透過網路輸入至叢集。

將網路輸入從 Amazon VPC安全群組授予叢集
  1. 登入 AWS Management Console 並在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/

  2. 在左側導覽窗格中,於 Network & Security 下,選擇安全群組

  3. 從安全群組清單中,選擇 Amazon 的安全群組VPC。除非您為 MemoryDB 使用建立安全群組,否則此安全群組將命名為預設

  4. 選擇 Inbound (傳入) 標籤,然後執行下列動作:

    1. 選擇編輯

    2. 選擇新增規則

    3. 類型欄中,選擇自訂TCP規則

    4. Port range (連接埠範圍) 方塊中,輸入要用於叢集節點的連接埠號碼。此號碼必須與您啟動叢集時指定的號碼相同。Valkey 和 Redis 的預設連接埠OSS為 6379

    5. 來源方塊中,選擇具有連接埠範圍 (0.0.0.0/0) 的任何地方,以便在 Amazon 內啟動的任何 Amazon EC2執行個體VPC都可以連線至 MemoryDB 節點。

      重要

      將 MemoryDB 叢集開啟至 0.0.0.0/0 不會讓叢集暴露至網際網路,因為它沒有公有 IP 地址,因此無法從 外部存取VPC。不過,預設安全群組可以套用至客戶帳戶中的其他 Amazon EC2執行個體,而且這些執行個體可能具有公有 IP 地址。如果他們正巧在預設連接埠上執行某些項目,就可能會意外公開該服務。因此,我們建議您建立僅供 MemoryDB 使用VPC的安全群組。如需詳細資訊,請參閱自訂安全群組

    6. 選擇 Save (儲存)。

當您在 Amazon 中啟動 Amazon EC2執行個體時VPC,該執行個體將能夠連線至您的 MemoryDB 叢集。

從外部存取 MemoryDB 資源 AWS

MemoryDB 是設計用於 內部的服務VPC。由於網際網路流量和安全性考量的延遲,因此不鼓勵外部存取。不過,如果需要外部存取 MemoryDB 以進行測試或開發,可以透過 完成VPN。

使用 AWS 用戶端 VPN,您可以允許外部存取 MemoryDB 節點,並具有下列優點:

  • 有限存取核准的使用者或身分驗證金鑰;

  • VPN 用戶端與 AWS VPN端點之間的加密流量;

  • 有限存取特定子網路或節點;

  • 輕鬆撤銷使用者的存取或身分驗證金鑰;

  • 稽核連線;

以下程序示範如何:

建立憑證授權機構

您可以使用不同的技術或工具來建立憑證授權單位 (CA)。我們建議使用 Open VPN專案提供的 easy-rsa 公用程式。無論您選擇哪個選項,請確保金鑰安全無虞。下列程序會下載 easy-rsa 指令碼、建立憑證授權單位和金鑰,以驗證第一個VPN用戶端:

  • 若要建立初始憑證,請開啟終端機並執行下列動作:

    • git clone https://github.com/OpenVPN/容易使用rsa

    • cd easy-rsa

    • ./easyrsa3/easyrsa init-pki

    • ./easyrsa3/easyrsa build-ca nopass

    • ./easyrsa3/easyrsa build-server-full server nopass

    • ./easyrsa3/easyrsa build-client-full client1.domain.tld nopass

    包含憑證的 pki 子目錄將建立於 easy-rsa 下。

  • 將伺服器憑證提交至 AWS 憑證管理器 (ACM):

    • 在ACM主控台上,選取 Certificate Manager

    • 選取 Import certificate (匯入憑證)

    • Certificate body (憑證內文) 欄位裡輸入 easy-rsa/pki/issued/server.crt 檔案中可用的公有金鑰憑證。

    • Certificate private key (憑證私有金鑰) 欄位裡貼上 easy-rsa/pki/private/server.key 中可用的私有金鑰。請確定選取 BEGIN AND END PRIVATE KEY 之間的所有直線 (包括 BEGINEND 直線)。

    • Certificate chain (憑證鏈) 欄位中貼上 easy-rsa/pki/ca.crt 檔案中可用的 CA 公有金鑰。

    • 選取 Review and import (檢閱和匯入)

    • 選取 Import (匯入)

    若要ACM使用 將伺服器的憑證提交至 AWS CLI,請執行下列命令: aws acm import-certificate --certificate fileb://easy-rsa/pki/issued/server.crt --private-key file://easy-rsa/pki/private/server.key --certificate-chain file://easy-rsa/pki/ca.crt --region region

    請注意憑證ARN以供未來使用。

設定 AWS 用戶端VPN元件

使用 AWS 主控台

在 AWS 主控台上,選取服務,然後選取 VPC

虛擬私有網路 下,選取用戶端VPN端點並執行下列動作:

設定 AWS 用戶端VPN元件

  • 選取建立用戶端VPN端點

  • 指定下列選項:

    • 用戶端 IPv4 CIDR:使用網路遮罩至少為 /22 範圍的私有網路。請確定選取的子網路不會與VPC網路的地址衝突。範例:10.0.0.0/22.

    • 伺服器憑證 ARN中,選取先前匯入的憑證ARN的 。

    • 選取 Use mutual authentication (使用交互身分驗證)

    • 用戶端憑證 ARN中,選取先前匯入憑證ARN的 。

    • 選取建立用戶端VPN端點

使用 AWS CLI

執行以下命令:

aws ec2 create-client-vpn-endpoint --client-cidr-block "10.0.0.0/22" --server-certificate-arn arn:aws:acm:us-east-1:012345678912:certificate/0123abcd-ab12-01a0-123a-123456abcdef --authentication-options Type=certificate-authentication,,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:us-east-1:012345678912:certificate/123abcd-ab12-01a0-123a-123456abcdef} --connection-log-options Enabled=false

輸出範例:

"ClientVpnEndpointId": "cvpn-endpoint-0123456789abcdefg", "Status": { "Code": "pending-associate" }, "DnsName": "cvpn-endpoint-0123456789abcdefg.prod.clientvpn.us-east-1.amazonaws.com" }

將目標網路與VPN端點建立關聯

  • 選取新VPN端點,然後選取關聯索引標籤。

  • 選取 Associations (關聯) 並指定下列選項。

    • VPC:選取 MemoryDB 叢集的 VPC。

    • 選取其中一個 MemoryDB 叢集的網路。如有疑問,請在 MemoryDB 儀表板上的子網路群組中檢閱網路。

    • 選取 Associations (關聯)。如有必要,請針對剩餘的網路重複這些步驟。

使用 AWS CLI

執行以下命令:

aws ec2 associate-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --subnet-id subnet-0123456789abdcdef

輸出範例:

"Status": { "Code": "associating" }, "AssociationId": "cvpn-assoc-0123456789abdcdef" }

檢閱VPN安全群組

VPN Enpoint 會自動採用 VPC的預設安全群組。檢查傳入和傳出規則,並確認安全群組是否允許流量從VPN網路 (在VPN端點設定上定義) 到服務連接埠上的 MemoryDB 網路 (預設為 6379 for Redis)。

如果您需要變更指派給VPN端點的安全群組,請依照下列步驟執行:

  • 選取目前安全群組。

  • 選取 Apply Security Group (套用安全群組)

  • 選取新的安全群組。

使用 AWS CLI

執行以下命令:

aws ec2 apply-security-groups-to-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefga  --vpc-id vpc-0123456789abdcdef --security-group-ids sg-0123456789abdcdef

輸出範例:

"SecurityGroupIds": [ "sg-0123456789abdcdef" ] }

注意

MemoryDB 安全群組也需要允許來自VPN用戶端的流量。根據VPC網路,用戶端的地址將使用VPN端點地址進行遮罩。因此,在 MemoryDB 安全群組上建立傳入規則時,請考慮VPC網路 (而非VPN用戶端的網路)。

授權對目的地網路的VPN存取

Authorization (授權) 標籤上,選取 Authorize Ingress (授權輸入) 並指定下列項目:

  • 啟用存取的目的地網路:使用 0.0.0.0/0 以允許存取任何網路 (包括網際網路) 或限制 MemoryDB 網路/主機。

  • Grant access to: (授予存取:) 下,選取 Allow access to all users (允許存取所有使用者)

  • 選取 Add Authorization Rules (新增授權規則)

使用 AWS CLI

執行以下命令:

aws ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --target-network-cidr 0.0.0.0/0 --authorize-all-groups

輸出範例:

{ "Status": { "Code": "authorizing" } }

允許從VPN用戶端存取網際網路

如果您需要透過 瀏覽網際網路VPN,則需要建立額外的路由。選取 Route Table (路由表) 標籤,然後選取 Create Route (建立路由)

  • 路由目標:0.0.0.0/0

  • 目標VPC子網路 ID :選取其中一個可存取網際網路的關聯子網路。

  • 選取 Create Route (建立路由)

使用 AWS CLI

執行以下命令:

aws ec2 create-client-vpn-route --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --destination-cidr-block 0.0.0.0/0 --target-vpc-subnet-id subnet-0123456789abdcdef

輸出範例:

{ "Status": { "Code": "creating" } }

設定VPN用戶端

在 AWS 用戶端VPN儀表板上,選取最近建立的VPN端點,然後選取下載用戶端組態 。複製組態檔案,以及檔案 easy-rsa/pki/issued/client1.domain.tld.crteasy-rsa/pki/private/client1.domain.tld.key。編輯組態檔案,並變更或新增下列參數:

  • 憑證:新增一個指向 client1.domain.tld.crt 檔案的參數憑證的新行。使用檔案的完整路徑。範例:cert /home/user/.cert/client1.domain.tld.crt

  • 憑證:金鑰:新增一個指向 client1.domain.tld.key 檔案的參數金鑰的新行。使用檔案的完整路徑。範例:key /home/user/.cert/client1.domain.tld.key

使用 命令建立VPN連線: sudo openvpn --config downloaded-client-config.ovpn

撤銷存取

如果您需要讓來自特定客戶端金鑰的存取失效,則需要在 CA 中撤銷該金鑰。然後將撤銷清單提交至 AWS 用戶端 VPN。

用 easy-rsa 撤銷密鑰:

  • cd easy-rsa

  • ./easyrsa3/easyrsa revoke client1.domain.tld

  • 輸入「是」以繼續,或輸入任何其他輸入以中止。

    Continue with revocation: `yes` ... * `./easyrsa3/easyrsa gen-crl

  • 已更新 CRL 已建立。CRL 檔案: /home/user/easy-rsa/pki/crl.pem

將撤銷清單匯入 AWS 用戶端VPN:

  • 在 上 AWS Management Console,選取服務,然後選取 VPC

  • 選取用戶端VPN端點

  • 選取用戶端VPN端點,然後選取動作 -> 匯入用戶端憑證 CRL

  • 貼上 crl.pem 檔案的內容:

使用 AWS CLI

執行以下命令:

aws ec2 import-client-vpn-client-certificate-revocation-list --certificate-revocation-list file://./easy-rsa/pki/crl.pem --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg

輸出範例:

Example output: { "Return": true }