本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
管理授权
具有所需权限的委托人可以查看、使用和删除(停用或撤销)授权。要优化创建和管理授权的权限,Amazon KMS 支持多个策略条件,您可在密钥策略和 IAM policy 中使用它们。
控制对授权的访问
您可以控制对在密钥策略、IAM policy 和授权中创建和管理授权的操作的访问权限。从授权中获得 CreateGrant
权限的委托人具有更有限的授权权限。
API 操作 | 密钥策略或 IAM policy | 授权 |
---|---|---|
CreateGrant | ✓ | ✓ |
ListGrants | ✓ | - |
ListRetirableGrants | ✓ | - |
停用授权 | (有限。请参阅 停用和撤销授权) | ✓ |
RevokeGrant | ✓ | - |
您在使用密钥策略或 IAM policy 以控制对创建和管理授权的操作的访问时,可以使用一个或多个以下策略条件来限制权限。Amazon KMS 支持以下所有与授权相关的条件键。有关详细信息和示例,请参阅 Amazon KMS 条件键。
- kms: GrantConstraintType
-
允许委托人仅在授权包含指定的授权约束时创建授权。
- kms: GrantIsFor AWSResource
-
允许仅在Amazon 服务与 Amazon KMS
集成时调用 CreateGrant
、ListGrants
或RevokeGrant
的主体代表主体发送请求。 - 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和解密操作的授权。它将保存 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
具有权限的主体也可以使用授权令牌来停用新授权,即使授权在整个 Amazon KMS 中可用之前。(RevokeGrant
操作不接受授权令牌。) 有关更多信息,请参阅 停用和撤销授权。
# Retire the grant
$
aws kms retire-grant --grant-token $token
停用和撤销授权
要删除某个授权,请停用或撤销该授权。
RetireGrant和RevokeGrant操作彼此非常相似。这两个操作都会删除授权,从而消除授权允许的权限。这些操作之间的主要区别在于它们是如何获得授权的。
- RevokeGrant
-
与大多数 Amazon KMS 操作一样,对
RevokeGrant
操作的访问通过密钥策略和 IAM policy 控制。任何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 密钥的 Amazon Web Services 账户可以将
kms:RetireGrant
权限委托给账户中的 IAM 主体。 -
如果停用主体是其他 Amazon Web Services 账户,则该其他账户中的管理员可以使用
kms:RetireGrant
将停用授权的权限委托给该账户中的 IAM 主体。
-
Amazon KMS API 采用最终一致性模型。当您创建、停用或撤销授权时,可能会出现短暂的延迟,才能使更改在整个 Amazon KMS 中可用。更改通常需要不到几秒钟的时间即可在整个系统中传播,但在某些情况下,可能需要几分钟。如果您需要在某个新授权可在整个 Amazon KMS 中使用前立即删除它,请使用授予令牌停用该授权。您不能使用授权令牌撤销授权。