

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

# 使用授权令牌
<a name="using-grant-token"></a>

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

要立即使用新授权中的权限，请使用该授权的[授权令牌](grants.md#grant_token)。保存[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)操作返回的授权令牌。然后在 AWS KMS 操作请求中提交授权令牌。您可以向任何 AWS KMS 授权[操作](grants.md#terms-grant-operations)提交授权令牌，也可以在同一个请求中提交多个授权令牌。



以下示例使用该`CreateGrant`操作创建允许[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)和[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)操作的授权。它将保存 `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
```

具有权限的主体也可以使用授权令牌来停用新授权，即使授权在整个 AWS KMS中可用之前。（`RevokeGrant` 操作不接受授权令牌。） 有关更多信息，请参阅 [停用和撤销授权](grant-delete.md)。

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