EKS 集群的 KMS 信封加密 - Eksctl 用户指南

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

EKS 集群的 KMS 信封加密

注意

对于运行 Kubernetes 1.28 或更高版本的 EKS 集群,Amazon Elastic Kubernetes Service(Amazon EKS)为所有 Kubernetes API 数据提供了默认信封加密。有关更多信息,请参阅 EKS 用户指南中的所有 Kubernetes API 数据的默认信封加密

EKS 支持使用 AWS KMS 密钥为存储在 EKS 中的 Kubernetes 密钥提供信封加密。信封加密为存储在 Kubernetes 集群中的应用程序密钥或用户数据添加了一个由客户管理的额外加密层。

以前,Amazon EKS 仅支持在创建集群期间使用 KMS 密钥启用信封加密。现在,您可以随时为 Amazon EKS 集群启用信封加密。

AWS 容器博客上阅读有关使用 EKS 加密提供商支持的更多信息。 defense-in-depth

创建启用 KMS 加密的集群

# kms-cluster.yaml # A cluster with KMS encryption enabled --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: kms-cluster region: us-west-2 managedNodeGroups: - name: ng # more config secretsEncryption: # KMS key used for envelope encryption of Kubernetes secrets keyARN: arn:aws:kms:us-west-2:<account>:key/<key>
eksctl create cluster -f kms-cluster.yaml

在现有集群上启用 KMS 加密

要在尚未启用 KMS 加密的集群上启用 KMS 加密,请运行

eksctl utils enable-secrets-encryption -f kms-cluster.yaml

或者没有配置文件:

eksctl utils enable-secrets-encryption --cluster=kms-cluster --key-arn=arn:aws:kms:us-west-2:<account>:key/<key> --region=<region>

除了在 EKS 集群上启用 KMS 加密外,eksctl 还使用新的 KMS 密钥对所有现有的 Kubernetes 密钥进行重新加密,方法是使用注释对其进行更新。eksctl.io/kms-encryption-timestamp可以通过传递来禁用此行为--encrypt-existing-secrets=false,例如:

eksctl utils enable-secrets-encryption --cluster=kms-cluster --key-arn=arn:aws:kms:us-west-2:<account>:key/<key> --encrypt-existing-secrets=false --region=<region>

如果集群已经启用了 KMS 加密,eksctl 将继续重新加密所有现有密钥。

注意

启用 KMS 加密后,无法将其禁用或更新为使用其他 KMS 密钥。