使用授权 - AWS Key Management Service

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

使用授权

授权是一种策略工具,允许AWS委托人在加密操作中使用 AWS KMS 客户主密钥 (CMKs)。它还可以让他们查看 CMK (DescribeKey) 以及创建和管理授权。在授予对 的访问权限时CMK,将考虑授权以及密钥策略IAM 策略。授权通常用于临时权限,因为您可以创建一个权限,使用其权限并删除它,而无需更改密钥策略或 IAM 策略。

除了必需的密钥策略和可选IAM策略之外,授权还提供了访问控制策略的强大而灵活的组件。通常,您使用密钥策略建立对 的长期静态权限CMK。您可以使用 IAM 策略控制对不涉及特定 (如 CMKCreateKeyhttps://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 的操作的访问,并描述适用于多个 服务的资源CMKs或包含多个AWS服务的资源的权限。然后,要提供对 的临时或有限访问权限CMK,请使用授权。

授权通常由与 集成的 AWS 服务用于AWS KMS加密静态数据。该服务代表账户中的用户创建授权,使用其权限,并在授权任务完成后立即将其停用。有关 AWS 服务如何使用授权的详细信息,请参阅服务用户指南或开发人员指南中的静态AWS 服务如何使用 AWS KMS加密主题。

有关演示如何使用多种编程语言的授权的代码示例,请参阅处理授予

关于授权

授权是一种非常灵活且有用的访问控制机制。当您将授权附加到 客户主密钥 (CMK) 时,在满足授权中指定的条件,授权CMK允许委托人在 上调用特定操作。

  • 每个 都仅控制对一个 的访问CMK。CMK 可以位于相同或不同AWS的账户中。

  • 您可以使用授权来允许访问,但不能拒绝它。授权只能允许访问授权操作

  • 从授权获取权限的委托人可以使用这些权限,而无需指定授权,就像权限来自密钥策略或 IAM 策略一样。但是,当您创建、停用或撤销授权时,可能会有短暂的延迟(通常不到 5 分钟),直到操作实现最终一致性。要立即使用授权中的权限,请使用授权令牌

  • 您可以使用授权来允许其他AWS账户中的委托人使用 CMK。

  • 如果委托人具有所需的权限,则可以删除授权(停用撤销)。这些操作会消除授权允许的所有权限。您不必确定添加或调整哪些策略来撤消授权。

  • 当您创建、停用或撤销授权时,可能会有短暂的时间间隔,通常不到 5 分钟,直到整个 中发生此更改AWS KMS。有关详细信息,请参阅授权最终一致性(对于授权)的最终一致性。

创建授权以及向其他人授予创建授权的权限时,请务必小心。创建授权的权限具有安全影响,与允许 kms:PutKeyPolicy 设置策略的权限非常相似。

  • 有权为 CMK (kms:CreateGrant) 创建授权的用户可以使用授权以允许 用户和角色(包括 AWS 服务)使用 CMK。委托人可以是您自己的 AWS 账户中的 身份,也可以是其他 账户或组织中的 身份。

  • 授权只能允许一部分AWS KMS操作。您可以使用授权来允许委托人查看 CMK,在加密操作中使用它,以及创建和停用授权。有关详细信息,请参阅授予操作。您还可以使用授权约束来限制授权中的权限。

  • 委托人可以从密钥策略或 IAM 策略获得创建授权的权限。这些委托人可以为 上的任何授权操作创建授权CMK,即使他们没有 权限也是如此。在策略中允许kms:CreateGrant权限时,您可以使用策略条件来限制此权限。

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

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

对称和非对称授权 CMKs

您可以创建授权来控制对对称CMK或非对称 的访问CMK。但是,您无法创建授权以允许委托人执行 不支持的操作CMK。如果您尝试,AWS KMS 将返回 ValidationError 异常。

对称 CMKs

对称的授权CMKs不能允许 SignVerify GetPublicKey 操作。(对于旧操作,此规则有少数例外,但您不应当为 AWS KMS 不支持的操作创建授权。)

非对称 CMKs

非对称授权CMKs不能允许生成数据密钥或数据密钥对的操作。它们也不能允许与自动密钥轮换导入的密钥材料或CMKs自定义密钥存储相关的操作。

密钥用法为 的 CMKs 的授权SIGN_VERIFY不能允许加密操作。CMKs 密钥用法为 的 的授权ENCRYPT_DECRYPT不能允许 SignVerify 操作。

授予术语

要有效地使用授权,您需要了解 使用的术语和概念AWS KMS。

授权约束

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

授权 ID

授权的唯一标识符CMK。您可以使用授权以及密钥标识符RetireGrantRevokeGrant 请求中标识授权。

授权操作

您可以在授权中允许AWS KMS的操作。这些也是接受授权令牌的操作。有关这些权限的详细信息,请参阅 AWS KMS权限

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

授权操作包括:

您无法为 不支持的操作创建授权CMK。如果您尝试,AWS KMS 将返回 ValidationError 异常。

授予令牌

当您创建授权时,可能会有短暂的延迟(通常不到 5 分钟),直到新授权在整个 中可用AWS KMS,即,直至它实现最终一致性。如果您在授权实现最终一致性之前尝试使用授权,则可能会遇到访问被拒绝错误。授权令牌可让您引用授权并立即使用授权权限。

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

授权令牌设计为仅在授权实现最终一致性之前使用。之后,被授权委托人可以使用授权中的权限,而无需提供授权令牌或任何其他授权证据。您可以随时使用授权令牌,但在授权最终保持一致后, AWS KMS 使用授权来确定权限,而不是授权令牌。

例如,以下命令调用 GenerateDataKey 操作。它使用授权令牌表示授权,该授权向调用方(被授权委托人)授予GenerateDataKey对指定 调用 的权限CMK。

$ 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 账户(根)、 IAM 用户IAM 角色联合角色或 用户或担任的角色用户。被授权者委托人可以与 位于同一账户CMK中,也可以位于不同的账户中。但是,被授权者委托人不能是服务委托人IAM 组AWS组织

停用(授权)

终止授权。使用完授权的权限后,您可以停用授权。

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

停用委托人

可以停用授权的委托人。您可以在授权中指定停用委托人,但这不是必需的。停用委托人可以是任何AWS委托人,包括AWS账户(根)、IAM 用户、IAM 角色、联合身份用户和代入的角色用户。停用委托人可以与 位于同一账户中CMK,也可以位于不同的账户中。

除了停用授权中指定的委托人之外,授权可以由创建授权的AWS账户(根用户)停用。如果授权允许 RetireGrant 操作,则被授权委托人可以停用授权。此外, AWS 账户(根用户)或作为停用委托人AWS的 账户可以向同一IAM账户中的 AWS 委托人委派停用授权的权限。有关详细信息,请参阅 停用和撤销授权

撤销(授权)

终止授权。您撤销授权以主动拒绝授权允许的权限。

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

最终一致性(对于授权)

当您创建、停用或撤销授权时,在整个 中进行更改之前,可能会出现短暂延迟(通常不到 5 分钟AWS KMS)。当此间隔完成时,我们会认为该操作已实现最终一致性

如果您收到意外错误,则可能会发现此短暂延迟。例如,如果您尝试管理新授权,或者在了解整个授权之前使用新授权中的权限AWS KMS,则可能会遇到访问被拒绝错误。如果您停用或撤销授权,则被授权委托人在短时间内仍可使用其权限,直到完全删除授权。典型的策略是重试请求,某些AWSSDKs包括自动退避和重试逻辑。

AWS KMS 具有用于缓解此短暂延迟的功能。

  • 要立即使用新授权中的权限,请使用授权令牌。您可以使用授权令牌在任何授权操作中引用授权。有关说明,请参阅使用授权令牌

  • CreateGrant 操作有一个Name参数,可防止重试操作创建重复的授权。

注意

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