本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS KMS keys
您为在自己的加密应用程序中使用而创建和管理的 KMS 密钥属于客户托管密钥类型。客户托管密钥也可以与 AWS 使用 KMS 密钥的结合使用,用于加密服务代表您存储的数据。对于想要完全控制密钥生命周期和使用情况的客户,建议使用客户托管密钥。账户中拥有客户托管密钥将按月收费。此外,使用和/或管理密钥的请求也会产生使用成本。有关更多详细信息,请参阅 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 托管式密钥是由与集成的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 托管式密钥 从每三年(约 1095 天) 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 密钥,并设置 KMS 密钥的策略,如同任何其他 AWS 命名资源一样。
在特定 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 是别名的 Amazon Resource Name (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 Simple Storage Service (Amazon S3) 的的别名如下。 AWS 托管式密钥alias/aws/s3