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

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

处理授予

此主题中的示例使用 AWS KMS 用于创建、查看、注销和撤销资助金的API AWS KMS 客户主密钥 (CMKs)。有关在 AWS KMS 中使用授权的更多详细信息,请参阅使用授权

创建授予

为 AWS KMS 客户主密钥,使用 创建资助金 操作。响应仅包括授权 ID 和授权令牌。要获取有关授权的详细信息,请使用 ListGrants 操作,如查看授予中所示。

这些示例创建了一个授予,允许帐户中的IAM用户Alice致电 生成数据密钥 操作 CMK 由 KeyId 参数。

在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。

Java

有关详细信息,请参阅 https://docs.amazonaws.cn/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kms/AWSKMSClient.html#createGrant-com.amazonaws.services.kms.model.CreateGrantRequest- 中的AWS SDK for Java API ReferencecreateGrant 方法

// Create a grant // // String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String granteePrincipal = "arn:aws:iam::111122223333:user/Alice"; String operation = GrantOperation.GenerateDataKey.toString(); CreateGrantRequest request = new CreateGrantRequest() .withKeyId(keyId) .withGranteePrincipal(granteePrincipal) .withOperations(operation); CreateGrantResult result = kmsClient.createGrant(request);
C#

有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceCreateGrantCreateGrantRequest.html 中的 适用于 .NET 的 AWS 开发工具包CreateGrant 方法

// Create a grant // // String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String granteePrincipal = "arn:aws:iam::111122223333:user/Alice"; String operation = GrantOperation.GenerateDataKey; CreateGrantRequest createGrantRequest = new CreateGrantRequest() { KeyId = keyId, GranteePrincipal = granteePrincipal, Operations = new List<string>() { operation } }; CreateGrantResponse createGrantResult = kmsClient.CreateGrant(createGrantRequest);
Python

有关详细信息,请参阅 适用于 Python (Boto3) 的 AWS 软件开发工具包 中的 create_grant 方法

# Create a grant # key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantee_principal = 'arn:aws:iam::111122223333:user/Alice' operation = ['GenerateDataKey'] response = kms_client.create_grant( KeyId=key_id, GranteePrincipal=grantee_principal, Operations=operation )
Ruby

有关详细信息,请参阅 https://docs.amazonaws.cn/sdk-for-ruby/v3/api/Aws/KMS/Client.html#create_grant-instance_method 中的 适用于 Ruby 的 AWS 开发工具包create_grant 实例方法。

# Create a grant # key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantee_principal = 'arn:aws:iam::111122223333:user/Alice' operation = ['GenerateDataKey'] response = kmsClient.create_grant({ key_id: key_id, grantee_principal: grantee_principal, operations: operation })
PHP

有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#creategrant 中的 适用于 PHP 的 AWS 开发工具包CreateGrant 方法

// Create a grant // // $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $granteePrincipal = "arn:aws:iam::111122223333:user/Alice"; $operation = ['GenerateDataKey'] $result = $KmsClient->createGrant([ 'GranteePrincipal' => $granteePrincipal, 'KeyId' => $keyId, 'Operations' => $operation ]);
Node.js

有关详情,请参阅 创建授予属性AWS SDK for JavaScript in Node.js.

// Create a grant // // const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; const GranteePrincipal = 'arn:aws:iam::111122223333:user/Alice'; const Operations: ["GenerateDataKey"]; kmsClient.createGrant({ KeyId, GranteePrincipal, Operations }, (err, data) => { ... });
PowerShell

要创建授权,请使用 New-KMSGrant cmdlet。

# Create a grant # $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' $granteePrincipal = 'arn:aws:iam::111122223333:user/Alice' $operation = 'GenerateDataKey' $response = New-KMSGrant -GranteePrincipal $granteePrincipal -KeyId $keyId -Operation $operation

要使用 AWS KMS PowerShell cmdlet,请安装 AWS.Tools.KeyManagementService 模块。有关更多信息,请参阅 适用于 Windows PowerShell 的 AWS 工具 用户指南

查看授予

要获得有关 AWS KMS 客户主密钥,使用 列表授予 操作。这些示例使用可选 Limits 参数,该参数确定操作返回的授权数量。

注意

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

在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。

Java

有关 Java 实施的详细信息,请参阅https://docs.amazonaws.cn/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kms/AWSKMSClient.html#listGrants-com.amazonaws.services.kms.model.ListGrantsRequest-中的 AWS SDK for Java API ReferencelistGrants 方法

