在 EKS 自动模式下使用客户自主管理型 KMS 密钥启用 EBS 卷加密 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

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

在 EKS 自动模式下使用客户自主管理型 KMS 密钥启用 EBS 卷加密

您可以使用客户自主管理型 KMS 密钥对 EKS 自动模式实例的临时根卷进行加密。

在管理 Kubernetes 集群的加密 EBS 卷时,Amazon EKS 自动模式使用服务相关角色向其他 Amazon 服务委派权限。本主题介绍当您为 Amazon EBS 加密指定客户自主管理型密钥时,如何设置所需的密钥策略。

注意事项:

  • EKS 自动模式无需额外授权,即可使用默认的 Amazon 托管式密钥来保护您账户中的加密卷。

  • 本主题介绍加密临时卷,即 EC2 实例的根卷。有关加密用于工作负载的数据卷的更多信息,请参阅创建存储类

概览

以下 Amazon KMS 密钥可在 EKS 自动模式启动实例时用于加密 Amazon EBS 根卷:

  • Amazon 托管式密钥:您账户中由 Amazon EBS 创建、拥有和管理的加密密钥。这是新账户的默认加密密钥。

  • 客户托管密钥:您创建、拥有和管理的自定义加密密钥。

注意

密钥必须是对称的。Amazon EBS 不支持非对称客户托管密钥。

第 1 步:配置密钥策略

您的 KMS 密钥必须具有相应的密钥策略,以允许 EKS 自动模式启动具有使用客户自主管理型密钥加密的 Amazon EBS 卷的实例。

请使用以下结构配置密钥策略:

注意

此策略仅包含 EKS 自动模式的权限。如果其他身份需要使用密钥或管理授权,则此密钥策略可能需要额外的权限。

{ "Version": "2012-10-17", "Id": "MyKeyPolicy", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws-cn:iam::<account-id>:role/ClusterServiceRole" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws-cn:iam::<account-id>:role/ClusterServiceRole" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } } ] }

请务必将 <account-id> 替换为实际的 Amazon 账户 ID。

配置密钥策略时:

  • ClusterServiceRole 必须具有使用该 KMS 密钥执行加密操作所需的 IAM 权限

  • kms:GrantIsForAWSResource 条件可确保只能为 Amazon 服务创建授权

第 2 步:使用客户自主管理型密钥配置节点类

配置密钥策略后,在 EKS 自动模式的节点类配置中引用该 KMS 密钥:

apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: my-node-class spec: # Insert existing configuration ephemeralStorage: size: "80Gi" # Range: 1-59000Gi or 1-64000G or 1-58Ti or 1-64T iops: 3000 # Range: 3000-16000 throughput: 125 # Range: 125-1000 # KMS key for encryption kmsKeyID: "arn:aws-cn:kms:<region>:<account-id>:key/<key-id>"

请将占位符值替换为实际的值:

  • 请将 <region> 替换为您所在的 Amazon 区域

  • 请将 <account-id> 替换为您的 Amazon 账户 ID

  • 请将 <key-id> 替换为您的 KMS 密钥 ID

您可以使用以下任意一种格式指定 KMS 密钥:

  • KMS 密钥 ID:1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d

  • KMS 密钥 ARN: arn:aws-cn:kms:us-west-2:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d

  • 密钥别名名称:alias/eks-auto-mode-key

  • 密钥别名 ARN: arn:aws-cn:kms:us-west-2:111122223333:alias/eks-auto-mode-key

使用 kubectl 应用节点类配置:

kubectl apply -f nodeclass.yaml