选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

在现有集群上使用 {aws} KMS 加密 Kubernetes 密钥

聚焦模式
在现有集群上使用 {aws} KMS 加密 Kubernetes 密钥 - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

如果启用密钥加密,则会使用您选择的 AWS KMS 密钥对 Kubernetes 密钥加密。KMS 密钥必须符合以下条件:

  • 对称

  • 可以加密和解密数据

  • 在与集群相同的 AWS 区域中创建

  • 如果 KMS 密钥是在其他账户中创建的,则 IAM 主体必须拥有对 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
  1. 打开 Amazon EKS 控制台

  2. 选择要向其添加 KMS 加密的集群。

  3. 选择 Overview(概述)选项卡(默认处于选中状态)。

  4. 向下滚动到 Secrets encryption(密钥加密)部分,然后选择 Enable(启用)按钮。

  5. 从下拉列表中选择一个密钥,然后选择 Enable(启用)按钮。如果未列出任何密钥,则必须先创建一个密钥。有关更多信息,请参阅创建密钥

  6. 选择 Confirm(确认)按钮以使用选定的密钥。

AWS CLI
  1. 使用以下 AWS CLI 命令将密钥加密配置与您的集群相关联。将 example values 替换为您自己的值。

    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": []   } }
  2. 您可以使用以下命令监控加密更新的状态。使用上一个输出中返回的特定 cluster nameupdate 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": []   } }
  3. 要验证集群已启用加密,请运行 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 操作和资源的访问权限。如果要缩小权限的范围,请确保允许对将调用 create-cluster API 的主体的策略执行 kms:DescribeKeykms:CreateGrant 操作。

对于使用 KMS 信封加密的集群,需要具有 kms:CreateGrant 权限。CreateCluster 操作不支持条件 kms:GrantIsForAWSResource,也不应在 KMS 策略中用于控制执行 CreateCluster 的用户的 kms:CreateGrant 权限。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。