需要加密卷的CMK关键策略的要求 - Amazon EC2 Auto Scaling
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

需要加密卷的CMK关键策略的要求

创建加密时 Amazon EBS 指定加密卷或默认启用加密的快照或启动模板,您可以选择以下选项之一 AWS Key Management Service 客户主密钥(CMK)以加密您的数据:

  • AWS管理CMK — 您帐户中的加密密钥 Amazon EBS 创建、拥有和管理。这是新账户的默认加密密钥。AWS 托管 CMK 用于加密,除非您指定客户托管 CMK。

  • 客户管理CMK — 您创建、拥有和管理的自定义加密密钥。有关详细信息,请参阅 创建密钥AWS Key Management Service Developer Guide.

    注意:Amazon EBS 不支持非对称 CMK。

Amazon EC2 Auto Scaling 无需额外授权即可使用默认的 AWS 托管 CMK 来保护您 AWS 账户中的加密卷。

如果您指定客户管理CMK Amazon EBS 加密,您必须提供相应的 服务链接角色 访问CMK,以便 Amazon EC2 Auto Scaling 可以代表您启动实例。为此,您必须在创建 CMK 时或稍后修改 CMK 的密钥策略。

配置关键策略

使用此页面上的示例配置密钥策略来向 Amazon EC2 Auto Scaling 提供访问客户托管 CMK 的权限。您必须向 CMK 的密钥策略中添加至少两个策略语句,以便此策略可用于 Amazon EC2 Auto Scaling.

  • 第一个声明允许 IAM 标识在 Principal 要直接使用CMK的元素。它包括执行 AWS KMS EncryptDecryptReEncrypt*GenerateDataKey*,和 DescribeKey CMK的操作。

  • 第二个声明允许 IAM 标识在 Principal 要使用授权的元素,将其自身权限的子集委派给AWS服务 AWS KMS 或其他负责人。这样,他们可以使用 CMK 代表您创建加密的资源。

当您向 CMK 策略添加新的策略语句时,不要更改策略中任何已存在的语句。

对于以下每个示例,必须更换的参数(例如,密钥ID或服务链接角色的名称)都显示为 replaceable text in italics在大多数情况下,您可以使用 Amazon EC2 Auto Scaling 服务相关角色的名称替换此服务相关角色的名称。但是,当使用启动配置启动 Spot 实例时,请使用名为 的角色。AWSServiceRoleForEC2Spot.

请参阅以下资源:

在控制台中编辑密钥策略

以下部分中的示例仅显示如何向密钥策略添加语句,这只是更改密钥策略的一种方法。更改关键策略的最简单方法是使用 IAM 控制台关键策略的默认视图,并使 IAM 实体(用户或角色) 关键用户 适当的关键政策。有关详细信息,请参阅 使用AWS管理控制台默认视图AWS Key Management Service Developer Guide.

重要

请务必谨慎。控制台的默认视图策略声明包括执行权限 AWS KMS Revoke CMK的操作。如果您授予 AWS 账户访问您账户中的 CMK 的权限,而您意外撤销了授予其此权限的授权,则外部用户将无法再访问其加密的数据或用于加密其数据的密钥。

示例:允许访问CMK的CMK关键策略部分

将以下两个策略语句添加到客户托管 CMK 的密钥策略中,同时将示例 ARN 替换为允许访问 CMK 的相应服务相关角色的 ARN。在此示例中,策略部分提供了名为“服务链接”的角色 AWSServicerOleforAutoScaling 使用客户管理CMK的权限。

{ "Sid": "Allow service-linked role use of the CMK", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws-cn:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "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::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

示例:允许跨客户访问CMK的CMK关键政策部分

如果您的客户托管 CMK 与 Auto Scaling 组位于不同的账户中,您必须组合使用授权和密钥策略以允许访问 CMK。有关详细信息,请参阅 使用授权AWS Key Management Service Developer Guide.

首先,将以下两个策略语句添加到 CMK 的密钥策略中,同时将示例 ARN 替换为外部账户的 ARN 并指定可在其中使用密钥的账户。这允许您使用 IAM 政策提供 IAM 指定帐户权限中的用户或角色,以使用以下CLI命令为CMK创建授权。授予 AWS 账户对 CMK 的完全访问权限,本身并不会向任何 IAM 用户或角色授予对 CMK 的访问权限。

{ "Sid": "Allow external account 111122223333 use of the CMK", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws-cn:iam::111122223333:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
{ "Sid": "Allow attachment of persistent resources in external account 111122223333", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws-cn:iam::111122223333:root" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*" }

然后,从外部账户,创建一个授权以将相关权限委派给相应的服务相关角色。该授权的 Grantee Principal 元素是相应的服务相关角色的 ARN。TheThethe key-id 是CMK的ARN。以下是示例 创建-授予 指定服务链接角色的CLI命令 AWSServicerOleforAutoScaling 账户 111122223333 在帐户中使用CMK的权限 444455556666.

aws kms create-grant \ --region us-west-2 \ --key-id arn:aws-cn:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d \ --grantee-principal arn:aws-cn:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling \ --operations "Encrypt" "Decrypt" "ReEncryptFrom" "ReEncryptTo" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "DescribeKey" "CreateGrant"

要使此命令成功,发出请求的用户必须具有执行 CreateGrant 操作的权限。以下示例 IAM 政策允许 IAM 帐户中的用户或角色 111122223333 如何在账户中为CMK创建授权 444455556666.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow creation of grant for the CMK in external account 444455556666", "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws-cn:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" } ] }

如果您在配置用于启动具有加密卷的实例的客户托管CMK的跨帐户访问时遇到任何问题,请参阅 故障排除部分.

有关详细信息,请参阅 Amazon EBS EncryptionAmazon EC2 用户指南(适用于 Linux 实例)AWS Key Management Service Developer Guide.