补助金 AWS KMS - AWS Key Management Service

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

补助金 AWS KMS

补助金是一种政策工具,它允许 AWS 委托人在加密操作中使用KMS密钥。它还可以让他们查看KMS密钥 (DescribeKey) 以及创建和管理授权。在授权访问KMS密钥时,会将授权与关键策略和IAM策略一起考虑。授予通常用于临时权限,因为您可以在不更改密钥策略或IAM策略的情况下创建临时权限、使用其权限并删除它。

补助金通常用于 AWS 与之集成的服务 AWS KMS 对您的静态数据进行加密。该服务代表账户中的用户创建授权,使用其权限,并在其任务完成后立即停用授权。有关操作方法的详细信息 AWS 服务,使用授权,参见服务用户指南AWS 服务如何使用 AWS KMS或开发者指南中的静态加密主题。

关于授权

授权是一种非常灵活且有用的访问控制机制。当您为KMS密钥创建授权时,该授权允许被授权者委托人对KMS密钥调用指定的授予操作,前提是满足授权中指定的所有条件。

  • 每项授权只允许访问一个KMS密钥。你可以为不同的KMS密钥创建授权 AWS 账户.

  • 授权可以允许访问KMS密钥,但不能拒绝访问。

  • 每个授权都有一名被授权主体。受赠人委托人可以在同一个身份中代表一个或多个身份 AWS 账户 作为KMS密钥或在不同的账户中。

  • 授权只能允许授权操作。授权操作必须由授权中的KMS密钥支持。如果您指定了不支持的操作,则CreateGrant请求会失败并出现ValidationError异常。

  • 被授权者委托人可以在不指定授权的情况下使用授予他们的权限,就像权限来自密钥策略或IAM策略一样。但是,因为 AWS KMS API遵循最终一致性模型,当您创建、停用或撤销授予时,可能会有短暂的延迟,直到更改始终可用 AWS KMS。 要立即使用授权中的权限,请使用授权令牌

  • 授权委托人可以删除授权(停用或者撤销它)。删除授权会清除授权允许的所有权限。您不必确定要添加或删除哪些策略来撤销授权。

  • AWS KMS 限制每个KMS密钥的授权数量。有关详细信息,请参阅每个KMS密钥的赠款:50,000

在创建授权和给予其他人创建授权的权限时务必谨慎。创建授权的权限会带来安全影响,就像允许 kms: PutKeyPolicy 权限设置策略一样。

  • 有权为KMS密钥 (kms:CreateGrant) 创建授权的用户可以使用授权来允许用户和角色,包括 AWS 服务,使用KMS密钥。校长可以是你自己的身份 AWS 账户 或者其他账户或组织中的身份。

  • 拨款只能允许其中的一部分 AWS KMS 操作。您可以使用授权来允许委托人查看KMS密钥、将其用于加密操作以及创建和停用授权。有关详细信息,请参阅授权操作。您还可以使用授权约束来限制对称加密密钥授权中的权限。

  • 委托人可以获得通过密钥策略或IAM策略创建授权的权限。获得策略kms:CreateGrant许可的委托人可以为KMS密钥上的任何授权操作创建授权。这些主体无需拥有他们对密钥的授权权限。当您在策略中允许 kms:CreateGrant 权限时,您可以使用策略条件来限制此权限。

  • 委托人还可以获得从授权创建授权的权限。这些委托人只能委派他们获得的权限,即使他们拥有策略中的其他权限。有关详细信息,请参阅授予 CreateGrant 权限

有关与授权相关的概念的帮助,请参阅授权术语

授权概念

要有效地使用补助金,你需要了解以下术语和概念 AWS KMS 使用。

授权约束

限制授权中的权限的条件。目前, AWS KMS 支持基于加密操作请求中的加密上下文的授予限制。有关详细信息,请参阅使用授权约束

授权 ID

KMS密钥授权的唯一标识符。您可以使用授权 ID 和密钥标识符来标识RetireGrantRevokeGrant请求中的授权。

授权操作

这些区域有: AWS KMS 你可以在拨款中允许的操作。如果您指定其他操作,则CreateGrant请求会失败,但会出现ValidationError异常。这些也是接受授权令牌的操作。有关这些权限的详细信息,请参阅 AWS KMS 权限

这些授权操作实际上代表使用操作的权限。因此,对于 ReEncrypt 操作,您可以指定 ReEncryptFromReEncryptTo 或此两者 ReEncrypt*

授权操作包括:

您允许的授权操作必须由授权中的KMS密钥支持。如果您指定了不支持的操作,则CreateGrant请求会失败并出现ValidationError异常。例如,对称加密KMS密钥的授权不允许签名验证GenerateMacVerifyMac操作。对非对称KMS密钥的授权不允许任何生成数据密钥或数据密钥对的操作。

授权令牌

这些区域有: AWS KMS API遵循最终一致性模型。创建拨款时,可能会有一段短暂的延迟,更改才会在整个过程中生效 AWS KMS。 更改通常需要不到几秒钟的时间即可在整个系统中传播,但在某些情况下,可能需要几分钟。如果您尝试在系统中完全传播之前使用授权,您可能会收到访问被拒绝的错误。授权令牌允许您引用授权并立即使用授权权限。

授权令牌是代表授权的唯一、非秘密、长度可变的 base64 编码字符串。您可以使用授权令牌来标识任何授权操作中的授权。但是,由于令牌值是哈希摘要,它不会显示有关授权的任何详细信息。

赠款令牌的设计仅在授权完全传播到整个过程中后才可使用 AWS KMS。 之后,被授予方委托人可以在不提供授予令牌或任何其他授予证据的情况下使用授予中的许可。您可以随时使用授权令牌,但是一旦授权最终保持一致, AWS KMS 使用授权来确定权限,而不是使用授予令牌。

