中的多区域密钥 AWS KMS - AWS Key Management Service

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

中的多区域密钥 AWS KMS

AWS KMS 支持多区域密钥,这些密钥 AWS KMS keys 位于不同的 AWS 区域 位置,可以互换使用,就好像您在多个区域中使用相同的密钥一样。每组相关的多区域密钥都具有相同的密钥材料和密钥 ID,因此您可以将数据合二为一, AWS 区域 然后使用不同的密钥进行解密, AWS 区域 而无需重新加密或进行跨区域调用。 AWS KMS

与所有 KMS 密钥一样,多区域密钥永远不会处于 AWS KMS 未加密状态。您可以创建用于加密或签名的对称或非对称多区域密钥,创建用于生成和验证 HMAC 标签的 HMAC 多区域密钥,以及使用导入的密钥材料或生成的密钥材料创建多区域密钥。 AWS KMS 您必须独立管理每个多区域密钥,包括创建别名和标签、设置其密钥策略和授权以及有选择性地启用和禁用它们。您可以在可使用单区域密钥进行的所有加密操作中使用多区域密钥。

多区域密钥是一个灵活而强大的解决方案,适用于许多常见的数据安全场景。

灾难恢复

在备份和恢复架构中,即使发生中断,多区域密钥也允许您不间断地处理加密数据。 AWS 区域 备份区域中维护的数据可以在备份区域中解密,备份区域中新加密的数据可以在恢复该区域后在主区域中解密。

全球数据管理

在全球运营的企业需要将全球分布的数据一致地提供到各个 AWS 区域。您可以在数据所在的所有区域中创建多区域密钥,然后将密钥用作单区域密钥,而不会出现跨区域调用的延迟或在每个区域中使用不同密钥重新加密数据的成本。

分布式签名应用程序

需要跨区域签名功能的应用程序可以使用多区域非对称签名密钥以在不同的 AWS 区域一致、反复地生成同样的数字签名。

如果将证书链与单个全局信任存储 [对于单个根证书颁发机构(CA)] 及根 CA 签名的区域中间 CA 结合使用,则不需要多区域密钥。但是,如果您的系统不支持中间 CA(如应用程序签名),则可以使用多区域密钥来实现区域证书的一致性。

跨多个区域的双活应用程序

某些工作负载和应用程序可以跨越双活架构中的多个区域。对于这些应用程序,多区域密钥可以通过提供相同的密钥材料对可能跨区域边界移动的数据进行并发加密和解密操作来降低复杂性。

您可以将多区域密钥与客户端加密库结合使用,例如 AWS Encryption SDKDynamoDB 加密客户端Amazon S3 客户端加密。有关在 Amazon DynamoDB 全局表和 DynamoDB 加密客户端中使用多区域密钥的示例,请参阅安全博客中的使用多区域密钥在客户端加密全球数据 AWS KMS。 AWS

AWS 与之集成的 AWS KMS用于静态加密或数字签名的服务目前将多区域密钥视为单区域密钥。他们可能会重新包装或重新加密在区域之间移动的数据。例如,甚至是在复制受多区域密钥保护的对象时,Amazon S3 跨区域复制也会在目标区域的 KMS 密钥下解密和重新加密数据。

多区域键不是全局键。创建一个多区域主键,然后将其复制到您在 AWS 分区中选择的区域。然后单独管理每个区域中的多区域键。 AWS 也 AWS KMS 不会自动代表您创建多区域密钥或将多区域密钥复制到任何区域。 AWS 托管式密钥,即 AWS 服务在您的账户中为您创建的 KMS 密钥,始终是单区域密钥。

您不能将现有的单区域密钥转换为多区域密钥。此设计可确保使用现有单区域密钥保护的所有数据都保持相同的数据驻留和数据主权属性。

对于大多数数据安全需求,区域资源的区域隔离和容错能力使标准的 AWS KMS 单区域密钥成为最合适的解决方案。但是,当您需要跨多个区域加密或对客户端应用程序中的数据进行签名时,多区域密钥可能是解决方案。

区域

除中国(北京)和中国(宁夏)外 AWS 区域 ,所有支持的地区都 AWS KMS 支持多区域密钥。

定价和配额

