AWS Key Management Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

限制

AWS KMS 资源具有限制,这些限制适用于每个区域和每个 AWS 账户。有一些限制适用于所有资源。其他限制仅适用于您创建的资源,而不适用于 AWS 服务在您的账户中创建的资源。您使用的但未在您的 AWS 账户中的资源(如 AWS 拥有的 CMK)不计入这些限制。

重要

如果需要超出这些限制,请访问 AWS Support 中心并创建案例。

资源 默认限制 适用对象
客户主密钥 (CMK) 10000 客户托管 CMK
别名 10000 客户创建的别名
每个 CMK 的授权数 10000 客户托管 CMK
每个 CMK 的指定委托人授权数 500

客户托管 CMK

AWS 托管 CMK

密钥策略文档大小 32 KB(32,768 字节)

客户托管 CMK

AWS 托管 CMK

每秒请求数 因 API 操作而异;具体参见

客户托管 CMK

AWS 托管 CMK

注意

如果超出每秒请求次数限制,请考虑使用 AWS 加密 SDK 中的数据密钥缓存功能。重复使用数据密钥,而不是为每一次加密操作请求新的数据密钥,可降低向 AWS KMS 发出请求的频率。

客户主密钥 (CMK):10000

在您的 AWS 账户的每个区域中,您最多可以拥有 10000 个客户托管 CMK。此限制适用于所有客户托管 CMK,无论其密钥状态如何。AWS 托管 CMKAWS 拥有的 CMK 不计入此限制。

您可以创建支持案例来在区域中请求更多的 CMK。不过,从 AWS 管理控制台中管理大量 CMK 的速度可能低于可接受范围。如果您在区域中拥有大量 CMK,我们建议您使用 AWS 开发工具包AWS 命令行工具以编程方式管理它们。

别名:10000

您可以在您账户的每个区域中创建最多 10000 个别名。AWS 在您的账户中创建的别名(如 aws/<service-name>)不计入此限制内。

别名 是您可映射到 CMK 的显示名称。每个别名均准确映射到一个 CMK,而且多个别名可映射到同一 CMK。

如果您使用支持案例提高 CMK 上限,您可能还需要请求增加别名的数量。

每个 CMK 的授权数:10000

每个客户托管 CMK 可以拥有最多 10000 个授权,其中包括与 AWS KMS 集成的 AWS 服务所创建的授权。该限制不适用于 AWS 托管 CMK

此限制的作用之一是,您创建的使用相同 CMK 的资源不能超过 10000 个。例如,您创建的使用相同 CMK 的加密 EBS 卷不能超过 10000 个。

授权密钥策略的替代方案。它们是用于指定权限的高级机制。

您或与 AWS KMS 集成的 AWS 服务可以使用授权来限制被授权者可以使用 CMK 的方式和时间。授权将附加到 CMK。每个授权都包含一位委托人,此委托人可获得使用 CMK、CMK 的 ID 和被授权者可执行的操作列表的权限。

每个 CMK 的给定委托人授权数:500

对于给定的 CMK,不超过 500 个授权可以指定同一个被授权者委托人。此限制适用于所有 CMK,包括 AWS 托管 CMK

例如,您可能要加密多个 Amazon EBS 卷并将它们附加到单个 Amazon Elastic Compute Cloud (Amazon EC2) 实例。将为每个加密卷创建一个唯一授权,并且所有这些授权具有同一被授权者委托人(与 EC2 实例关联且担任角色的 IAM 用户)。每个授权都会授予权限,使用指定 CMK 解密 EBS 卷的唯一数据加密密钥。对于每个 CMK,您可以拥有多达 500 个授权,这些授权可指定同一 EC2 实例作为被授权者委托人。这实际上意味着,对于给定的 CMK,每个 EC2 实例可以拥有的加密 EBS 卷不超过 500 个。

密钥策略文档大小:32 KB

每个密钥策略文档的最大长度为 32 KB(32768 字节)。如果文档超过该长度,使用密钥策略文档设置或更改密钥策略的操作会失败。如果必须超过此限制,请创建一个支持案例

密钥策略文档是一个 JSON 格式的策略语句集合。密钥策略文档中的语句确定谁有权使用 CMK 以及如何使用它。您还可使用 IAM 策略和授权来控制对 CMK 的访问,但每个 CMK 必须有一个密钥策略文档。

您可以使用 AWS 管理控制台中的默认视图策略视图或者使用 PutKeyPolicy API 操作创建密钥策略文档。所有这些技术涉及基础密钥策略文档。

每秒请求数:因情况而异

AWS KMS 将以不同的限制条件限制 API 请求,具体取决于 API 操作。限制意味着由于请求超出每秒请求数的限制,AWS KMS 会拒绝其他有效的请求。如果请求受到限制,AWS KMS 将返回 ThrottlingException 错误。下表列出了每个 API 操作及 AWS KMS 限制该操作请求的临界点。

此限制适用于所有 CMK,包括 AWS 托管 CMK

