View a markdown version of this page

在中使用加密 EBS 卷所需的 KMS 密钥策略 AWS 个 - AWS 个

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

在中使用加密 EBS 卷所需的 KMS 密钥策略 AWS 个

AWS PCS 使用服务相关角色将权限委托给其他 AWS 服务人。 AWS PCS 服务相关角色是预定义的,包括 AWS PCS 代表您呼叫其他 AWS 服务 人所需的权限。预定义的权限还包括对您的客户管理密钥的访问权限 AWS 托管式密钥 ,但不包括对您的客户管理密钥的访问权限。

本主题介绍当您为 Amazon EBS 加密指定客户管理的密钥时,如何设置启动实例所需的密钥策略。

注意

AWS PCS 不需要额外的授权即可使用默认设置 AWS 托管式密钥 来保护您账户中的加密卷。

概述

在 AWS PCS 启动实例时,您可以使用以下 AWS KMS keys 方法进行 Amazon EBS 加密:

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

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

    注意

    密钥必须是对称的。亚马逊 EBS 不支持非对称的客户管理密钥。

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

配置密钥策略

您的 KMS 密钥必须具有密钥策略,允许 AWS PCS 启动使用客户管理密钥加密的 Amazon EBS 卷的实例。

使用此页面上的示例配置密钥策略,以授予 AWS PCS 访问您的客户管理密钥的权限。您可以在创建密钥时修改客户管理密钥的密钥策略,也可以在以后修改该密钥的密钥策略。

密钥策略必须包含以下声明:

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

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

将新政策声明添加到密钥策略时,请勿更改策略中的任何现有声明。

有关更多信息,请参阅:

示例 1:允许访问客户托管密钥的关键策略部分

将以下政策声明添加到客户管理密钥的密钥策略中。将示例 ARN 替换为您的AWSServiceRoleForPCS服务相关角色的 ARN。此示例策略授予 AWS PCS 服务相关角色 (AWSServiceRoleForPCS) 使用客户管理密钥的权限。

{ "Sid": "Allow service-linked role use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:role/aws-service-role/pcs.amazonaws.com/AWSServiceRoleForPCS" ] }, "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/pcs.amazonaws.com/AWSServiceRoleForPCS" ] }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

示例 2:允许跨账户访问客户托管密钥的关键策略部分

如果您在与 AWS PCS 集群不同的账户中创建客户管理密钥,则必须将授权与密钥策略结合使用,以允许跨账户访问该密钥。

授予密钥访问权限
  1. 将以下政策声明添加到客户管理密钥的密钥策略中。将示例 ARN 替换为其他账户的 ARN。111122223333替换为要在其中创建 AWS PCS 集群的实际账户 ID。 AWS 账户 这将允许您向指定账户中的 IAM 用户或角色授予使用下面的 CLI 命令为密钥创建授权的权限。默认情况下,用户无权访问密钥。

    {. "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. 在您要创建 AWS PCS 集群的账户中,创建授权,将相关权限委托给 AWS PCS 服务相关角色。的值grantee-principal是服务相关角色的 ARN。的值key-id是密钥的 ARN。

    以下示例 create-grant CLI 命令为账户AWSServiceRoleForPCS中命名的服务相关角色提供了在账户中使用客户管理密钥的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/pcs.amazonaws.com/AWSServiceRoleForPCS \ --operations "Encrypt" "Decrypt" "ReEncryptFrom" "ReEncryptTo" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "DescribeKey" "CreateGrant"
    注意

    提出请求的用户必须具有使用该kms:CreateGrant操作的权限。

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

    JSON
    { "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" } ] }

    有关为不同 AWS 账户中的 KMS 密钥创建授权的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的 AWS KMS中的授权。

    重要

    指定为被授权者委托人的服务相关角色名称必须是现有角色的名称。创建授权后,为确保授予允许 AWS PCS 使用指定的 KMS 密钥,请勿删除并重新创建服务相关角色。

在中编辑密钥策略 AWS KMS 控制台

之前部分中的示例仅显示如何向密钥策略添加语句,这只是更改密钥策略的一种方法。更改密钥策略的最简单方法是使用 AWS KMS 控制台的默认密钥策略视图,并将 IAM 身份(用户或角色)设为相应密钥策略的关键用户之一。有关更多信息,请参阅《AWS Key Management Service 开发者指南》中的使用 AWS 管理控制台 默认视图。

警告

控制台的默认视图策略声明包括对客户管理的密钥执行 AWS KMS Revoke操作的权限。如果您撤销授予您账户中客户管理密钥 AWS 账户 访问权限的授权,则该授权中的用户将 AWS 账户 失去对加密数据和密钥的访问权限。