本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用加密卷所需的 AWS KMS 密钥策略
Amazon A EC2 uto Scaling 使用与服务相关的角色向其他 AWS 服务角色委派权限。Amazon A EC2 uto Scaling 服务相关角色是预定义的,包括 Amazon A EC2 uto Scaling 代表您呼叫他人所需的权限。 AWS 服务 预定义的权限还包括对您的访问权限 AWS 托管式密钥。但是,它们不包括对客户管理密钥的访问权限,因此您可以保持对这些密钥的完全控制。
本主题介绍如何设置在为亚马逊EBS加密指定客户托管密钥时启动 Auto Scaling 实例所需的密钥策略。
注意
Amazon A EC2 uto Scaling 无需额外授权即可使用默认设置 AWS 托管式密钥 来保护您账户中的加密卷。
概述
当 Amazon A EC2 uto Scaling 启动实例时,以下内容 AWS KMS keys 可用于亚马逊EBS加密:
在创建加密的快照或指定加密卷的启动模板,或者默认启用加密时,您可以配置客户托管密钥。
配置密钥策略
您的KMS密钥必须具有密钥策略,允许 Amazon A EC2 uto Scaling 启动使用客户托管密钥加密的亚马逊EBS卷的实例。
使用本页上的示例配置密钥策略,让 Amazon A EC2 uto Scaling 能够访问您的客户托管密钥。您可以在创建密钥时或以后的某个时间修改客户托管密钥的密钥策略。
要使其与 Amazon A EC2 uto Scaling 配合使用,您必须至少在密钥策略中添加两份政策声明。
-
第一条语句允许
Principal
元素中指定的IAM身份直接使用客户托管密钥。它包括对密钥执行 AWS KMSEncrypt
Decrypt
、ReEncrypt*
、GenerateDataKey*
、和DescribeKey
操作的权限。 -
第二条语句允许
Principal
元素中指定的IAM身份使用CreateGrant
操作生成授权,这些授权将自己的权限子集委托给与 AWS KMS 或其他委托人集成的权限。 AWS 服务 这样,他们可以使用密钥代表您创建加密的资源。
当您向密钥策略添加新的策略语句时,不要更改策略中任何已存在的语句。
对于以下每个示例,必须替换的参数(例如密钥 ID 或服务相关角色的名称)显示为 user placeholder
text
。 在大多数情况下,您可以将服务相关角色的名称替换为 Amazon A EC2 uto Scaling 服务相关角色的名称。
有关更多信息,请参阅以下资源:
-
要使用创建密钥 AWS CLI,请参阅创建密钥。
-
要使用更新密钥策略 AWS CLI,请参阅put-key-policy。
-
要查找密钥 ID 和 Amazon 资源名称 (ARN),请参阅查找密钥 ID 和ARN《AWS Key Management Service 开发者指南》。
-
有关 Amazon A EC2 uto Scaling 服务相关角色的信息,请参阅Amazon EC2 Auto Scaling 的服务相关角色。
-
有关亚马逊EBS加密和KMS一般亚马逊EBS加密的信息,请参阅亚马逊EBS用户指南和AWS Key Management Service 开发者指南。
示例 1:允许访问客户托管密钥的关键策略部分
将以下两个策略声明添加到客户托管密钥的密钥策略中,将示例ARN替换为允许访问密钥ARN的相应服务相关角色的示例。在此示例中,策略部分向名为的服务相关角色AWSServiceRoleForAutoScaling授予使用客户托管密钥的权限。
{ "Sid": "Allow service-linked role use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
account-id
: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::
account-id
:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling
" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }
示例 2:允许跨账户访问客户托管密钥的关键策略部分
如果您在与自动扩缩组不同的账户中创建了客户管理型密钥,则必须组合使用授权和密钥策略以允许对该密钥的跨账户存取。
必须按以下顺序完成两个步骤:
-
首先,将以下两个策略语句添加到客户管理型密钥的密钥策略中。将示例ARN替换为其他账户ARN的示例,确保替换
111122223333
以及您要在其中创建 Auto Scaling 组的实际账户 ID。 AWS 账户 这允许您使用以下CLI命令向指定账户中的IAM用户或角色授予创建密钥授权的权限。但这本身并不会向任何用户授予对密钥的访问权限。{ "Sid": "Allow external account
111122223333
use of the customer managed 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 in external account
111122223333
", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:root" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*" } -
然后从您要在其中创建自动扩缩组的账户中,创建一个授权以将相关权限委托给相应的服务相关角色。补助金的
Grantee Principal
要素是相应的服务相关角色ARN的内容。这key-id
才ARN是关键。以下是 create-gr ant 命令示例,该CLI命令为账户中命名的服务相关角色提供了该命令 AWSServiceRoleForAutoScaling
111122223333
账户中使用客户托管密钥的权限444455556666
.aws kms create-grant \ --region
us-west-2
\ --key-idarn: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"要使此命令成功,发出请求的用户必须具有执行
CreateGrant
操作的权限。以下示例IAM策略允许在账户中使用IAM身份(用户或角色)
111122223333
为账户中的客户托管密钥创建授权444455556666
.{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreationOfGrantForTheKMSKeyinExternalAccount
444455556666
", "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d
" } ] }有关为不同KMS密钥创建授权的更多信息 AWS 账户,请参阅《AWS Key Management Service 开发者指南》 AWS KMS中的授权。
重要
指定为被授权者委托人的服务相关角色名称必须是现有角色的名称。创建授权后,为确保该授权允许 Amazon A EC2 uto Scaling 使用指定的KMS密钥,请勿删除和重新创建服务相关角色。
在 AWS KMS 控制台中编辑密钥策略
之前部分中的示例仅显示如何向密钥策略添加语句,这只是更改密钥策略的一种方法。更改密钥策略的最简单方法是使用 AWS KMS 控制台的默认密钥策略视图,并将IAM身份(用户或角色)设为相应密钥策略的密钥用户之一。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的使用 AWS Management Console 默认视图。
重要
请务必谨慎。控制台的默认视图策略声明包括对客户托管密钥执行 AWS KMS Revoke
操作的权限。如果您授予对账户中客户托管密钥的 AWS 账户 访问权限,但又不小心撤销了授予他们此权限的授权,则外部用户将无法再访问他们的加密数据或用于加密其数据的密钥。