協助改善此頁面
想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用現有叢集上的 Kubernetes 密碼加 AWS KMS密
若您啟用密碼加密,系統會使用您選取的 AWS KMS key
加密 Kubernetes 密碼。KMS金鑰必須符合下列條件:
如需詳細資訊,請參閱AWS Key Management Service 開發人員指南中的允許其他帳戶中的IAM主參與者使用KMS金鑰。
- eksctl
-
您可以在以兩種方式啟用加密:
-
使用單一命令將加密新增至叢集。
若要自動重新加密您的秘密,請執行下列命令。
eksctl utils enable-secrets-encryption \
--cluster my-cluster
\
--key-arn arn:aws:kms:region-code
:account
:key/key
若要退出自動重新加密您的密碼,請執行下列命令。
eksctl utils enable-secrets-encryption
--cluster my-cluster
\
--key-arn arn:aws:kms:region-code
:account
:key/key
\
--encrypt-existing-secrets=false
-
使用 kms-cluster.yaml
檔案將加密新增到您的叢集中。
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: region-code
secretsEncryption:
keyARN: arn:aws:kms:region-code
:account
:key/key
若要讓您的秘密自動重新加密,請執行下列命令。
eksctl utils enable-secrets-encryption -f kms-cluster.yaml
若要退出自動重新加密您的密碼,請執行下列命令。
eksctl utils enable-secrets-encryption -f kms-cluster.yaml --encrypt-existing-secrets=false
- AWS Management Console
-
在https://console.aws.amazon.com/eks/家裡 #/集群打開 Amazon EKS 控制台。
-
選擇您要新增KMS加加密的叢集。
-
選擇 Overview (概觀) 索引標籤 (預設選取此項)。
-
向下捲動到 Secrets encryption (私密加密) 區段,然後選擇 Enable (啟用)。
-
從下拉式清單中選取金鑰,然後選擇 Enable (啟用) 按鈕。如果未列出任何金鑰,您必須先建立一個。如需詳細資訊,請參閱建立金鑰。
-
選擇 Confirm (確認) 按鈕以使用選擇的金鑰。
- AWS CLI
-
-
使用下列 AWS CLI 命令將密碼加密配置與叢集建立關聯。更換 範例值
用你自己的。
aws eks associate-encryption-config \
--cluster-name my-cluster
\
--encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"arn:aws:kms:region-code
:account
:key/key
"}}]'
範例輸出如下。
{
"update": {
"id": "3141b835-8103-423a-8e68-12c2521ffa4d
",
"status": "InProgress",
"type": "AssociateEncryptionConfig",
"params": [
{
"type": "EncryptionConfig",
"value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:region-code
:account
:key/key
\"}}]"
}
],
"createdAt": 1613754188.734
,
"errors": []
}
}
-
您可以使用下列命令來監控您的加密更新的狀態。使用之前輸出傳回的特定 cluster name
和 update ID
。顯示 Successful
狀態時,即表示更新已完成。
aws eks describe-update \
--region region-code
\
--name my-cluster
\
--update-id 3141b835-8103-423a-8e68-12c2521ffa4d
範例輸出如下。
{
"update": {
"id": "3141b835-8103-423a-8e68-12c2521ffa4d
",
"status": "Successful",
"type": "AssociateEncryptionConfig",
"params": [
{
"type": "EncryptionConfig",
"value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:region-code
:account
:key/key
\"}}]"
}
],
"createdAt": 1613754188.734>,
"errors": []
}
}
-
若要驗證您的叢集中是否已啟用加密,請執行 describe-cluster
命令。回應包含 EncryptionConfig
字串。
aws eks describe-cluster --region region-code
--name my-cluster
在叢集上啟用加密之後,您須使用新金鑰來加密所有現有的密碼:
如果您使用 eksctl
,則僅當您選擇退出自動重新加密秘密時,才需要執行以下命令。
kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - kms-encryption-timestamp="time value
"
如果您為現有叢集啟用密碼加密,且您使用的KMS金鑰遭到刪除,則無法復原叢集。如果刪除KMS金鑰,則會將叢集永久置於降級狀態。如需詳細資訊,請參閱刪除 AWS
KMS金鑰。
根據預設,此命create-key
令會建立具有KMS金鑰原則的對稱加密金鑰,該金鑰可讓帳號根管理員存取 AWS KMS 動作和資源。如果您想要縮小權限的範圍,請確定在呼叫的主體的原則上允許kms:DescribeKey
和kms:CreateGrant
動作create-cluster
API。
對於使用KMS信封加密的叢集,需要kms:CreateGrant
權限。此 CreateCluster動作kms:GrantIsForAWSResource
不支援此條件,且不應用於KMS策略中,以控制執行之使用者的kms:CreateGrant
權限 CreateCluster。