本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
存取叢集
您的 MemoryDB 執行個體旨在透過 Amazon EC2執行個體存取。
您可以從相同 Amazon 中的 Amazon EC2執行個體存取 MemoryDB 節點VPC。或者,透過VPC對等,您可以從不同 Amazon EC2中的 Amazon 存取 MemoryDB 節點VPC。
授予對叢集的存取權
您只能從在相同 Amazon 中執行的 Amazon EC2執行個體連線至 MemoryDB 叢集VPC。在此情況下,您需要授權透過網路輸入至叢集。
將網路輸入從 Amazon VPC安全群組授予叢集
登入 AWS Management Console 並在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/
。 -
在左側導覽窗格中,於 Network & Security 下,選擇安全群組 。
-
從安全群組清單中,選擇 Amazon 的安全群組VPC。除非您為 MemoryDB 使用建立安全群組,否則此安全群組將命名為預設 。
-
選擇 Inbound (傳入) 標籤,然後執行下列動作:
-
選擇編輯。
-
選擇新增規則。
-
在類型欄中,選擇自訂TCP規則 。
-
在 Port range (連接埠範圍) 方塊中,輸入要用於叢集節點的連接埠號碼。此號碼必須與您啟動叢集時指定的號碼相同。Valkey 和 Redis 的預設連接埠OSS為
6379
。 -
在來源方塊中,選擇具有連接埠範圍 (0.0.0.0/0) 的任何地方,以便在 Amazon 內啟動的任何 Amazon EC2執行個體VPC都可以連線至 MemoryDB 節點。
重要
將 MemoryDB 叢集開啟至 0.0.0.0/0 不會讓叢集暴露至網際網路,因為它沒有公有 IP 地址,因此無法從 外部存取VPC。不過,預設安全群組可以套用至客戶帳戶中的其他 Amazon EC2執行個體,而且這些執行個體可能具有公有 IP 地址。如果他們正巧在預設連接埠上執行某些項目,就可能會意外公開該服務。因此,我們建議您建立僅供 MemoryDB 使用VPC的安全群組。如需詳細資訊,請參閱自訂安全群組。
-
選擇 Save (儲存)。
-
當您在 Amazon 中啟動 Amazon EC2執行個體時VPC,該執行個體將能夠連線至您的 MemoryDB 叢集。
從外部存取 MemoryDB 資源 AWS
MemoryDB 是設計用於 內部的服務VPC。由於網際網路流量和安全性考量的延遲,因此不鼓勵外部存取。不過,如果需要外部存取 MemoryDB 以進行測試或開發,可以透過 完成VPN。
使用 AWS 用戶端 VPN,您可以允許外部存取 MemoryDB 節點,並具有下列優點:
有限存取核准的使用者或身分驗證金鑰;
VPN 用戶端與 AWS VPN端點之間的加密流量;
有限存取特定子網路或節點;
輕鬆撤銷使用者的存取或身分驗證金鑰;
稽核連線;
以下程序示範如何:
建立憑證授權機構
您可以使用不同的技術或工具來建立憑證授權單位 (CA)。我們建議使用 Open VPN
若要建立初始憑證,請開啟終端機並執行下列動作:
git clone
https://github.com/OpenVPN/容易使用rsacd 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
之間的所有直線 (包括BEGIN
和END
直線)。在 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.crt
和 easy-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
}