使用加密卷所需的 AWS KMS 密钥策略 - Amazon A EC2 uto Scaling

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

使用加密卷所需的 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加密:

  • AWS 托管式密钥— Amazon 在您的账户中EBS创建、拥有和管理的加密密钥。这是新账户的默认加密密钥。除非您指定客户托管密钥,否则将使用加密。 AWS 托管式密钥

  • 客户托管密钥 — 由您创建、拥有和管理的自定义加密密钥。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的创建密钥

    注意:密钥必须是对称的。Amazon EBS 不支持非对称的客户托管密钥。

在创建加密的快照或指定加密卷的启动模板,或者默认启用加密时,您可以配置客户托管密钥。

配置密钥策略

您的KMS密钥必须具有密钥策略,允许 Amazon A EC2 uto Scaling 启动使用客户托管密钥加密的亚马逊EBS卷的实例。

使用本页上的示例配置密钥策略,让 Amazon A EC2 uto Scaling 能够访问您的客户托管密钥。您可以在创建密钥时或以后的某个时间修改客户托管密钥的密钥策略。

要使其与 Amazon A EC2 uto Scaling 配合使用,您必须至少在密钥策略中添加两份政策声明。

  • 第一条语句允许Principal元素中指定的IAM身份直接使用客户托管密钥。它包括对密钥执行 AWS KMS EncryptDecryptReEncrypt*GenerateDataKey*、和DescribeKey操作的权限。

  • 第二条语句允许Principal元素中指定的IAM身份使用CreateGrant操作生成授权,这些授权将自己的权限子集委托给与 AWS KMS 或其他委托人集成的权限。 AWS 服务 这样,他们可以使用密钥代表您创建加密的资源。

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

对于以下每个示例,必须替换的参数(例如密钥 ID 或服务相关角色的名称)显示为 user placeholder text。 在大多数情况下,您可以将服务相关角色的名称替换为 Amazon A EC2 uto Scaling 服务相关角色的名称。

有关更多信息,请参阅以下资源:

示例 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:允许跨账户访问客户托管密钥的关键策略部分

如果您在与自动扩缩组不同的账户中创建了客户管理型密钥,则必须组合使用授权和密钥策略以允许对该密钥的跨账户存取。

必须按以下顺序完成两个步骤:

  1. 首先,将以下两个策略语句添加到客户管理型密钥的密钥策略中。将示例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": "*" }
  2. 然后从您要在其中创建自动扩缩组的账户中,创建一个授权以将相关权限委托给相应的服务相关角色。补助金的Grantee Principal要素是相应的服务相关角色ARN的内容。这key-id才ARN是关键。

    以下是 create-gr ant 命令示例,该CLI命令为账户中命名的服务相关角色提供了该命令 AWSServiceRoleForAutoScaling 111122223333 账户中使用客户托管密钥的权限 444455556666.

    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"

    要使此命令成功,发出请求的用户必须具有执行 CreateGrant 操作的权限。

    以下示例IAM策略允许在账户中使用IAM身份(用户或角色) 111122223333 为账户中的客户托管密钥创建授权 444455556666.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreationOfGrantForTheKMSKeyinExternalAccount444455556666", "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 账户 访问权限,但又不小心撤销了授予他们此权限的授权,则外部用户将无法再访问他们的加密数据或用于加密其数据的密钥。