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

AWS KMS 中的多区域密钥

AWS KMS 支持多区域密钥,它们不同 AWS 区域 中可以互换使用的 AWS KMS keys,就好像您在多个区域中拥有相同的密钥一样。每组相关多区域密钥均具有相同的密钥材料密钥 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 安全博客中的使用 AWS KMS 多区域密钥在客户端侧加密全局数据

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

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

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

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

区域

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

定价和配额

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

支持的 KMS 密钥类型

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

  • 对称加密 KMS 密钥

  • 非对称 KMS 密钥

  • HMAC KMS 密钥

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

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

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

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

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

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

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

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

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

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

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

为了使您能够更轻松地管理多区域密钥的访问控制,复制多区域密钥的权限 (kms:ReplicateKey) 独立于创建密钥的标准权限 (kms:CreateKey)。另外,AWS KMS 支持多区域密钥的多个策略条件,包括 kms:MultiRegion,该条件允许或拒绝创建、使用或管理多区域密钥和 kms:ReplicaRegion 的权限,从而限制了多区域密钥可以复制到的区域。有关详细信息,请参阅控制对多区域密钥的访问

多区域密钥的工作原理

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

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

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

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

由此产生的多区域副本密钥是一个功能齐全的 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。加密时,AWS KMS 将 KMS 密钥的密钥 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 事件。