AWS Key Management Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

处理授予

本主题中的示例使用 AWS KMS API 创建、查看、停用和撤销对 AWS KMS 客户主密钥 (CMK) 的授权。

创建授予

要为 AWS KMS 客户主密钥创建授予,请使用 CreateGrant 操作。

此示例使用您在AWS KMS中创建的 创建客户端 客户端对象。

JavaC#PythonRubyPHPNode.js
Java

有关详细信息,请参阅 AWS SDK for Java API Reference 中的 createGrant 方法

// Create a grant // // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN String keyId = "&example-key-arn-1;"; 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#

有关详细信息,请参阅 适用于 .NET 的 AWS 开发工具包 中的 CreateGrant 方法

// Create a grant // // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN 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 的 AWS 开发工具包 (Boto3) 中的 create_grant 方法

# Create a grant # 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN 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

有关详细信息,请参阅 适用于 Ruby 的 AWS 开发工具包 中的 create_grant 实例方法。

# Create a grant # 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' granteePrincipal = 'arn:aws:iam::111122223333:user/Alice' operation = ['GenerateDataKey'] response = kmsClient.create_grant({ key_id: keyId, grantee_principal: granteePrincipal, operations: operation })
PHP

有关详细信息,请参阅 适用于 PHP 的 AWS 开发工具包 中的 CreateGrant 方法

// Create a grant // // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN $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 中的 createGrant 属性

// Create a grant // // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN 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) => { ... });

查看授权

要获取有关对 AWS KMS 客户主密钥的授予的详细信息,请使用 ListGrants 操作。

此示例使用您在AWS KMS中创建的 创建客户端 客户端对象。

JavaC#PythonRubyPHPNode.js
Java

有关 Java 实施的详细信息,请参阅 AWS SDK for Java API Reference 中的 listGrants 方法

// Listing grants on a CMK // // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK 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#

有关详细信息,请参阅 适用于 .NET 的 AWS 开发工具包 中的 ListGrants 方法

// Listing grants on a CMK // // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK 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

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

# Listing grants on a CMK # 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK 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

有关详细信息,请参阅 适用于 Ruby 的 AWS 开发工具包 中的 list_grants 实例方法。

# Listing grants on a CMK # 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kmsClient.list_grants({ key_id: keyId, limit: 10 })
PHP

有关详细信息,请参阅 适用于 PHP 的 AWS 开发工具包 中的 ListGrants 方法

// Listing grants on a CMK // // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK 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

有关详细信息,请参阅 AWS SDK for JavaScript in Node.js 中的 listGrants 属性

// Listing grants on a CMK // // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK 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) => { ... });

停用授予

要为 AWS KMS 客户主密钥停用授予,请使用 RetireGrant 操作。在使用完授予后,您应停用它,以将其清除。

此示例使用您在AWS KMS中创建的 创建客户端 客户端对象。

JavaC#PythonRubyPHPNode.js
Java

有关详细信息,请参阅 AWS SDK for Java API Reference 中的 retireGrant 方法

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

有关详细信息,请参阅 适用于 .NET 的 AWS 开发工具包 中的 RetireGrant 方法

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

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

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

有关详细信息,请参阅 适用于 Ruby 的 AWS 开发工具包 中的 retire_grant 实例方法。

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

有关详细信息,请参阅 适用于 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 中的 retireGrant 属性

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

撤销授予

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

此示例使用您在AWS KMS中创建的 创建客户端 客户端对象。

JavaC#PythonRubyPHPNode.js
Java

有关详细信息,请参阅 AWS SDK for Java API Reference 中的 revokeGrant 方法

// Revoke a grant on a CMK // // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String grantId = "grant1"; RevokeGrantRequest req = new RevokeGrantRequest().withKeyId(keyId).withGrantId(grantId); kmsClient.revokeGrant(req);
C#

有关详细信息,请参阅 适用于 .NET 的 AWS 开发工具包 中的 RevokeGrant 方法

// Revoke a grant on a CMK // // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String grantId = "grant1"; RevokeGrantRequest revokeGrantRequest = new RevokeGrantRequest() { KeyId = keyId, GrantId = grantId }; kmsClient.RevokeGrant(revokeGrantRequest);
Python

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

# Revoke a grant on a CMK // 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grant_id = 'grant1' response = kms_client.revoke_grant( KeyId=key_id, GrantId=grant_id )
Ruby

有关详细信息,请参阅 适用于 Ruby 的 AWS 开发工具包 中的 revoke_grant 实例方法。

# Revoke a grant on a CMK # 使用有效的 CMK ID 或 ARN 替换以下虚拟 CMK ARN keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantId = 'grant1' response = kmsClient.revoke_grant({ key_id: keyId, grant_id: grantId })
PHP

有关详细信息,请参阅 适用于 PHP 的 AWS 开发工具包 中的 RevokeGrant 方法

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

有关详细信息,请参阅 AWS SDK for JavaScript in Node.js 中的 revokeGrant 属性

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