加密附加到 Amazon ECS 任务的 Amazon EBS 卷中存储的数据 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

加密附加到 Amazon ECS 任务的 Amazon EBS 卷中存储的数据

您可以使用 Amazon Key Management Service(Amazon KMS)来创建和管理用于保护您的数据的加密密钥。Amazon EBS 卷通过使用 Amazon KMS keys 进行静态加密。将加密以下类型的数据:

  • 在卷上静态存储的数据

  • 磁盘 I/O

  • 从卷中创建的快照

  • 从加密的快照创建的新卷

附加到任务的 Amazon EBS 卷可以通过使用别名为 alias/aws/ebs 的默认 Amazon 托管式密钥 或卷配置中指定的对称客户自主管理型密钥进行加密。默认的 Amazon 托管式密钥 对每个 Amazon Web Services 区域 的每个 Amazon Web Services 账户 都是唯一的,并且将自动创建。要创建对称的客户托管密钥,请按照《Amazon KMS 开发人员指南》创建对称加密 KMS 密钥中的步骤进行操作。

您可以默认配置 Amazon EBS 加密,以便使用您为账户指定的 KMS 密钥,对创建并附加到特定 Amazon Web Services 区域中的任务的所有新卷进行加密。有关 Amazon EBS 加密和默认加密的更多信息,请参阅《Amazon EBS 用户指南》中的 Amazon EBS encryption

您还可以在创建或更新集群时为 Amazon ECS 托管存储设置 Amazon ECS 集群级加密。集群级加密可用于通过使用在集群级别指定的 KMS 密钥来加密附加到在特定集群中运行的任务的所有 Amazon EBS 卷。有关在集群级别配置加密的更多信息,请参阅《Amazon ECS API 参考》中的 ManagedStorageConfiguration

您可以配置这些密钥的任意组合。KMS 密钥的优先顺序如下:

  1. 卷配置中指定的 KMS 密钥。在卷配置中指定 KMS 密钥时,它会覆盖 Amazon EBS 默认值以及在集群级别指定的任何 KMS 密钥。

  2. 在集群级别指定的 KMS 密钥。为 Amazon ECS 托管存储的集群级加密指定 KMS 密钥时,它会覆盖 Amazon EBS 默认加密,但不会覆盖卷配置中指定的任何 KMS 密钥。

  3. Amazon EBS 默认加密。当您未指定集群级 KMS 密钥或卷配置中的密钥时,将应用默认加密。如果默认启用 Amazon EBS 加密,则默认值是您默认指定用于加密的 KMS 密钥。否则,默认值是别名为 alias/aws/ebs 的 Amazon 托管式密钥。

    注意

    如果在卷配置中将 encrypted 设置为 false,不指定集群级 KMS 密钥,并且默认启用 Amazon EBS 加密,则默认情况下,仍将使用为 Amazon EBS 加密指定的密钥对卷进行加密。

客户托管的 KMS 密钥政策

要使用客户自主管理型密钥对附加到任务的 EBS 卷进行加密,您必须配置 KMS 密钥策略,以确保用于卷配置的 IAM 角色拥有使用该密钥的必要权限。密钥政策必须包含 kms:CreateGrantkms:GenerateDataKey* 权限。kms:ReEncryptTokms:ReEncryptFrom 权限是加密使用快照创建的卷所必需的。如果您只想为附加配置和加密新的空卷,您可以排除 kms:ReEncryptTokms:ReEncryptFrom 权限。

以下 JSON 代码段显示您可以附加到 KMS 密钥政策的密钥政策语句。使用这些语句将为 Amazon ECS 提供使用该密钥来加密 EBS 卷的权限。要使用策略语句示例,请将 user input placeholders 替换为您自己的信息。与往常一样,只配置您需要的权限。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" }, "Action": "kms:DescribeKey", "Resource":"*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" }, "Action": [ "kms:GenerateDataKey*", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource":"*", "Condition": { "StringEquals": { "kms:CallerAccount": "aws_account_id", "kms:ViaService": "ec2.region.amazonaws.com" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:ebs:id" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" }, "Action": "kms:CreateGrant", "Resource":"*", "Condition": { "StringEquals": { "kms:CallerAccount": "aws_account_id", "kms:ViaService": "ec2.region.amazonaws.com" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:ebs:id" }, "Bool": { "kms:GrantIsForAWSResource": true } } }

有关密钥策略和权限的更多信息,请参阅《Amazon KMS 开发人员指南》中的 Amazon KMS 中的密钥策略Amazon KMS 权限。要排查与密钥权限相关的 EBS 卷附加问题,请参阅排查 Amazon ECS 任务挂载 Amazon EBS 卷的问题