Amazon EC2 Auto Scaling
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

与加密卷结合使用时必需的 CMK 密钥策略

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

注意

默认情况下,Amazon EC2 Auto Scaling 有权访问用于 EBS 加密的 AWS 托管 CMK。此 CMK 对于您的账户和使用该账户的 AWS 区域而言是唯一的。AWS 托管 CMK 用于加密,除非您指定客户托管 CMK。有关创建客户托管 CMK 的信息,请参阅 AWS Key Management Service Developer Guide 中的创建密钥

示例:允许访问 CMK 的 CMK 密钥策略部分

以下两个策略部分授予名为 AWSServiceRoleForAutoScaling 的服务相关角色使用客户托管 CMK 的权限。

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

向 CMK 策略添加新部分时,不要更改策略中任何已存在的部分。有关编辑密钥策略的更多信息,请参阅 AWS Key Management Service Developer Guide 中的在 AWS KMS 中使用密钥策略

重要

密钥策略的 Principal 元素是服务相关角色的 Amazon 资源名称 (ARN)。在启动按需实例时,使用适用于 Amazon EC2 Auto Scaling 的服务相关 ARN:AWSServiceRoleForAutoScaling。在启动 Spot 实例时,如果使用了启动配置,则使用 AWSServiceRoleForEC2Spot 角色的 ARN,如果使用了启动模板,则使用适用于 Amazon EC2 Auto Scaling 的服务相关角色。

示例:允许跨账户访问 CMK 的 CMK 密钥策略部分

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

首先,将以下两部分添加到 CMK 的密钥策略中,以便您可以将 CMK 与外部账户(根用户)一起使用。

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

然后,从外部账户创建一个授权,将相关权限委派给相应的服务相关角色。该授权的 Grantee Principal 元素是相应的服务相关角色的 ARN。密钥 ID 是您的账户中 CMK 的 ARN。以下是创建授权 CLI 命令示例,该命令授予名为 AWSServiceRoleForAutoScaling 的服务相关角色使用 CMK 权限:

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

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