本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS KMS keys
您为在自己的加密应用程序中使用而创建和管理的 KMS 密钥属于客户托管密钥类型。客户托管密钥也可以与使用 KMS 密钥对 AWS 服务代表您存储的数据进行加密的服务结合使用。对于想要完全控制密钥生命周期和使用情况的客户,建议使用客户托管密钥。账户中拥有客户托管密钥将按月收费。此外,使用和/或管理密钥的请求也会产生使用成本。有关更多详细信息,请参阅 AWS Key Management Service 定价
在某些情况下,客户可能想要一项 AWS 服务来加密其数据,但他们不想承担管理密钥的开销,也不想为密钥付费。AWS 托管式密钥是您账户中存在的 KMS 密钥,但只能在某些情况下使用。具体而言,它只能在您运营的 AWS 服务环境中使用,并且只能由密钥存在的账户中的委托人使用。您无法对这些密钥的生命周期或权限进行任何管理。当您在 AWS 服务中使用加密功能时,您可能会看到 AWS 托管式密钥;它们使用的是 “aws<service code>” 形式的别名。例如,aws/ebs
密钥只能用于加密 EBS 卷,并且只能用于与密钥位于同一账户中的 IAM 主体使用的卷。想想 AWS 托管式密钥 一个范围缩小到只有你账户中的用户才能使用你账户中的资源的。您不能 AWS 托管式密钥 与其他账户共享在和下加密的资源。虽然您的账户中可以免费存在,但分配给该密钥的 AWS 服务会向您收取任何使用此类密钥的费用。 AWS 托管式密钥
AWS 托管式密钥 是一种传统密钥类型,自 2021 年起不再为新 AWS 服务创建。取而代之的是,新(和旧) AWS 服务默认使用所谓的加密客户数据。AWS 拥有的密钥 AWS 拥有的密钥 是 KMS 密钥,位于 AWS 服务管理的账户中,因此服务运营商可以管理其生命周期和使用权限。通过使用 AWS 拥有的密钥, AWS 服务可以透明地加密您的数据,并允许轻松地跨账户或跨区域共享数据,而无需担心密钥权限。 AWS 拥有的密钥 用于提供更轻松、自动化程度更高的数据保护 encryption-by-default的工作负载。由于这些密钥由所有和管理 AWS,因此您无需为其存在或使用付费,也无法更改其策略,无法审计这些密钥上的活动,也无法删除它们。在重视控制时使用客户托管密钥,在最重视便利性时使用 AWS 拥有的密钥 。
客户托管密钥 | AWS 托管式密钥 | AWS 拥有的密钥 | |
密钥策略 | 完全由客户控制 | 由服务控制;客户可以查看 | 独家控制,只能由加密 AWS 数据的服务查看 |
日志记录 | CloudTrail 客户跟踪或事件数据存储 | CloudTrail 客户跟踪或事件数据存储 | 客户无法查看 |
生命周期管理 | 客户管理轮换、删除和区域位置 | AWS KMS 管理轮换(每年)、删除和区域位置 | AWS 服务 管理轮换、删除和区域位置 |
定价 |
密钥存在需收取月度费用(按小时 计费)。此外还需收取密钥使用费 |
不收取月度费用;但调用者需要支付使用这些密钥的 API 费用 | 不向客户收费 |
您创建的 KMS 密钥是客户托管式密钥。使用 KMS 密钥加密服务资源的 AWS 服务 通常会为您创建密钥。在您的 AWS 账户中 AWS 服务 创建的 KMS 密钥是AWS 托管式密钥。在服务账户中 AWS 服务 创建的 KMS 密钥是AWS 拥有的密钥。
AWS 与之集成的服务对 KMS 密钥的支持各不 AWS KMS相同。某些 AWS 服务默认使用 AWS 拥有的密钥 或加密您的数据 AWS 托管式密钥。某些 AWS 服务支持客户管理的密钥。其他 AWS 服务支持所有类型的 KMS 密钥 AWS 拥有的密钥,使您可以轻松获取 AWS 托管式密钥、查看或控制客户托管的密钥。有关 AWS 服务提供的加密选项的详细信息,请参阅该服务的用户指南或开发人员指南中的静态加密主题。
客户托管密钥
您创建的 KMS 密钥是客户托管式密钥。客户托管密钥是您 AWS 账户 自己创建、拥有和管理的 KMS 密钥。您可以完全控制这些 KMS 密钥,包括建立和维护其密钥策略、IAM policy 和授权、启用和禁用它们、轮换其加密材料、添加标签、创建别名(引用了 KMS 密钥)以及计划删除 KMS 密钥。
客户托管密钥显示在 AWS KMS的 AWS Management Console
的 Customer managed keys(客户托管密钥)页面上。要明确地标识客户托管密钥,请使用 DescribeKey 操作。对于客户托管密钥,DescribeKey
响应的 KeyManager
字段的值为 CUSTOMER
。
您可以在加密操作中使用客户托管密钥并在 AWS CloudTrail 日志中审核其使用情况。此外,许多与 AWS KMS集成的AWS 服务使您能够指定客户托管密钥以保护为您存储和管理的数据。
客户托管密钥会产生月费以及超过免费套餐使用量的费用。它们将计入您账户的 AWS KMS 配额。有关详细信息,请参阅 AWS Key Management Service 定价
AWS 托管式密钥
AWS 托管式密钥是您账户中的 KMS 密钥,由与集成的AWS 服务
有些 AWS 服务允许您选择一个 AWS 托管式密钥 或一个客户托管的密钥来保护您在该服务中的资源。通常,除非要求您控制保护资源的加密密钥,否则 AWS 托管式密钥 不妨选择。您不必创建或维护密钥或密钥策略,并且永远不会产生 AWS 托管式密钥月度费用。
您有权 AWS 托管式密钥在您的账户中查看、查看其密钥策略并审核其在 AWS CloudTrail 日志中的使用情况。但是,您不能更改其任何属性 AWS 托管式密钥、轮换它们、更改其密钥策略或安排将其删除。而且,您不能直接 AWS 托管式密钥 在加密操作中使用;创建加密操作的服务会代表您使用它们。
您组织中的@@ 资源控制政策不适用于 AWS 托管式密钥。
AWS 托管式密钥 显示在 fo AWS 托管式密钥r AWS Management Console 的页面上 AWS KMS。您也可以 AWS 托管式密钥 通过别名进行识别,其格式为 aws/
service-name
aws/redshift
,例如。要明确识别 AWS 托管式密钥,请使用DescribeKey操作。对于 AWS 托管式密钥,DescribeKey
响应的 KeyManager
字段的值为 AWS
。
所有这些 AWS 托管式密钥 都是每年自动轮换的。您不能更改此轮换计划。
注意
2022年5月,将轮换时间表 AWS 托管式密钥 从每三年(约1,095天) AWS KMS 改为每年(约365天)。
新 AWS 托管式密钥 版本在创建一年后自动轮换,此后大约每年轮换一次。
现有 AWS 托管式密钥 人员在最近一次轮换一年后自动轮换,此后每年轮换。
不收取月费 AWS 托管式密钥. 超出免费套餐的使用可能会收取费用,但有些 AWS 服务会为您支付这些费用。有关详细信息,请参阅服务的用户指南或开发人员指南中的静态加密主题。有关详细信息,请参阅 AWS Key Management Service
定价
AWS 托管式密钥 不要计入您账户中每个区域的 KMS 密钥数量的资源配额。但是,当代表您账户中的委托人使用这些 KMS 密钥时,它们将计入请求配额。有关详细信息,请参阅限额。
AWS 拥有的密钥
AWS 拥有的密钥是 AWS 服务拥有和管理的 KMS 密钥的集合,用于多个密钥 AWS 账户。尽管 AWS 拥有的密钥 不在您的账户中 AWS 账户,但 AWS 服务可以使用 AWS 拥有的密钥 来保护您账户中的资源。
某些 AWS 服务允许您选择 AWS 拥有的密钥 或客户管理的密钥。通常,除非要求您审核或控制保护资源的加密密钥, AWS 拥有的密钥 否则不妨选择。 AWS 拥有的密钥 完全免费(没有月费或使用费),它们不计入您账户的AWS KMS 配额,而且易于使用。您不必创建或维护该密钥或其密钥策略。
的轮换因服务 AWS 拥有的密钥 而异。有关特定项轮换的信息 AWS 拥有的密钥,请参阅该服务的用户指南或开发者指南中的静态加密主题。
AWS KMS key 等级制度
您的密钥层次结构从顶级逻辑密钥开始,即 AWS KMS key。KMS 密钥表示顶级密钥材料的容器,在 AWS 服务命名空间中使用 Amazon Resource Name (ARN) 进行唯一定义。ARN 包含唯一生成的密钥标识符,即密钥 ID。KMS 密钥是根据用户通过 AWS KMS发起的请求创建的。收到后, AWS KMS 请求创建初始 HSM 支持密钥 (HBK),将其放入 KMS 密钥容器中。HBK 在域中的 HSM 上生成,并且设计为永远不会以明文形式从 HSM 导出。相反地,HBK 在 HSM 管理的域密钥下以加密形式导出。 HBKs 这些导出的密钥令牌称为导出的密钥令牌 (EKTs)。
EKT 将导出到高持久性、低延迟的存储中。例如,假设您收到逻辑 KMS 密钥的 ARN。这表示您的密钥层次结构或加密上下文的顶部。您可以在自己的账户中创建多个 KMS 密钥,并像任何其他 AWS 命名资源一样对 KMS 密钥设置策略。
在特定 KMS 密钥的层次结构中,可以将 HBK 视为 KMS 密钥的一个版本。当您想要轮换 KMS 密钥时 AWS KMS,会创建一个新的 HBK,并将其与 KMS 密钥关联为 KMS 密钥的主动 HBK。较旧 HBKs 的数据会被保留,可用于解密和验证以前受保护的数据。但只有活动的加密密钥才能用于保护新信息。