例如,以下命令调用该GenerateDataKey操作。它使用授权令牌来表示授予调用者(被授权者委托人)调用指定KMS密钥GenerateDataKey的权限。

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --grant-token $token

您还可以使用授权令牌来标识管理授权的操作中的授权。例如,即将退休的委托人可以在调用RetireGrant操作时使用授权令牌。

$ aws kms retire-grant \ --grant-token $token

CreateGrant 是返回授权令牌的唯一操作。您无法从任何其他人那里获得授予令牌 AWS KMS 操作或来自 CreateGrant 操作的CloudTrail 日志事件ListGrantsListRetirableGrants操作返回授权 ID,但不返回授权令牌。

有关详细信息,请参阅使用授权令牌

被授权者委托人

获取授权中指定的权限的身份。每个授权都有一个被授权主体,但被授权主体可以代表多个身份。

受赠人委托人可以是任何 AWS 校长,包括一个 AWS 账户 (root)、IAM用户IAM角色联合角色或用户,或代入角色的用户。被授权人委托人可以与KMS密钥在同一个账户中,也可以位于不同的账户中。但是,受赠方委托人不能是服务委托人IAM团体AWS 组织

注意

IAM最佳做法不鼓励使用具有长期凭证的IAM用户。只要有可能,就使用提供临时证书的IAM角色。有关详细信息,请参阅《IAM用户指南》IAM中的安全最佳实践

停用(授权)

终止授权。当您使用完权限时,将停用授权。

撤销和停用授权都会删除授权。但是,停用由授权中指定的委托人完成。撤消通常由密钥管理员执行。有关详细信息,请参阅停用和撤销授权

停用委托人

可以停用授权的委托人。您可以在授权中指定停用委托人,但这不是必需的。即将退休的校长可以是任何 AWS 校长,包括 AWS 账户、IAM用户、IAM角色、联合用户和代入角色用户。退休本金可以与KMS密钥在同一个账户中,也可以放在不同的账户中。

注意

IAM最佳做法不鼓励使用具有长期凭证的IAM用户。只要有可能,就使用提供临时证书的IAM角色。有关详细信息,请参阅《IAM用户指南》IAM中的安全最佳实践

除了补助金中规定的退休本金外,还可以通过以下方式退还补助金 AWS 账户 补助金是在其中创建的。如果授权允许 RetireGrant 操作,被授权者委托人可以停用授权。另外, AWS 账户 或者一个 AWS 账户 也就是说,即将退休的委托人可以将退休补助金的许可委托给同一个IAM委托人 AWS 账户。 有关详细信息,请参阅停用和撤销授权

撤销(授予)

终止授权。您将撤销积极拒绝授权允许的权限的授权。

撤销和停用授权都会删除授权。但是,停用由授权中指定的委托人完成。撤消通常由密钥管理员执行。有关详细信息,请参阅停用和撤销授权

最终一致性(用于授权)

这些区域有: AWS KMS API遵循最终一致性模型。在创建、停用或撤销拨款时,可能会有短暂的延迟,更改才会在整个过程中生效 AWS KMS。 更改通常需要不到几秒钟的时间即可在整个系统中传播,但在某些情况下,可能需要几分钟。

如果您遇到意外错误,您可能会注意到这个短暂的延迟。例如,如果您尝试管理新的授权,或者在新授权中使用这些权限,然后才知道该授权 AWS KMS,您可能会收到拒绝访问的错误。如果您停用或撤销授权,则被授权者委托人可能仍然能够在短时间内使用其权限,直到完全删除该授权为止。典型的策略是重试请求,还有一些 AWS SDKs包括自动退避和重试逻辑。

AWS KMS 具有缓解这种短暂延迟的功能。

注意

授权令牌将取代授权的有效性,直到服务中的所有终端节点都使用新的授权状态更新为止。在大多数情况下,最终一致性将在五分钟内实现。

有关更多信息,请参阅 AWS KMS 最终一致性

的最佳实践 AWS KMS 补助金

AWS KMS 建议在创建、使用和管理拨款时采用以下最佳做法。

  • 将授权中的权限限制为被授权者委托人所需的权限。使用最小特权访问权限的原则。

  • 使用特定的被授权者委托人(例如IAM角色),并授予被授权者仅使用他们需要的API操作的权限。

  • 使用加密上下文授权限制来确保呼叫者将KMS密钥用于预期目的。有关如何在请求中使用加密上下文来保护数据的详细信息,请参阅如何通过使用来保护加密数据的完整性 AWS Key Management Service 而 EncryptionContextAWS 安全博客

    提示

    尽可能使用EncryptionContextEqual授权约束。EncryptionContextSubset授权约束更难正确使用。如果您需要使用它,请仔细阅读文档并测试授权约束以确保它按预期工作。

  • 删除重复的授权。重复的授权具有相同的密钥ARN、API操作、被授权者委托人、加密上下文和名称。如果您停用或撤销原始授予,但保留重复项授权,则剩余的重复授权将构成意外的权限提升。为了在重试 CreateGrant 请求时避免重复授权,请使用 Name 参数。要检测重复的授权,请使用ListGrants操作。如果您意外创建了重复授权,请尽快停用或撤销该授权。

    注意

    补助金 AWS 托管密钥可能看起来像重复的密钥,但具有不同的被授权者主体。

    ListGrants 响应中的 GranteePrincipal 字段通常包含授权的被授权者委托人。但是,当赠款中的受赠人本金是 AWS service,该GranteePrincipal字段包含服务主体,它可能代表几个不同的被授权方委托人。

  • 请记住,授权不会自动过期。当权限不再需要时,立即停用或撤销授权。未删除的授权可能会对加密资源造成安全风险。