管理授权 - AWS Key Management Service

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

管理授权

具有所需权限的委托人可以查看、使用和删除(停用或撤销)授权。要细化创建和管理授权的权限, AWS KMS 支持多种策略条件,您可以在关键策略和IAM策略中使用这些条件。

控制对授权的访问

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

API操作 关键政策或IAM政策 授权
CreateGrant
ListGrants -
ListRetirableGrants -
停用授权 (有限。请参阅 停用和撤销授权
RevokeGrant -

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

kms: GrantConstraintType

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

kms: GrantIsFor AWSResource

允许委托人拨打CreateGrantListGrants、或RevokeGrant仅当出现以下情况时 AWS 与集成的服务 AWS KMS代表委托人发送请求。

kms: GrantOperations

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

kms: GranteePrincipal

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

kms: RetiringPrincipal

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

查看授权

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

要在中查看所有赠款 AWS 账户 以及具有特定退休本金的区域,使用ListRetirableGrants。响应包括每项授权的详细信息。

注意

ListGrants 响应中的 GranteePrincipal 字段通常包含授权的被授权者委托人。但是,当赠款中的受赠人本金是 AWS service,该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" ] } ] }

使用授权令牌

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

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

以下示例使用该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

获得许可的委托人还可以在新补助金到期之前使用拨款令牌停用该补助金 AWS KMS。 (该RevokeGrant操作不接受授权令牌。) 有关详细信息,请参阅停用和撤销授权

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

停用和撤销授权

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

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

RevokeGrant

像大多数人一样 AWS KMS 操作,则通过关键策略和IAM策略控制对RevokeGrant操作的访问权限。任何经kms:RevokeGrant许可的委托人RevokeGrantAPI都可以调用。该权限包含在授予给密钥管理员的标准权限中。通常,管理员会撤销授权以拒绝授权允许的权限。

RetireGrant

授权决定谁可以停用它。这种设计允许您在不更改关键策略或IAM策略的情况下控制拨款的生命周期。通常,当您使用授权的权限时,将停用授权。

授权可以通过授权中指定的可选停用委托人停用。被授权者委托人还可以停用授权,但只有当他们也是停用委托人或者授权包括 RetireGrant 操作时。作为备份, AWS 账户 在其中设立补助金可以取消补助金。

有一种kms:RetireGrant权限可以在IAM策略中使用,但其实用性有限。授权中指定的委托人无需 kms:RetireGrant 权限即可停用授权。单独的 kms:RetireGrant 权限不允许委托人停用授权。kms:RetireGrant 权限在密钥策略中无效。

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

  • 这些区域有: AWS 账户 拥有KMS密钥的人可以将kms:RetireGrant权限委托给账户中的IAM委托人。

  • 如果即将退休的校长与众不同 AWS 账户,其他账户的管理员可以使用kms:RetireGrant向该账户中的委托人委托撤销IAM授予的权限。

这些区域有: AWS KMS API遵循最终一致性模型。在创建、停用或撤销拨款时,可能会有短暂的延迟,更改才会在整个过程中生效 AWS KMS。 更改通常需要不到几秒钟的时间即可在整个系统中传播,但在某些情况下,可能需要几分钟。如果您需要立即删除新的授权,则在新的授权可用之前 AWS KMS,使用拨款令牌取消拨款。您不能使用授权令牌撤销授权。