本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
处理授予
本主题中的示例使用 Amazon KMS API 创建、查看、停用和撤销对 Amazon KMS keys 的授权。有关在 Amazon KMS 中使用授权的更多详细信息,请参阅Amazon KMS 中的授权。
创建授予
要为 Amazon KMS key 创建授权,请使用 CreateGrant 操作。响应仅包括授权 ID 和授权令牌。要获取有关授权的详细信息,请使用 ListGrants 操作,如查看授予中所示。
这些示例创建了一个授权,以允许可以代入 ExampleKeyUser
角色的用户在使用 KeyId
参数标识的 KMS 密钥上调用 GenerateDataKey 操作。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 Amazon KMS 客户端对象。
- Java
-
有关详细信息,请参阅 Amazon SDK for Java API 参考中的 createGrant 方法。
// Create a grant // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String granteePrincipal = "arn:aws:iam::111122223333:role/ExampleKeyUser"; 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 中的 Amazon SDK for .NETCreateGrant 方法。
// Create a grant // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String granteePrincipal = "arn:aws:iam::111122223333:role/ExampleKeyUser"; String operation = GrantOperation.GenerateDataKey; CreateGrantRequest createGrantRequest = new CreateGrantRequest() { KeyId = keyId, GranteePrincipal = granteePrincipal, Operations = new List<string>() { operation } }; CreateGrantResponse createGrantResult = kmsClient.CreateGrant(createGrantRequest);
- Python
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
create_grant
方法。 # Create a grant # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantee_principal = 'arn:aws:iam::111122223333:role/ExampleKeyUser' operation = ['GenerateDataKey'] response = kms_client.create_grant( KeyId=key_id, GranteePrincipal=grantee_principal, Operations=operation )
- Ruby
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
create_grant
实例方法。# Create a grant # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantee_principal = 'arn:aws:iam::111122223333:role/ExampleKeyUser' 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 中的 Amazon SDK for PHPCreateGrant 方法。
// Create a grant // // Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $granteePrincipal = "arn:aws:iam::111122223333:role/ExampleKeyUser"; $operation = ['GenerateDataKey'] $result = $KmsClient->createGrant([ 'GranteePrincipal' => $granteePrincipal, 'KeyId' => $keyId, 'Operations' => $operation ]);
- Node.js
-
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 createGrant 属性。
// Create a grant // // Replace the following example key ARN with a valid key ID or key ARN const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; const GranteePrincipal = 'arn:aws:iam::111122223333:role/ExampleKeyUser'; const Operations: ["GenerateDataKey"]; kmsClient.createGrant({ KeyId, GranteePrincipal, Operations }, (err, data) => { ... });
- PowerShell
-
要创建授权,请使用 New-KMSGrant cmdlet。
# Create a grant # Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' $granteePrincipal = 'arn:aws:iam::111122223333:role/ExampleKeyUser' $operation = 'GenerateDataKey' $response = New-KMSGrant -GranteePrincipal $granteePrincipal -KeyId $keyId -Operation $operation
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅 Amazon Tools for Windows PowerShell 用户指南。
查看授予
要获取有关对 KMS 密钥的授权的详细信息,请使用 ListGrants 操作。
注意
ListGrants
响应中的 GranteePrincipal
字段通常包含授权的被授权者委托人。但是,当授权中的被授权者委托人是 Amazon 服务时,GranteePrincipal
字段包含服务委托人,该委托人可能表示多个不同的被授权者委托人。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 Amazon KMS 客户端对象。
这些示例使用可选 Limits
参数,该参数确定操作返回的授权数量。
- Java
-
有关 Java 实施的详细信息,请参阅中的 Amazon SDK for Java API 参考中的 listGrants 方法。
// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN 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 中的 Amazon SDK for .NETListGrants 方法。
// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN 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
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
list_grants
方法。 # Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN 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
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
list_grants
实例方法。# Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN 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 中的 Amazon SDK for PHPListGrants 方法。
// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN $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
-
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 listGrants 属性。
// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN 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
-
要查看 KMS 密钥的所有 Amazon KMS 授权的详细信息,请使用 Get-KMSgrantList cmdlet。
为限制输出对象的数量,此示例使用 Select-Object
cmdlet,而不是 Limit
参数,该参数在列表 cmdlet 中将被弃用。有关在 Amazon Tools for PowerShell 中分页输出的帮助,请参阅使用 Amazon Tools for PowerShell 的输出分页。 # Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN $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
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅 Amazon Tools for Windows PowerShell 用户指南。
您必须在每个 ListGrants
运算中指定 KMS 密钥。但是,您可以通过指定授权 ID 或被授权者委托人来进一步筛选授权列表。以下示例仅获取 KMS 密钥的授权,其中 test-engineer
角色是被授予者承担者。
- Java
-
有关 Java 实施的详细信息,请参阅中的 Amazon SDK for Java API 参考中的 listGrants 方法。
// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String grantee = "arn:aws:iam::111122223333:role/test-engineer"; ListGrantsRequest req = new ListGrantsRequest().withKeyId(keyId).withGranteePrincipal(grantee); ListGrantsResult result = kmsClient.listGrants(req);
- C#
-
有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceListGrantsListGrantsRequest.html 中的 Amazon SDK for .NETListGrants 方法。
// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String grantee = "arn:aws:iam::111122223333:role/test-engineer"; ListGrantsRequest listGrantsRequest = new ListGrantsRequest() { KeyId = keyId, GranteePrincipal = grantee }; ListGrantsResponse listGrantsResponse = kmsClient.ListGrants(listGrantsRequest);
- Python
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
list_grants
方法。 # Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantee = 'arn:aws:iam::111122223333:role/test-engineer' response = kms_client.list_grants( KeyId=key_id, GranteePrincipal=grantee )
- Ruby
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
list_grants
实例方法。# Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantee = 'arn:aws:iam::111122223333:role/test-engineer' response = kmsClient.list_grants({ key_id: keyId, grantee_principal: grantee })
- PHP
-
有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listgrants 中的 Amazon SDK for PHPListGrants 方法。
// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $grantee = 'arn:aws:iam::111122223333:role/test-engineer'; $result = $KmsClient->listGrants([ 'KeyId' => $keyId, 'GranteePrincipal' => $grantee, ]);
- Node.js
-
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 listGrants 属性。
// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; const Grantee = 'arn:aws:iam::111122223333:role/test-engineer'; kmsClient.listGrants({ KeyId, Grantee }, (err, data) => { ... });
- PowerShell
-
要查看 KMS 密钥的所有 Amazon KMS 授权的详细信息,请使用 Get-KMSgrantList cmdlet。
# Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' $grantee = 'arn:aws:iam::111122223333:role/test-engineer' $response = Get-KMSGrantList -KeyId $keyId -GranteePrincipal $grantee
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅 Amazon Tools for Windows PowerShell 用户指南。
停用授予
要停用 KMS 密钥的授权,请使用 RetireGrant 操作。在使用完授予后,您应停用它,以将其清除。
要停用授权,请提供授权令牌,或同时提供授权 ID 和 KMS 密钥 ID。对于此操作,KMS 密钥 ID 必须是 KMS 密钥的 Amazon Resource Name (ARN)。授权令牌由 CreateGrant 操作返回。授权 ID 由 CreateGrant 和 ListGrants 操作返回。
RetireGrant 不返回响应。要验证它是否有效,请使用 ListGrants 操作。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 Amazon KMS 客户端对象。
- Java
-
有关详细信息,请参阅 Amazon SDK for Java API 参考中的 retireGrant 方法。
// 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 中的 Amazon SDK for .NETRetireGrant 方法。
// Retire a grant // String grantToken = "
Place your grant token here
"; RetireGrantRequest retireGrantRequest = new RetireGrantRequest() { GrantToken = grantToken }; kmsClient.RetireGrant(retireGrantRequest); - Python
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
retire_grant
方法。 # Retire a grant grant_token =
Place your grant token here
response = kms_client.retire_grant( GrantToken=grant_token ) - Ruby
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
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 中的 Amazon SDK for PHPRetireGrant 方法。
// Retire a grant // $grantToken = '
Place your grant token here
'; $result = $KmsClient->retireGrant([ 'GrantToken' => $grantToken, ]); - Node.js
-
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 retireGrant 属性。
// Retire a grant // const GrantToken = '
Place your grant token here
'; kmsClient.retireGrant({ GrantToken }, (err, data) => { ... }); - PowerShell
-
要停用授权,请使用 Disable-KMSGrant cmdlet。要获取授予令牌,请使用 New-KMSGrant cmdlet。
GrantToken
参数接受一个字符串,因此您不需要转换 Read-Hostcmdlet 返回的输出。 # Retire a grant $grantToken = Read-Host -Message
Place your grant token here
Disable-KMSGrant -GrantToken $grantToken要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅 Amazon Tools for Windows PowerShell 用户指南。
撤销授予
要撤销对 KMS 密钥的授权,请使用 RevokeGrant 操作。您可以撤销授予,以显式拒绝依赖它的操作。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 Amazon KMS 客户端对象。
- Java
-
有关详细信息,请参阅 Amazon SDK for Java API 参考中的 revokeGrant 方法。
// Revoke a grant on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; // Replace the following example grant ID with a valid one 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 中的 Amazon SDK for .NETRevokeGrant 方法。
// Revoke a grant on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; // Replace the following example grant ID with a valid one String grantId = "grant1"; RevokeGrantRequest revokeGrantRequest = new RevokeGrantRequest() { KeyId = keyId, GrantId = grantId }; kmsClient.RevokeGrant(revokeGrantRequest);
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅 Amazon Tools for Windows PowerShell 用户指南。 - Python
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
revoke_grant
方法。 # Revoke a grant on a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # Replace the following example grant ID with a valid one grant_id = 'grant1' response = kms_client.revoke_grant( KeyId=key_id, GrantId=grant_id )
- Ruby
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
实例方法。revoke_grant
# Revoke a grant on a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # Replace the following example grant ID with a valid one 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 中的 Amazon SDK for PHPRevokeGrant 方法。
// Revoke a grant on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; // Replace the following example grant ID with a valid one $grantId = "grant1"; $result = $KmsClient->revokeGrant([ 'KeyId' => $keyId, 'GrantId' => $grantId, ]);
- Node.js
-
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 revokeGrant 属性。
// Revoke a grant on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; // Replace the following example grant ID with a valid one const GrantId = 'grant1'; kmsClient.revokeGrant({ GrantId, KeyId }, (err, data) => { ... });
- PowerShell
-
要撤销授权,请使用 Revoke-KMSGrant cmdlet。
# Revoke a grant on a KMS key # Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # Replace the following example grant ID with a valid one $grantId = 'grant1' Revoke-KMSGrant -KeyId $keyId -GrantId $grantId
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅 Amazon Tools for Windows PowerShell 用户指南。