您可以通过 AWS KMS 请求使用您的 KMS 密钥直接保护信息,或者请求受您的 KMS 密钥保护的其他由 HSM 生成的密钥。这些密钥称为客户数据密钥,或 CDKs。 CDKs 可以加密后返回为密文 (CT)、纯文本或两者兼而有之。使用 KMS 密钥加密的所有对象(客户提供的数据或 HSM 生成的密钥)只能通过调用在 HSM 上进行解密。 AWS KMS
返回的密文或解密后的有效载荷永远不会存储在其中。 AWS KMS该信息通过与 AWS KMS的 TLS 连接返回给您。这也适用于 AWS 服务部门代表您拨打的电话。
密钥层次结构和特定密钥属性如下表中所示。
键 | 描述 | 生命周期 |
---|---|---|
域密钥 |
仅在 HSM 内存中的 256 位 AES-GCM 密钥,用于包装 KMS 密钥(HSM 备用密钥)的版本。 |
每天轮换1 |
HSM 备用密钥 |
256 位对称密钥或者 RSA 或椭圆曲线私有密钥,用于保护客户数据和密钥,在域密钥下加密存储。。一个或多个 HSM 备用密钥组成 KMS 密钥(通过 keyId 表示)。 |
每年轮换2(可选配置) |
派生加密密钥 |
仅在 HSM 内存中的 256 位 AES-GCM 密钥,用于加密客户数据和密钥。从每个加密的 HBK 派生。 |
每次加密时使用一次,并在解密时重新生成 |
客户数据密钥 |
以明文和密文形式从 HSM 导出的、用户定义的对称或非对称密钥。 在 HSM 备用密钥下加密,然后通过 TLS 通道返回给授权用户。 |
轮换和使用由应用程序控制 |
1 AWS KMS 可能会不时地将域密钥轮换放宽到最多每周一次,以处理域管理和配置任务。
2 由您代您 AWS 托管式密钥 创建和管理 AWS KMS 的默认值每年自动轮换。
密钥标识符 (KeyId)
密钥标识符用作 KMS 密钥的名称。它们可帮助您在控制台中识别 KMS 密钥。您可以使用它们来指示要在 AWS KMS API 操作、密钥策略、IAM policy 和授权中使用的 KMS 密钥。密钥标识符值跟与 KMS 密钥关联的密钥材料完全无关。
AWS KMS 定义了几个密钥标识符。创建 KMS 密钥时, AWS KMS 会生成密钥 ARN 和密钥 ID,它们是 KMS 密钥的属性。创建别名时, AWS KMS 会根据您定义的别名生成别名 ARN。您可以在和的 AWS KMS API 中查看密钥 AWS Management Console 和别名标识符。
在 AWS KMS 控制台中,您可以按密钥 ARN、密钥 ID 或别名查看和筛选 KMS 密钥,并按密钥 ID 和别名进行排序。有关在控制台中查找密钥标识符的帮助,请参阅查找密钥 ID 和密钥 ARN。
在 AWS KMS API 中,用于标识 KMS 密钥的参数被命名KeyId
或变体,例如TargetKeyId
或DestinationKeyId
。但是,这些参数的值并不仅限于 key IDs。一些参数可以使用任意有效的密钥标识符。有关每个参数的值的信息,请参阅《 AWS Key Management Service API 参考》中的参数描述。
注意
使用 AWS KMS API 时,请注意您使用的密钥标识符。不同 APIs 需要不同的密钥标识符。通常,请在您的任务中使用最完整实用的密钥标识符。
AWS KMS 支持以下密钥标识符。
- 密钥 ARN
-
密钥 ARN 是 KMS 密钥的 Amazon Resource Name (ARN)。它是 KMS 密钥唯一的完全限定标识符。密钥 ARN 包括 AWS 账户、区域和密钥 ID。有关查找 KMS 密钥的密钥 ARN 的帮助,请参阅 查找密钥 ID 和密钥 ARN。
密钥 ARN 的格式如下:
arn:
<partition>
:kms:<region>
:<account-id>
:key/<key-id>
以下是单区域 KMS 密钥的示例密钥 ARN。
arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
多区域密钥 ARNs 的密钥key-id元素以
mrk-
前缀开头。以下是多区域密钥的示例密钥 ARN。arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab
- 密钥 ID
-
密钥 ID 唯一地标识账户和区域中的 KMS 密钥。有关查找 KMS 密钥的密钥 ID 的帮助,请参阅 查找密钥 ID 和密钥 ARN。
以下是单区域 KMS 密钥的示例密钥 ID。
1234abcd-12ab-34cd-56ef-1234567890ab
多区域密钥 IDs 的密钥以
mrk-
前缀开头。以下是多区域密钥的示例密钥 ID。mrk-1234abcd12ab34cd56ef1234567890ab
- 别名 ARN
-
别名 ARN 是别名的亚马逊资源名称 (ARN)。 AWS KMS 它是别名及所表示 KMS 密钥的唯一的完全限定标识符。别名 ARN 包括 AWS 账户、地区和别名。
在任何给定时间,一个别名 ARN 标识一个特定的 KMS 密钥。但是,由于您可以更改与别名关联的 KMS 密钥,别名 ARN 在不同时间可以标识不同的 KMS 密钥。有关查找 KMS 密钥的别名 ARN 的帮助,请参阅 查找 KMS 密钥的别名和别名 ARN。
别名 ARN 的格式如下:
arn:
<partition>
:kms:<region>
:<account-id>
:alias/<alias-name>
以下是虚构的
ExampleAlias
的别名 ARN。arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias
- 别名
-
别名是最多 256 个字符的字符串。它唯一地标识某个账户和区域内关联的一个 KMS 密钥。在 AWS KMS API 中,别名始终以开头
alias/
。有关查找 KMS 密钥的别名的帮助,请参阅 查找 KMS 密钥的别名和别名 ARN。别名的格式如下:
alias/
<alias-name>
例如:
alias/ExampleAlias
别名的
aws/
前缀保留用于 AWS 托管式密钥。您无法使用此前缀创建别名。例如,亚马逊简单存储服务 (Amazon S3) 的别名如下所示。 AWS 托管式密钥alias/aws/s3