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

管理授权

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

控制对授权的访问

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

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

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

kms:GrantConstraintType

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

kms:GrantIsForAWSResource

允许仅在Amazon 服务与 Amazon KMS 集成时调用 CreateGrantListGrantsRevokeGrant 的主体代表主体发送请求。

kms:GrantOperations

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

kms:GranteePrincipal

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

kms:RetiringPrincipal

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

查看授权

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

若要查看 Amazon Web Services 账户 和区域中具有特定停用委托人的所有授权,请使用 ListRetirableGrants。响应包括每项授权的详细信息。

注意

GranteePrincipal 响应中的 ListGrants 字段通常包含授权的被授权者委托人。但是,当授权中的被授权者委托人是 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 之前。一旦授权达到最终一致性后,被授权者委托人可以使用授权中的权限,而无需指定授权令牌或授权的任何证据。然而,如果授权太新,尚未被所有 Amazon KMS 知晓,则请求可能会失败,并显示 AccessDeniedException 错误。

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

以下示例使用 CreateGrant 操作来创建允许 GenerateDataKeyDecrypt 操作的授权。它将保存 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

具有权限的委托人也可以使用授权令牌来停用新授权,即使在授权达到最终一致性之前。(RevokeGrant 操作不接受授权令牌。) 有关详细信息,请参阅停用和撤销授权

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

停用和撤销授权

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

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

RevokeGrant

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

RetireGrant

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

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

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

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

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

  • 如果停用委托人是另一个 Amazon Web Services 账户,则其他账户中的管理员可以使用 kms:RetireGrant 将停用授权的权限委派给该账户中的 IAM 用户。

当您创建、停用或撤销授权时,可能会出现短暂的延迟(通常不到五分钟),直到该操作达到最终一致性。如果您需要在某个新授权可在整个 Amazon KMS 中使用前立即删除它,请使用授予令牌停用该授权。您不能使用授权令牌撤销授权。