ListGrants搭配使用 AWS SDK或 CLI - AWS Key Management Service

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

ListGrants搭配使用 AWS SDK或 CLI

以下代码示例演示如何使用 ListGrants

.NET
AWS SDK for .NET
注意

还有更多相关信息 GitHub。在中查找完整的示例,学习如何设置和运行 AWS 代码示例存储库

using System; using System.Threading.Tasks; using Amazon.KeyManagementService; using Amazon.KeyManagementService.Model; /// <summary> /// List the AWS Key Management Service (AWS KMS) grants that are associated with /// a specific key. /// </summary> public class ListGrants { public static async Task Main() { // The identifier of the AWS KMS key to disable. You can use the // key Id or the Amazon Resource Name (ARN) of the AWS KMS key. var keyId = "1234abcd-12ab-34cd-56ef-1234567890ab"; var client = new AmazonKeyManagementServiceClient(); var request = new ListGrantsRequest { KeyId = keyId, }; var response = new ListGrantsResponse(); do { response = await client.ListGrantsAsync(request); response.Grants.ForEach(grant => { Console.WriteLine($"{grant.GrantId}"); }); request.Marker = response.NextMarker; } while (response.Truncated); } }
  • 有关API详细信息,请参阅ListGrants中的 AWS SDK for .NET API参考

CLI
AWS CLI

要查看补助金 AWS KMS钥匙

以下list-grants示例显示了指定的所有授权 AWS 您账户中的亚马逊 DynamoDB 托管KMS密钥。该授权允许 DynamoDB 在将 DynamoDB 表写入磁盘之前代表您使用KMS密钥对其进行加密。你可以使用这样的命令来查看上面的授权 AWS 托管KMS密钥和客户管理的KMS密钥在 AWS 账户和区域。

此命令使用带有密钥 ID 的key-id参数来标识KMS密钥。您可以使用密钥 ID 或密钥ARN来识别KMS密钥。获取密钥 ID 或ARN密钥 AWS 托管KMS密钥,使用list-keyslist-aliases命令。

aws kms list-grants \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

输出显示,该授权授予了 Amazon DynamoDB 使用KMS密钥进行加密操作的权限,并允许其查看有关KMS密钥的详细信息 DescribeKey () 和停用授权 ()。RetireGrantEncryptionContextSubset 约束将这些权限限制为包含指定加密上下文对的请求。因此,授权中的权限仅对指定账户和 DynamoDB 表有效。

{ "Grants": [ { "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:subscriberId": "123456789012", "aws:dynamodb:tableName": "Services" } }, "IssuingAccount": "arn:aws:iam::123456789012:root", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59", "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "CreationDate": "2021-05-13T18:32:45.144000+00:00" } ] }

有关更多信息,请参阅中的资助 AWS KMSAWS 密钥管理服务开发人员指南

  • 有关API详细信息,请参阅ListGrants中的 AWS CLI 命令参考

Java
SDK适用于 Java 2.x
注意

还有更多相关信息 GitHub。在中查找完整的示例,学习如何设置和运行 AWS 代码示例存储库

/** * Asynchronously displays the grant IDs for the specified key ID. * * @param keyId the ID of the AWS KMS key for which to list the grants * @return a {@link CompletableFuture} that, when completed, will be null if the operation succeeded, or will throw a {@link RuntimeException} if the operation failed * @throws RuntimeException if there was an error listing the grants, either due to an {@link KmsException} or an unexpected error */ public CompletableFuture<Object> displayGrantIdsAsync(String keyId) { ListGrantsRequest grantsRequest = ListGrantsRequest.builder() .keyId(keyId) .limit(15) .build(); ListGrantsPublisher paginator = getAsyncClient().listGrantsPaginator(grantsRequest); return paginator.subscribe(response -> { response.grants().forEach(grant -> { logger.info("The grant Id is: " + grant.grantId()); }); }) .thenApply(v -> null) .exceptionally(ex -> { Throwable cause = ex.getCause(); if (cause instanceof KmsException) { throw new RuntimeException("Failed to list grants: " + cause.getMessage(), cause); } else { throw new RuntimeException("An unexpected error occurred: " + cause.getMessage(), cause); } }); }
  • 有关API详细信息,请参阅ListGrants中的 AWS SDK for Java 2.x API参考

Kotlin
SDK对于 Kotlin 来说
注意

还有更多相关信息 GitHub。在中查找完整的示例,学习如何设置和运行 AWS 代码示例存储库

suspend fun displayGrantIds(keyIdVal: String?) { val request = ListGrantsRequest { keyId = keyIdVal limit = 15 } KmsClient { region = "us-west-2" }.use { kmsClient -> val response = kmsClient.listGrants(request) response.grants?.forEach { grant -> println("The grant Id is ${grant.grantId}") } } }
  • 有关API详细信息,请参阅ListGrants中的 AWS SDK以供API参考 Kotlin。

Python
SDK适用于 Python (Boto3)
注意

还有更多相关信息 GitHub。在中查找完整的示例,学习如何设置和运行 AWS 代码示例存储库

class GrantManager: def __init__(self, kms_client): self.kms_client = kms_client def list_grants(self, key_id): """ Lists grants for a key. :param key_id: The ARN or ID of the key to query. :return: The grants for the key. """ answer = input(f"Ready to list grants on key {key_id} (y/n)? ") if answer.lower() == "y": try: grants = self.kms_client.list_grants(KeyId=key_id)["Grants"] except ClientError as err: logger.error( "Couldn't list grants for key %s. Here's why: %s", key_id, err.response["Error"]["Message"], ) else: print(f"Grants for key {key_id}:") pprint(grants) return grants
  • 有关API详细信息,请参阅ListGrants中的 AWS SDK供参考 Python (Boto3) API。

有关完整列表 AWS SDK开发者指南和代码示例,请参阅使用 AWS KMS 用一个 AWS SDK。本主题还包括有关入门的信息以及有关先前SDK版本的详细信息。