本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
补助金 AWS KMS
赠款是一种政策工具,允许AWS 委托人在加密操作中使用KMS密钥。它还可以让他们查看KMS密钥 (DescribeKey
) 以及创建和管理授权。在授权访问KMS密钥时,会将授权与关键策略和IAM策略一起考虑。授予通常用于临时权限,因为您可以在不更改密钥策略或IAM策略的情况下创建临时权限、使用其权限并删除临时权限。
与之集成的 AWS 服务通常使用赠款 AWS KMS 来加密您的静态数据。该服务代表账户中的用户创建授权,使用其权限,并在其任务完成后立即停用授权。有关 AWS 服务如何使用授权的详细信息,请参阅服务用户指南或开发者指南中的静态加密主题。
授权是一种非常灵活且有用的访问控制机制。当您为KMS密钥创建授权时,该授权允许被授权者委托人对KMS密钥调用指定的授予操作,前提是满足授权中指定的所有条件。
-
每项授权只允许访问一个KMS密钥。您可以为不同的KMS密钥创建授权 AWS 账户。
-
授权可以允许访问KMS密钥,但不能拒绝访问。
-
每个授权都有一名被授权主体。受赠人委托人可以代表一个或多个与KMS密钥 AWS 账户 相同的身份,也可以在不同的账户中代表一个或多个身份。
-
授权只能允许授权操作。授权操作必须由授权中的KMS密钥支持。如果您指定了不支持的操作,则CreateGrant请求会失败并出现
ValidationError
异常。 -
被授权者委托人可以在不指定授权的情况下使用授予他们的权限,就像权限来自密钥策略或IAM策略时一样。但是,由于 AWS KMS API遵循最终一致性模型,因此当您创建、停用或撤销授权时,可能会有短暂的延迟,直到更改始终 AWS KMS可用。要立即使用授权中的权限,请使用授权令牌。
-
AWS KMS 限制每个KMS密钥的授权数量。有关详细信息,请参阅每个 KMS 密钥的授权数:50000。
在创建授权和给予其他人创建授权的权限时务必谨慎。创建授权的权限会带来安全影响,就像允许 kms: PutKeyPolicy 权限设置策略一样。
-
有权为KMS密钥 (
kms:CreateGrant
) 创建授权的用户可以使用授权来允许用户和角色(包括 AWS 服务)使用该KMS密钥。委托人可以是您自己的身份,也可以是其他账户 AWS 账户 或组织中的身份。 -
Grants 只能允许一部分 AWS KMS 操作。您可以使用授权来允许委托人查看KMS密钥、将其用于加密操作以及创建和停用授权。有关详细信息,请参阅授权操作。您还可以使用授权约束来限制对称加密密钥授权中的权限。
-
委托人可以获得通过密钥策略或IAM策略创建授权的权限。获得策略
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密钥的授权不允许签名、验证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 账户 (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 具有缓解这种短暂延迟的功能。
-
要立即使用新授权中的权限,请使用授权令牌。您可以使用授权令牌来引用任何授权操作中的授权。有关说明,请参阅 使用授权令牌。
-
该CreateGrant操作具有一个
Name
参数,可防止重试操作创建重复的授权。
注意
授权令牌将取代授权的有效性,直到服务中的所有终端节点都使用新的授权状态更新为止。在大多数情况下,最终一致性将在五分钟内实现。
有关更多信息,请参阅AWS KMS 最终一致性。
-