管理授权 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

管理授权

具有所需权限的委托人可以查看、使用和删除(停用或撤销)授权。为了完善创建和管理授权的权限, Amazon KMS 支持多个策略条件,您可以在密钥策略和 IAM 策略中使用这些条件。

控制对授权的访问

您可以控制对在密钥策略、IAM policy 和授权中创建和管理授权的操作的访问权限。从授权中获得 CreateGrant 权限的委托人具有更有限的授权权限

API 操作 密钥策略或 IAM policy 授权
CreateGrant
ListGrants -
ListRetirableGrants -
停用授权 (有限。请参阅 停用和撤销授权
RevokeGrant -

当您使用密钥策略或 IAM 策略来控制对创建和管理授权的操作的访问权限时,您可以使用以下一个或多个策略条件来限制权限。 Amazon KMS 支持以下所有与 Grant 相关的条件键。有关详细信息和示例,请参阅 Amazon KMS 条件键

kms: GrantConstraintType

允许委托人仅在授权包含指定的授权约束时创建授权。

kms: GrantIsFor AWSResource

RevokeGrant仅当与之集成的 Amazon 服务代表委托人 Amazon KMS发送请求时,才允许委托人拨打CreateGrantListGrants、或。

kms: GrantOperations

允许委托人创建授权,但将授权限制为指定操作。

kms: GranteePrincipal

允许委托人仅为指定的被授权者委托人创建授权。

kms: RetiringPrincipal

允许委托人仅在授权指定特定的停用委托人时创建授权。

查看授权

要查看授权,请使用ListGrants操作。您必须指定授权所适用的 KMS 密钥。您还可以按授权 ID 或被授权者委托人筛选授权列表。有关更多示例,请参阅查看授予

要查看 Amazon Web Services 账户 和地区中具有特定退休本金的所有补助金,请使用ListRetirableGrants。响应包括每项授权的详细信息。

注意

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

例如,以下命令列出 KMS 密钥的所有授权。

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572216195.0, "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Operations": [ "Decrypt" ] } ] }

使用授权令牌

Amazon KMS API 遵循最终一致性模型。创建授权时,授权可能不会立即生效。可能会出现短暂的延迟,才能使更改在整个 Amazon KMS中可用。更改通常需要不到几秒钟的时间即可在整个系统中传播,但在某些情况下,可能需要几分钟。更改完全传播到整个系统后,被授权者主体可以使用授权中的权限,而无需指定授权令牌或授权的任何证据。但是,如果拨款过于新以至于所有人都不知道 Amazon KMS,则请求可能会因AccessDeniedException错误而失败。

要立即使用新授权中的权限,请使用该授权的授权令牌。保存CreateGrant操作返回的授权令牌。然后在 Amazon KMS 操作请求中提交授权令牌。您可以向任何 Amazon KMS 授权操作提交授权令牌,也可以在同一个请求中提交多个授权令牌。

以下示例使用该CreateGrant操作创建允许GenerateDataKey解密操作的授权。它将保存 CreateGranttoken 变量中返回的授权令牌。然后,在调用 GenerateDataKey 操作时,它使用 token 变量中的授权令牌。

# Create a grant; save the grant token $ token=$(aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/appUser \ --retiring-principal arn:aws:iam::111122223333:user/acctAdmin \ --operations GenerateDataKey Decrypt \ --query GrantToken \ --output text) # Use the grant token in a request $ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ –-key-spec AES_256 \ --grant-tokens $token

具有权限的主体也可以使用授权令牌来停用新授权,即使授权在整个 Amazon KMS中可用之前。(RevokeGrant 操作不接受授权令牌。) 有关更多信息,请参阅 停用和撤销授权

# Retire the grant $ aws kms retire-grant --grant-token $token

停用和撤销授权

要删除某个授权,请停用或撤销该授权。

RetireGrantRevokeGrant操作彼此非常相似。这两个操作都会删除授权,从而消除授权允许的权限。这些操作之间的主要区别在于它们是如何获得授权的。

RevokeGrant

与大多数 Amazon KMS 操作一样,对RevokeGrant操作的访问权限通过密钥策略IAM 策略进行控制。任何kms:RevokeGrant获得许可的委托人都可以调用RevokeGrant该 API。该权限包含在授予给密钥管理员的标准权限中。通常,管理员会撤销授权以拒绝授权允许的权限。

RetireGrant

授权决定谁可以停用它。此设计使您能够控制授权的生命周期,而无需更改密钥策略或 IAM policy。通常,当您使用授权的权限时,将停用授权。

授权可以通过授权中指定的可选停用委托人停用。被授权者委托人还可以停用授权,但只有当他们也是停用委托人或者授权包括 RetireGrant 操作时。作为备份,创建补助金 Amazon Web Services 账户 的用户可以停用补助金。

有一个可用于 IAM policy 的 kms:RetireGrant 权限,但它具有有限的实用工具。授权中指定的委托人无需 kms:RetireGrant 权限即可停用授权。单独的 kms:RetireGrant 权限不允许委托人停用授权。kms:RetireGrant 权限在密钥策略中无效。

  • 若要拒绝停用授权的权限,您可以使用具有 kms:RetireGrant 权限的 Deny 操作。

  • 拥有 KMS 密钥的人可以将kms:RetireGrant权限委托给账户中的 IAM 委托人。 Amazon Web Services 账户

  • 如果即将退休的委托人不同 Amazon Web Services 账户,则另一个账户中的管理员可以使用kms:RetireGrant向该账户中的 IAM 委托人委托人委托授予撤销授权。

Amazon KMS API 遵循最终一致性模型。当您创建、停用或撤销授权时,可能会出现短暂的延迟,才能使更改在整个 Amazon KMS中可用。更改通常需要不到几秒钟的时间即可在整个系统中传播,但在某些情况下,可能需要几分钟。如果您需要在新的授权开始使用之前立即将其删除 Amazon KMS,请使用授权令牌停用该授权。您不能使用授权令牌撤销授权。