注意

如果需要超出这些限制,请访问 AWS Support 中心并创建案例。

如果 GenerateDataKey API 操作超出每秒请求次数限制,请考虑使用 AWS 加密 SDK 中的数据密钥缓存功能。重复使用数据密钥可减少向 AWS KMS 提出请求的频率。

共享限制

下表第一行中的 API 操作共享每秒 5500(或 10000)个请求的限制。例如,对于每秒 5500 个请求的共享限制,当您每秒发出 3000 个 GenerateDataKey 请求和 1000 个 Decrypt 请求时,AWS KMS 不会限制您的请求。但是,当您每秒发出 5000 个 GenerateDataKey 请求和 1000 个 Encrypt 请求时,AWS KMS 将限制您的请求,因为对于具有共享限制的操作,您每秒发出的请求超过了 5500 个。

其余的 API 操作具有唯一的每秒请求数限制,这意味着限制不具有共享性。

代表您发出的 API 请求

您可以直接发出 API 请求,也可以使用集成的 AWS 服务代表您向 AWS KMS 发出 API 请求。该限制对两种类型的请求都适用。

例如,您可以使用借助 AWS KMS 的服务器端加密 (SSE-KMS),将数据存储在 Amazon S3 中。每次上传或下载使用 SSE-KMS 进行加密的 S3 对象时,Amazon S3 都会代表您向 AWS KMS 发出 GenerateDataKey(用于上传)或 Decrypt(用于下载)请求。这些请求将计入您的限制,因此,如果您使用 SSE-KMS 进行加密的 S3 对象超过每秒 5500(或 10000)个上传或下载的总数,AWS KMS 将限制这些请求。

跨账户请求

当一个 AWS 账户中的应用程序使用其他账户拥有的 CMK 时,这称为跨账户请求。对于跨账户请求,AWS KMS 会限制发出请求的帐户,而不是拥有 CMK 的账户。例如,您可能在账户 A 和 B 中拥有应用程序,而这两个账户共同使用账户 C 中的 CMK。在这种情况下,每秒请求数限制分别适用于账户 A 和 B,而不适用于账户 C。

自定义密钥存储限制

使用自定义密钥存储中的 CMK 的加密操作共享每个自定义密钥存储的每秒 1800 次操作的限制。但是,并非所有操作都同等地使用限制。GenerateDataKeyGenerateDataKeyWithoutPlaintextGenerateRandom 操作使用的每秒限制约为 EncryptDecryptReEncrypt 操作使用的每秒限制的 3 倍。

例如,如果您仅请求 EncryptDecrypt 操作,则每秒可执行约 1800 次操作。相反,如果您请求重复的 GenerateDataKey 操作,则性能可能更接近每秒 600 次操作。对于由大致相同数量的 GenerateDataKeyDecrypt 操作组成的应用程序模式,您可以预期每秒大约 1200 次操作。

与其他限制不同,您无法通过在 AWS 支持中心中创建案例来提高此限制。

注意

如果与自定义密钥存储关联的 AWS CloudHSM 正在处理大量命令(包括与自定义密钥存储不相关的命令),则您可能以低于预期速率的速率获得 AWS KMS ThrottlingException。如果发生此情况,请降低向 AWS KMS 发出请求的速率,减少不相关的负载或对自定义密钥存储使用专用 AWS CloudHSM 集群。

每个 AWS KMS API 操作的每秒请求数限制

API 操作 每秒请求数限制

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyWithoutPlaintext

GenerateRandom

ReEncrypt

5500(共享)

仅以下区域支持 10000(共享):
  • 美国东部(弗吉尼亚北部),us-east-1

  • 美国西部(俄勒冈),us-west-2

  • 欧洲(爱尔兰),eu-west-1

每个自定义密钥存储 1800 次(共享)。有关详细信息,请参阅 自定义密钥存储限制

CancelKeyDeletion 5
ConnectCustomKeyStore 5
CreateAlias 5
CreateCustomKeyStore 5
CreateGrant 50
CreateKey 5
DeleteAlias 5
DeleteCustomKeyStore 5
DeleteImportedKeyMaterial 5
DescribeCustomKeyStores 5
DescribeKey 30
DisableKey 5
DisableKeyRotation 5
DisconnectCustomKeyStore 5
EnableKey 5
EnableKeyRotation 5
GetKeyPolicy 30
GetKeyRotationStatus 30
GetParametersForImport 0.25(当每 4 秒的速率超过 1 时,AWS KMS 将限制请求)
ImportKeyMaterial 5
ListAliases 5
ListGrants 5
ListKeyPolicies 5
ListKeys 5
ListResourceTags 5
ListRetirableGrants 5
PutKeyPolicy 5
RetireGrant 15
RevokeGrant 15
ScheduleKeyDeletion 5
TagResource 5
UntagResource 5
UpdateAlias 5
UpdateCustomKeyStore 5
UpdateKeyDescription 5