// Listing grants on a CMK // // String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; Integer limit = 10; ListGrantsRequest req = new ListGrantsRequest().withKeyId(keyId).withLimit(limit); ListGrantsResult result = kmsClient.listGrants(req);
C#

有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceListGrantsListGrantsRequest.html 中的 适用于 .NET 的 AWS 开发工具包ListGrants 方法

// Listing grants on a CMK // // String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; int limit = 10; ListGrantsRequest listGrantsRequest = new ListGrantsRequest() { KeyId = keyId, Limit = limit }; ListGrantsResponse listGrantsResponse = kmsClient.ListGrants(listGrantsRequest);
Python

有关详细信息,请参阅 适用于 Python (Boto3) 的 AWS 软件开发工具包 中的 list_grants 方法

# Listing grants on a CMK # key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kms_client.list_grants( KeyId=key_id, Limit=10 )
Ruby

有关详细信息,请参阅 https://docs.amazonaws.cn/sdk-for-ruby/v3/api/Aws/KMS/Client.html#list_grants-instance_method 中的 适用于 Ruby 的 AWS 开发工具包list_grants 实例方法。

# Listing grants on a CMK # key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kmsClient.list_grants({ key_id: key_id, limit: 10 })
PHP

有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listgrants 中的 适用于 PHP 的 AWS 开发工具包ListGrants 方法

// Listing grants on a CMK // // $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $limit = 10; $result = $KmsClient->listGrants([ 'KeyId' => $keyId, 'Limit' => $limit, ]);
Node.js

有关详情,请参阅 listGrants属性AWS SDK for JavaScript in Node.js.

// Listing grants on a CMK // // const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; const Limit = 10; kmsClient.listGrants({ KeyId, Limit }, (err, data) => { ... });
PowerShell

要查看所有 AWS KMS 资助金 CMK,使用 获取KMSGrantList cmdlet。

为限制输出对象的数量,此示例使用 Select-Object cmdlet,而不是 Limit 参数,该参数在列表 cmdlet 中将被弃用。有关在 适用于 PowerShell 的 AWS 工具 中分页输出的帮助,请参阅使用 适用于 PowerShell 的 AWS 工具 的输出分页

# Listing grants on a CMK # $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' $limit = 10 $response = Get-KMSGrantList -KeyId $keyId | Select-Object -First $limit

要使用 AWS KMS PowerShell cmdlet,请安装 AWS.Tools.KeyManagementService 模块。有关更多信息,请参阅 适用于 Windows PowerShell 的 AWS 工具 用户指南

停用授予

注销资助金 AWS KMS 客户主密钥,使用 退休金 操作。在使用完授予后,您应停用它,以将其清除。

要注销资助金,请提供资助金标记,或同时提供资助金ID和 CMK ID。对于此操作, CMK ID必须为 赛诺菲的 CMK. 授权令牌由 CreateGrant 操作返回。授权 ID 由 CreateGrant 和 ListGrants 操作返回。

RetireGrant 不返回响应。要验证它是否有效,请使用 ListGrants 操作。

在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。

Java

有关详细信息,请参阅 https://docs.amazonaws.cn/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kms/AWSKMSClient.html#retireGrant-com.amazonaws.services.kms.model.RetireGrantRequest- 中的AWS SDK for Java API ReferenceretireGrant 方法

// Retire a grant // String grantToken = Place your grant token here; RetireGrantRequest req = new RetireGrantRequest().withGrantToken(grantToken); kmsClient.retireGrant(req);
C#

有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceRetireGrantRetireGrantRequest.html 中的 适用于 .NET 的 AWS 开发工具包RetireGrant 方法

// Retire a grant // String grantToken = "Place your grant token here"; RetireGrantRequest retireGrantRequest = new RetireGrantRequest() { GrantToken = grantToken }; kmsClient.RetireGrant(retireGrantRequest);
Python

有关详细信息,请参阅 适用于 Python (Boto3) 的 AWS 软件开发工具包 中的 retire_grant 方法

# Retire a grant grant_token = Place your grant token here response = kms_client.retire_grant( GrantToken=grant_token )
Ruby

有关详细信息,请参阅 https://docs.amazonaws.cn/sdk-for-ruby/v3/api/Aws/KMS/Client.html#retire_grant-instance_method 中的 适用于 Ruby 的 AWS 开发工具包retire_grant 实例方法。

# Retire a grant grant_token = Place your grant token here response = kmsClient.retire_grant({ grant_token: grant_token })
PHP