一组相关的多区域密钥中的每个密钥都被视为一个 KMS 密钥,用于定价和配额。AWS KMS 配额是针对账户的每个区域单独计算的。每个区域中的多区域密钥的使用和管理将计入该区域的配额。

支持的 KMS 密钥类型

您可以创建以下类型的多区域 KMS 密钥:

  • 对称加密 KMS 密钥

  • 非对称 KMS 密钥

  • HMAC KMS 密钥

  • 具有导入密钥材料的 KMS 密钥

您不能在自定义密钥存储中创建多区域密钥。

多区域密钥的安全注意事项

仅在需要 AWS KMS 多区域密钥时才使用多区域密钥。多区域密钥为工作负载提供灵活且可扩展的解决方案,这些工作负载可在 AWS 区域 之间移动加密数据或需要跨区域访问。如果您必须跨区域共享、移动或备份受保护的数据,或者需要为在不同区域运行的应用程序创建相同的数字签名,请考虑使用多区域密钥。

但是,创建多区域密钥的过程会跨 AWS KMS内的 AWS 区域 边界移动您的密钥材料。由多区域密钥生成的密文可能会由多个地理位置的多个相关密钥进行解密。对于区域隔离的服务和资源也有很大的益处。每个 AWS 区域 都是隔离的,独立于其他区域。区域提供容错能力、稳定性和弹性,还可以减少延迟。它们使您能够创建保持可用且不受其他区域中断影响的冗余资源。在中 AWS KMS,它们还确保每个密文只能用一个密钥解密。

多区域密钥还会引发新的安全注意事项:

  • 使用多区域密钥,控制访问和强制执行数据安全策略变得更加复杂。您需要确保在多个隔离区域的密钥上对策略进行一致的审计。您需要使用策略来强制实施边界,而不是依赖单独的密钥。

    例如,您需要对数据设置策略条件,以防止一个区域的薪酬团队能够读取另一个区域的工资单数据。此外,您还必须使用访问控制来防止一个区域中的多区域密钥保护一个租户的数据,而另一个区域中的相关多区域密钥保护另一个租户的数据的情况。

  • 跨区域审计密钥也更为复杂。使用多区域密钥,您需要检查和协调多个区域的审计活动,以便全面了解受保护数据的关键活动。

  • 遵守数据驻留要求可能会变得更加复杂。使用隔离的区域,您可以确保数据驻留和数据主权合规性。给定区域中的 KMS 密钥只能解密该区域中的敏感数据。在一个区域中加密的数据可以保持完全保护,并且在任何其他区域都无法访问。

    要使用多区域密钥验证数据驻留和数据主权,您需要实施访问策略并跨多个区域编译 AWS CloudTrail 事件。

为了便于您管理多区域密钥的访问控制,复制多区域密钥 (k ms: ReplicateKey) 的权限与创建密钥的标准权限 (k ms: CreateKey) 是分开的。此外,还 AWS KMS 支持多区域密钥的多种政策条件kms:MultiRegion,包括允许或拒绝创建、使用或管理多区域密钥的权限kms:ReplicaRegion,以及限制可以将多区域密钥复制到的区域。有关更多信息,请参阅 控制对多区域密钥的访问

多区域密钥的工作原理

