本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
补助金 AWS KMS
授权是一种策略分析工具,允许 AWS 主体将 KMS 密钥用于加密操作中。它还可以让他们查看 KMS 密钥 (DescribeKey
) 以及创建和管理授权。在授权访问 KMS 密钥时,将考虑授权与密钥策略和 IAM policy。授权通常用于临时权限,因为您可以在不更改密钥策略或 IAM policy 的情况下创建授权、使用其权限并将其删除。
与之集成的 AWS 服务通常使用赠款 AWS KMS 来加密您的静态数据。该服务代表账户中的用户创建授权,使用其权限,并在其任务完成后立即停用授权。有关 AWS 服务如何使用授权的详细信息,请参阅服务用户指南或开发者指南中的静态加密主题。
授权是一种非常灵活且有用的访问控制机制。当您为 KMS 密钥创建授权时,授权允许被授权主体对 KMS 密钥调用指定授权操作,前提是该授权中指定的所有条件都得到满足。
-
每个授权只允许访问一个 KMS 密钥。您可以在不同的 AWS 账户中为 KMS 密钥创建授权。
-
授权可以允许访问 KMS 密钥,但不能拒绝访问。
-
每个授权都有一名被授权主体。被授权者委托人可以代表一个或多个与 KMS 密钥 AWS 账户 相同的身份,也可以在不同的账户中代表一个或多个身份。
-
授权只能允许授权操作。授权操作必须由授权中的 KMS 密钥支持。如果您指定了不支持的操作,则CreateGrant请求会失败并出现
ValidationError
异常。 -
被授权主体可以使用授权给予他们的权限,而无需指定授权,就像权限来自密钥策略或 IAM policy 一样。但是,由于 AWS KMS API 遵循最终一致性模型,因此当您创建、停用或撤销授权时,可能会有短暂的延迟,直到更改始终 AWS KMS可用。要立即使用授权中的权限,请使用授权令牌。
-
AWS KMS 限制每个 KMS 密钥的授权数量。有关详细信息,请参阅每个 KMS 密钥的授权数:50000。
在创建授权和给予其他人创建授权的权限时务必谨慎。创建授权的权限会带来安全影响,就像允许 kms: PutKeyPolicy 权限设置策略一样。
-
有权为 KMS 密钥创建授权的用户可以使用授权来允许用户和角色(包括 AWS 服务
kms:CreateGrant
)使用 KMS 密钥。委托人可以是您自己的身份,也可以是其他账户 AWS 账户 或组织中的身份。 -
拨款只能允许一部分 AWS KMS 操作。您可以使用授权允许委托人查看 KMS 密钥,在加密操作中使用它,以及创建和停用授权。有关详细信息,请参阅授权操作。您还可以使用授权约束来限制对称加密密钥授权中的权限。
-
委托人可以获得从密钥策略或 IAM policy 创建授权的权限。通过策略获得的
kms:CreateGrant
权限的主体可以为基于 KMS 密钥的任何授权操作创建授权。这些主体无需拥有他们对密钥的授权权限。当您在策略中允许kms:CreateGrant
权限时,您可以使用策略条件来限制此权限。 -
委托人还可以获得从授权创建授权的权限。这些主体只能委派他们被授予的权限,即使他们具有来自策略的其他权限也是如此。有关详细信息,请参阅授予 CreateGrant 权限。
授权概念
为了有效地使用授权,您需要了解 AWS KMS 使用的术语和概念。
- 授权约束
-
限制授权中的权限的条件。目前, AWS KMS 支持基于加密操作请求中的加密上下文的授予限制。有关详细信息,请参阅使用授权约束。
- 授权 ID
-
KMS 密钥的授权的唯一标识符。您可以使用授权 ID 和密钥标识符来标识RetireGrant或RevokeGrant请求中的授权。
- 授权操作
-
您可以在授权中允许的 AWS KMS 操作。如果您指定其他操作,则CreateGrant请求会失败,但会出现
ValidationError
异常。这些也是接受授权令牌的操作。有关这些权限的详细信息,请参阅 AWS KMS 权限。这些授权操作实际上代表使用操作的权限。因此,对于
ReEncrypt
操作,您可以指定ReEncryptFrom
、ReEncryptTo
或此两者ReEncrypt*
。授权操作包括:
-
加密操作
-
其他操作
您允许的授权操作必须由授权中的 KMS 密钥支持。如果您指定了不支持的操作,则CreateGrant请求会失败并出现
ValidationError
异常。例如,对称加密 KMS 密钥的授权不能允许 Sign、Verify、GenerateMac
或VerifyMac
操作。非对称 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 操作或该操作的CloudTrail 日志事件中获取授权令牌。 CreateGrant ListGrants和ListRetirableGrants操作返回授权 ID,但不返回授权令牌。有关详细信息,请参阅使用授权令牌。
- 被授权者委托人
-
获取授权中指定的权限的身份。每个授权都有一个被授权主体,但被授权主体可以代表多个身份。
被授权者委托人可以是任何 AWS 委托人,包括 AWS 账户 (根)、I AM 用户、IAM 角色、联合角色或用户或代入角色用户。被授权者委托人可以与 KMS 密钥位于同一账户中,也可以位于不同的账户中。但是,被授权者委托人不能是服务委托人、IAM 组,或 AWS 组织。
注意
IAM 最佳实践不鼓励使用具有长期凭证的 IAM 用户。而应尽可能使用提供临时凭证的 IAM 角色。有关更多信息,请参阅《IAM 用户指南》中的 IAM 安全最佳实践。
- 停用(授权)
-
终止授权。当您使用完权限时,将停用授权。
撤销和停用授权都会删除授权。但是,停用由授权中指定的委托人完成。撤消通常由密钥管理员执行。有关详细信息,请参阅停用和撤销授权。
- 停用委托人
-
可以停用授权的委托人。您可以在授权中指定停用委托人,但这不是必需的。即将退出的委托人可以是任何 AWS 委托人,包括 AWS 账户 IAM 用户、IAM 角色、联合用户和代入角色用户。停用委托人可以与 KMS 密钥位于同一账户中,也可以位于不同的账户中。
注意
IAM 最佳实践不鼓励使用具有长期凭证的 IAM 用户。而应尽可能使用提供临时凭证的 IAM 角色。有关更多信息,请参阅《IAM 用户指南》中的 IAM 安全最佳实践。
除了补助金中规定的退休本金外,补助金还可由设立补助金 AWS 账户 的所在地收回。如果授权允许
RetireGrant
操作,被授权者委托人可以停用授权。此外,即将退休 AWS 账户 的委托人 AWS 账户 或可以将撤回补助金的权限委托给同 AWS 账户一个IAM委托人。有关详细信息,请参阅停用和撤销授权。 - 撤销(授予)
-
终止授权。您将撤销积极拒绝授权允许的权限的授权。
撤销和停用授权都会删除授权。但是,停用由授权中指定的委托人完成。撤消通常由密钥管理员执行。有关详细信息,请参阅停用和撤销授权。
- 最终一致性(用于授权)
-
AWS KMS API 遵循最终一致性
模型。当您创建、停用或撤销授权时,可能会出现短暂的延迟,才能使更改在整个 AWS KMS中可用。更改通常需要不到几秒钟的时间即可在整个系统中传播,但在某些情况下,可能需要几分钟。 如果您遇到意外错误,您可能会注意到这个短暂的延迟。例如,如果您尝试管理新的授权,或者在新授权中使用这些权限 AWS KMS,则可能会收到拒绝访问的错误。如果您停用或撤销授权,则被授权者委托人可能仍然能够在短时间内使用其权限,直到完全删除该授权为止。典型的策略是重试请求,有些策略 AWS SDKs 包括自动退避和重试逻辑。
AWS KMS 具有缓解这种短暂延迟的功能。
-
要立即使用新授权中的权限,请使用授权令牌。您可以使用授权令牌来引用任何授权操作中的授权。有关说明,请参阅 使用授权令牌。
-
该CreateGrant操作具有防止重试操作创建重复授权的
Name
参数。
注意
授权令牌将取代授权的有效性,直到服务中的所有终端节点都使用新的授权状态更新为止。在大多数情况下,最终一致性将在五分钟内实现。
有关更多信息,请参阅AWS KMS 最终一致性。
-