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

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

管理授权

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

控制对授权的访问

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

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

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

kms:GrantConstraintType

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

kms:GrantIsForAWSResource

CreateGrant 仅当与 集成的 ListGrants RevokeGrant 服务代表委托人AWS发送请求时AWS KMS,才允许委托人调用 、 或 。

kms:GrantOperations

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

kms:GranteePrincipal

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

kms:RetiringPrincipal

仅当授权指定特定停用委托人时,才允许委托人创建授权。

查看授权

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

要查看AWS账户和区域中具有特定停用委托人的所有授权,请使用 ListRetirableGrants。这些响应包含有关每个授权的详细信息。

注意

ListGrants 响应中的 GranteePrincipal 字段通常包含授权的被授权者委托人。但是,当授权中的被授权者委托人是 AWS 服务时,GranteePrincipal 字段包含服务委托人,该委托人可能表示多个不同的被授权者委托人。

例如,以下命令列出 的所有授权CMK。

$ 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" ] } ] }

使用授权令牌

当您创建授权时,授权可能不会立即生效。在授权实现最终一致性之前,可能会有较短的间隔,不到 5 分钟,即,在新的授权在整个 中可用之前AWS KMS。一旦授权实现了最终一致性,被授权委托人就可以使用授权中的权限,而无需指定授权令牌或任何证明授权。但是,如果授权是非常新的,以致于尚未被所有 知道AWS KMS,则请求可能会失败并出现错误AccessDeniedException

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

以下示例使用 CreateGrant 操作创建允许 GenerateDataKeyDecrypt 操作的授权。它将 CreateGrant 返回的授权令牌保存在 token 变量中。然后,在对 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

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

RetireGrant

授权确定哪些人可以停用它。此设计允许您控制授权的生命周期,而无需更改密钥策略或 IAM 策略。通常,您在使用完授权的权限后停用该授权。

授权可以由授权中指定的可选停用委托人停用。被授权者委托人还可以停用授权,但前提是他们也是停用委托人或授权包含 RetireGrant 操作。作为备份,创建授权的 AWS 账户(根用户)可以停用授权。

密钥策略和 kms:RetireGrant 策略中可以使用某个IAM权限,但它的实用程序有限。授权中指定的委托人可以在没有 kms:RetireGrant 权限的情况下停用授权。kms:RetireGrant 权限本身不允许委托人停用授权。

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

  • 拥有 的 AWS 账户(根用户CMK)可以使用 kms:RetireGrant 权限委派权限以停用授权。

  • 如果停用委托人是其他AWS账户的根用户,则其他账户中的管理员可以使用 kms:RetireGrant 委派权限以停用该账户中的 IAM 用户的授权。

您可以使用授权令牌停用授权,但不能撤销它。如果您需要立即删除新授权,然后新授权在 中可用AWS KMS,则必须停用它。

创建、停用或撤销授权时,可能会有短暂的延迟(通常不到 5 分钟),直到操作实现最终一致性。您可以使用授权令牌在授权创建后立即停用它。您无法使用授权令牌撤销授权。