首先,您要在 AWS KMS 支持的(例如美国东部(弗吉尼亚北部)中创建 AWS 区域 对称或非对称的多区域主键。只有在创建密钥时,才能决定密钥是单区域还是多区域;以后不能更改此属性。与任何 KMS 密钥一样,您可以为多区域密钥设置密钥策略,并且可以创建授权,并添加别名和标签以进行分类和授权。(这些是独立属性,不与其他密钥共享或同步。) 您可以在加密操作中使用多区域主键进行加密或签名。

您可以在 AWS KMS 控制台中创建多区域主密钥,也可以使用MultiRegion参数设置为的 CreateKeyAPI 来true创建多区域主密钥。请注意,多区域密钥具有一个以 mrk- 开头的独特密钥 ID。您可以使用 mrk- 前缀以编程方式识别 MRK。

如果您愿意,可以将多区域主键复制到同一AWS 分区 AWS 区域 中的一个或多个不同的分区,例如欧洲(爱尔兰)。完成后,在指定区域 AWS KMS 创建与主键相同的密钥 ID 和其他共享属性的副本密钥。然后,它将密钥材料安全地跨区域边界传输,并将其与目标区域中的新 KMS 密钥相关联,一切都在 AWS KMS中进行。结果会产生两个相关的多区域密钥(主键和副本密钥),它们可以互换使用。

您可以在 AWS KMS 控制台中或使用 ReplicateKeyAPI 创建多区域副本密钥

由此产生的多区域副本密钥是一个功能齐全的 KMS 密钥,具有与主键相同的共享属性。在所有其他方面,它是一个独立的 KMS 密钥,具有自己的说明、密钥策略、授权、别名和标签。启用或禁用多区域密钥对相关的多区域密钥没有影响。您可以在加密操作中独立使用主密钥和副本密钥,也可以协调它们的使用。例如,您可以使用美国东部(弗吉尼亚北部)区域的主键对数据进行加密,将数据移动到欧洲(爱尔兰)区域,然后使用副本密钥解密数据。

相关的多区域密钥具有相同的密钥 ID。它们的密钥 ARN(Amazon Resource Name)仅在 Region(区域)字段中有所不同。例如,多区域主键和副本密钥可能具有以下示例密钥 ARN。密钥 ID(密钥 ARN 中的最后一个元素)是相同的。两个密钥都具有多区域密钥的独特密钥 ID,该 ID 以 mrk- 开头。

Primary key: arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef12345678990ab Replica key: arn:aws:kms:eu-west-1:111122223333:key/mrk-1234abcd12ab34cd56ef12345678990ab

为了实现互操作性,需要具有相同的密钥 ID。加密时,将 KM AWS KMS S 密钥的密钥 ID 绑定到密文,因此只能使用该 KMS 密钥或具有相同密钥 ID 的 KMS 密钥来解密密文。此功能还使相关的多区域密钥易于识别,并且可以更轻松地互换使用它们。例如,在应用程序中使用它们时,您可以通过它们的共享密钥 ID 来引用相关的多区域密钥。然后,在必要时,指定区域或 ARN 以区分它们。

随着数据需求的变化,您可以将主键复制到同一分区 AWS 区域 中的其他分区,例如美国西部(俄勒冈)和亚太地区(悉尼)。结果会产生四个具有相同的密材料和密钥 ID 的相关多区域密钥,如下图所示。您可以独立管理密钥。您可以独立使用它们,也可以以协调的方式使用它们。例如,您可以在亚太地区(悉尼)区域使用副本密钥对数据进行加密,将数据移动到美国西部(俄勒冈)区域,然后在美国西部(俄勒冈)区域使用副本密钥对其进行解密。

多区域密钥中的主密钥和副本密钥

多区域密钥的其他注意事项包括以下内容。

同步共享属性 -如果多区域密钥的共享属性发生变化,则 AWS KMS 会自动同步从主键到其所有副本密钥的更改。您不能请求或强制同步共享属性。 AWS KMS 为您检测并同步所有更改。但是,您可以使用 CloudTrail 日志中的SynchronizeMultiRegionKey事件来审核同步。

例如,如果您在对称的多区域主密钥上启用自动密钥轮换,则会将该设置 AWS KMS 复制到其所有副本密钥中。轮换密钥材料时,轮换将在所有相关的多区域密钥之间同步,因此它们继续具有相同的当前密钥材料,并可访问所有旧版本的密钥材料。如果创建新的副本密钥,则该密钥具有与所有相关多区域密钥相同的当前密钥材料,并可访问密钥材料的所有以前版本。有关更多信息,请参阅 轮换多区域密钥

更改主键 — 每组多区域密钥必须只有一个主键。主键是唯一可以复制的密钥。它也是其副本密钥的共享属性的来源。但是,您可以将主键更改为副本密钥,并将其中一个副本密钥提升为主键。您可以执行此操作,以便从特定区域删除多区域主键,或将主键定位在离项目管理员更近的区域中。有关更多信息,请参阅 更新主区域

删除多区域密钥-与所有 KMS 密钥一样,您必须计划删除多区域密钥,然后再 AWS KMS 将其删除。密钥处于待删除状态时,您无法在任何加密操作中使用它。但是,在删除多区域主键的所有副本密钥之前, AWS KMS 不会将其删除。有关更多信息,请参阅 删除多区域密钥

概念

以下术语和概念用于多区域密钥。

多区域密钥

多区域密钥是不同 AWS 区域中具有相同的密钥 ID 和密钥材料(以及其他共享属性)的一组 KMS 密钥之一。每个多区域密钥都是一个功能齐全的 KMS 密钥,可以完全独立于其相关的多区域密钥使用。由于所有相关的多区域密钥都具有相同的密钥 ID 和密钥材料,因此它们具有互操作性,也就是说,任何密钥中的任何相关多区域密钥 AWS 区域 都可以解密由任何其他相关多区域密钥加密的密文。

您可以在创建 KMS 密钥时设置其多区域属性。您不能更改现有密钥的多区域属性。您不能将单区域密钥转换为多区域密钥,或将多区域密钥转换为单区域密钥。要将现有工作负载移动到多区域方案中,您必须重新加密数据或使用新的多区域密钥创建新的签名。

多区域密钥可以是对称的,也可以是非对称的,它可以使用 AWS KMS 密钥材料或导入的密钥材料。您不能在自定义密钥存储中创建多区域密钥。

在一组相关的多区域密钥中,任何时候都只有一个主键。您可以在其他 AWS 区域中创建该主键的副本密钥。您还可以更新主区域,从而将主键更改为副本密钥,并将指定的副本密钥更改为主键。但是,每个主键或副本密钥中只能保留一个主键或副本密钥 AWS 区域。所有区域都必须位于同一个 AWS 分区

您可以在相同或不同的 AWS 区域中拥有多组相关多区域密钥。尽管相关的多区域密钥是可互操作的,但不相关的多区域密钥不可互操作。

主键

多区域主密钥是一个 KMS 密钥,可以复制到同一分区 AWS 区域 中的其他密钥。每组多区域密钥只有一个主键。

主键与副本密钥的区别在以下几方面:

不过,主密钥和副本密钥在任何加密属性中都没有区别。您可以互换使用主键及其副本密钥。

您不需要复制主键。您可以像使用任何 KMS 密钥一样使用它,并在有用时复制它。但是,由于多区域密钥与单区域密钥具有不同的安全属性,因此我们建议您仅在计划复制多区域密钥时才创建多区域密钥。

副本密钥

多区域副本密钥是一个 KMS 密钥,它具有与其主键和相关副本密钥相同的密钥 ID密钥材料,但位于不同的 AWS 区域中。

副本密钥是功能齐全的 KMS 密钥,具有其自己的密钥策略、授权、别名、标签和其他属性。它不是主键或任何其他密钥的副本或指针。即使某个副本密钥的主键及所有相关的副本密钥都被禁用,您也可以使用该副本密钥。您还可以将副本密钥转换为主键,将主键转换为副本密钥。副本密钥被创建后,仅依赖于其主键进行密钥轮换更新主区域

主密钥和副本密钥在任何加密属性中都没有区别。您可以互换使用主键及其副本密钥。通过主密钥或副本密钥加密的数据可以通过相同的密钥或任何相关的主密钥或副本密钥进行解密。

复制

您可以将多区域主键复制到同一分区 AWS 区域 中的其他主键中。完成后,在指定区域 AWS KMS 创建多区域副本密钥,其密钥 ID 和其他共享属性与其主键相同。然后,它将密钥材料安全地跨区域边界传输,并将其与新的副本密钥相关联,一切都在 AWS KMS中进行。

共享属性

共享属性是与其副本密钥共享的多区域主键的属性。 AWS KMS 使用与主键相同的共享属性值创建副本密钥。然后,它会定期将主键的共享属性值与其副本密钥同步。您不能在副本密钥上设置这些属性。

以下是多区域密钥的共享属性。

您还可以将相关多区域密钥的主名称和副本名称视为共享属性。当您创建新的副本密钥更新主密钥时,会将更改 AWS KMS 同步到所有相关的多区域密钥。完成这些更改后,所有相关的多区域密钥都会准确列出其主键和副本密钥。

多区域密钥的所有其他属性都是独立属性,包括说明、密钥策略授权启用和禁用的密钥状态别名标签。您可以在所有相关的多区域密钥上为这些属性设置相同的值,但如果更改独立属性的值, AWS KMS 不会同步它。

您可以跟踪多区域密钥的共享属性的同步情况。在您的 AWS CloudTrail 日志中,查找该SynchronizeMultiRegionKey事件。