有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#retiregrant 中的 适用于 PHP 的 AWS 开发工具包RetireGrant 方法

// Retire a grant // $grantToken = 'Place your grant token here'; $result = $KmsClient->retireGrant([ 'GrantToken' => $grantToken, ]);
Node.js

有关详情,请参阅 注销授予财产AWS SDK for JavaScript in Node.js.

// Retire a grant // const GrantToken = 'Place your grant token here'; kmsClient.retireGrant({ GrantToken }, (err, data) => { ... });
PowerShell

要停用授权,请使用 Disable-KMSGrant cmdlet。要获取授予令牌,请使用 New-KMSGrant cmdlet。GrantToken 参数接受一个字符串,因此您不需要转换 Read-Host cmdlet 返回的输出。

# Retire a grant $grantToken = Read-Host -Message Place your grant token here Disable-KMSGrant -GrantToken $grantToken

要使用 AWS KMS PowerShell cmdlet,请安装 AWS.Tools.KeyManagementService 模块。有关更多信息,请参阅 适用于 Windows PowerShell 的 AWS 工具 用户指南

撤销授予

撤销授予 AWS KMS 客户主密钥,使用 撤销资助金 操作。您可以撤销授予,以显式拒绝依赖它的操作。

在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。

Java

有关详细信息,请参阅 https://docs.amazonaws.cn/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kms/AWSKMSClient.html#revokeGrant-com.amazonaws.services.kms.model.RevokeGrantRequest- 中的AWS SDK for Java API ReferencerevokeGrant 方法

// Revoke a grant on a CMK // // String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; // &fake-grant-id; String grantId = "grant1"; RevokeGrantRequest req = new RevokeGrantRequest().withKeyId(keyId).withGrantId(grantId); kmsClient.revokeGrant(req);
C#

有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceRevokeGrantRevokeGrantRequest.html 中的 适用于 .NET 的 AWS 开发工具包RevokeGrant 方法

// Revoke a grant on a CMK // // String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; // &fake-grant-id; String grantId = "grant1"; RevokeGrantRequest revokeGrantRequest = new RevokeGrantRequest() { KeyId = keyId, GrantId = grantId }; kmsClient.RevokeGrant(revokeGrantRequest);

要使用 AWS KMS PowerShell cmdlet,请安装 AWS.Tools.KeyManagementService 模块。有关更多信息,请参阅 适用于 Windows PowerShell 的 AWS 工具 用户指南

Python

有关详细信息,请参阅 适用于 Python (Boto3) 的 AWS 软件开发工具包 中的 revoke_grant 方法

# Revoke a grant on a CMK # key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # &fake-grant-id; grant_id = 'grant1' response = kms_client.revoke_grant( KeyId=key_id, GrantId=grant_id )
Ruby

有关详细信息,请参阅 https://docs.amazonaws.cn/sdk-for-ruby/v3/api/Aws/KMS/Client.html#revoke_grant-instance_method 中的 适用于 Ruby 的 AWS 开发工具包revoke_grant 实例方法。

# Revoke a grant on a CMK # key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # &fake-grant-id; grant_id = 'grant1' response = kmsClient.revoke_grant({ key_id: key_id, grant_id: grant_id })
PHP

有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#revokegrant 中的 适用于 PHP 的 AWS 开发工具包RevokeGrant 方法

// Revoke a grant on a CMK // // $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; // 将以下虚拟授权 ID 替换为有效的授权 ID $grantId = "grant1"; $result = $KmsClient->revokeGrant([ 'KeyId' => $keyId, 'GrantId' => $grantId, ]);
Node.js

有关详情,请参阅 撤销授予财产AWS SDK for JavaScript in Node.js.

// Revoke a grant on a CMK // // const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; // 将以下虚拟授权 ID 替换为有效的授权 ID const GrantId = 'grant1'; kmsClient.revokeGrant({ GrantId, KeyId }, (err, data) => { ... });
PowerShell

要撤销授权,请使用 Revoke-KMSGrant cmdlet。

# Revoke a grant on a CMK # $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # 将以下虚拟授权 ID 替换为有效的授权 ID $grantId = 'grant1' Revoke-KMSGrant -KeyId $keyId -GrantId $grantId

要使用 AWS KMS PowerShell cmdlet,请安装 AWS.Tools.KeyManagementService 模块。有关更多信息,请参阅 适用于 Windows PowerShell 的 AWS 工具 用户指南