AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
处理授予
本主题中的示例使用 AWS KMS API 在 AWS KMS 客户主密钥 (CMKs) 上创建、查看、停用和撤销授权。有关在 AWS KMS 中使用授权的更多详细信息,请参阅使用授权.
创建授予
要为 创建授权AWS KMS,请使用 客户主密钥 CreateGrant 操作。响应仅包括授权 ID 和授权令牌。要获取有关授权的详细信息,请使用 ListGrants 操作,如 中所示查看授予。
这些示例创建一个授权,以允许账户中的 IAM 用户 Alice 对 参数标识的 调用 GenerateDataKeyCMK 操作KeyId
。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。
- Java
-
有关详细信息,请参阅 中的 createGrant AWS SDK for Java API Reference方法。
// Create a grant
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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.toString();
CreateGrantRequest request = new CreateGrantRequest()
.withKeyId(keyId)
.withGranteePrincipal(granteePrincipal)
.withOperations(operation);
CreateGrantResult result = kmsClient.createGrant(request);
- C#
-
有关详细信息,请参阅 中的 CreateGrant 适用于 .NET 的 AWS 开发工具包方法。
// Create a grant
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 中的 create_grant 方法适用于 Python (Boto3) 的 AWS 软件开发工具包.
# Create a grant
# 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 https://docs.amazonaws.cn/sdk-for-ruby/v3/api/Aws/KMS/Client.html#create_grant-instance_method 中的 适用于 Ruby 的 AWS 开发工具包create_grant. 实例方法。
# Create a grant
# 将以下示例键 ARN 替换为有效的键 ID 或键 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 = kmsClient.create_grant({
key_id: key_id,
grantee_principal: grantee_principal,
operations: operation
})
- PHP
-
有关详细信息,请参阅 中的 CreateGrant 适用于 PHP 的 AWS 开发工具包方法。
// Create a grant
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 中的 createGrant 属性AWS SDK for JavaScript in Node.js。
// Create a grant
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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) => {
...
});
- PowerShell
-
要创建授权,请使用 KMSGrant cmdlet。
# Create a grant
# 将以下示例键 ARN 替换为有效的键 ID 或键 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 = New-KMSGrant -GranteePrincipal $granteePrincipal -KeyId $keyId -Operation $operation
要使用 AWS KMS PowerShell cmdlet,请安装 AWS.Tools.KeyManagementService 模块。有关更多信息,请参阅 适用于 Windows PowerShell 的 AWS 工具 用户指南。
查看授予
要获取有关对 的授权的详细信息AWS KMS,请使用 客户主密钥 ListGrants 操作。
ListGrants
响应中的 GranteePrincipal
字段通常包含授权的被授权者委托人。但是,当授权中的被授权者委托人是 AWS 服务时,GranteePrincipal
字段包含服务委托人,该委托人可能表示多个不同的被授权者委托人。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。
这些示例使用可选 Limits
参数,该参数确定操作返回的授权数量。
- Java
-
有关 Java 实施的详细信息,请参阅 中的 listGrants AWS SDK for Java API Reference方法。
// Listing grants on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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#
-
有关详细信息,请参阅 中的 ListGrants 适用于 .NET 的 AWS 开发工具包方法。
// Listing grants on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 中的 list_grants 方法适用于 Python (Boto3) 的 AWS 软件开发工具包.
# Listing grants on a CMK
# 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 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
# 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 中的 ListGrants 适用于 PHP 的 AWS 开发工具包方法。
// Listing grants on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 中的 listGrants 属性AWS SDK for JavaScript in Node.js。
// Listing grants on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
要查看 的所有AWS KMS授权的详细信息CMK,请使用 KMSGrantList cmdlet。
为限制输出对象的数量,此示例使用 Select-Object cmdlet,而不是 Limit
参数,该参数在列表 cmdlet 中将被弃用。有关在 适用于 PowerShell 的 AWS 工具 中分页输出的帮助,请参阅使用 适用于 PowerShell 的 AWS 工具 的输出分页。
# Listing grants on a CMK
# 将以下示例键 ARN 替换为有效的键 ID 或键 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
要使用 AWS KMS PowerShell cmdlet,请安装 AWS.Tools.KeyManagementService 模块。有关更多信息,请参阅 适用于 Windows PowerShell 的 AWS 工具 用户指南。
您必须在每个CMK操作ListGrants
中指定 。但是,您可以通过指定授权 ID 或被授权委托人来进一步筛选授权列表。以下示例仅获取 test-engineer
角色为被授权委托人的 CMK 的授权。
- Java
-
有关 Java 实施的详细信息,请参阅 中的 listGrants AWS SDK for Java API Reference方法。
// Listing grants on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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#
-
有关详细信息,请参阅 中的 ListGrants 适用于 .NET 的 AWS 开发工具包方法。
// Listing grants on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 中的 list_grants 方法适用于 Python (Boto3) 的 AWS 软件开发工具包.
# Listing grants on a CMK
# 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 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
# 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 中的 ListGrants 适用于 PHP 的 AWS 开发工具包方法。
// Listing grants on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
有关详细信息,请参阅 中的 listGrants 属性AWS SDK for JavaScript in Node.js。
// Listing grants on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 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
-
要查看 的所有AWS KMS授权的详细信息CMK,请使用 KMSGrantList cmdlet。
# Listing grants on a CMK
# 将以下示例键 ARN 替换为有效的键 ID 或键 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
要使用 AWS KMS PowerShell cmdlet,请安装 AWS.Tools.KeyManagementService 模块。有关更多信息,请参阅 适用于 Windows PowerShell 的 AWS 工具 用户指南。
停用授予
要停用 的授权AWS KMS,请使用 客户主密钥 RetireGrant 操作。在使用完授予后,您应停用它,以将其清除。
要停用授权,请提供授权令牌,或同时提供授权 ID 和 CMK ID。对于此操作CMK,ID 必须是 的 Amazon CMK 资源名称 (ARN)。授权令牌由 CreateGrant 操作返回。授权 ID 由 CreateGrant 和 ListGrants 操作返回。
RetireGrant 不返回响应。要验证它是否有效,请使用 ListGrants 操作。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。
- Java
-
有关详细信息,请参阅 中的 retireGrant AWS SDK for Java API Reference方法。
// Retire a grant
//
String grantToken = Place your grant token here
;
RetireGrantRequest req = new RetireGrantRequest().withGrantToken(grantToken);
kmsClient.retireGrant(req);
- C#
-
有关详细信息,请参阅 中的 RetireGrant 适用于 .NET 的 AWS 开发工具包方法。
// Retire a grant
//
String grantToken = "Place your grant token here
";
RetireGrantRequest retireGrantRequest = new RetireGrantRequest()
{
GrantToken = grantToken
};
kmsClient.RetireGrant(retireGrantRequest);
- Python
-
有关详细信息,请参阅 中的 retire_grant 方法适用于 Python (Boto3) 的 AWS 软件开发工具包.
# 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
-
有关详细信息,请参阅 中的 RetireGrant 适用于 PHP 的 AWS 开发工具包方法。
// Retire a grant
//
$grantToken = 'Place your grant token here
';
$result = $KmsClient->retireGrant([
'GrantToken' => $grantToken,
]);
- Node.js
-
有关详细信息,请参阅 中的 retireGrant 属性AWS SDK for JavaScript in Node.js。
// Retire a grant
//
const GrantToken = 'Place your grant token here
';
kmsClient.retireGrant({ GrantToken }, (err, data) => {
...
});
- PowerShell
-
要停用授权,请使用 KMSGrant cmdlet。要获取授权令牌,请使用 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 的授权客户主密钥,请使用 RevokeGrant 操作。您可以撤销授予,以显式拒绝依赖它的操作。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。
- Java
-
有关详细信息,请参阅 中的 revokeGrant AWS SDK for Java API Reference方法。
// Revoke a grant on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 ARN
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#
-
有关详细信息,请参阅 中的 RevokeGrant 适用于 .NET 的 AWS 开发工具包方法。
// Revoke a grant on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 ARN
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
-
有关详细信息,请参阅 中的 revoke_grant 方法适用于 Python (Boto3) 的 AWS 软件开发工具包.
# Revoke a grant on a CMK
# 将以下示例键 ARN 替换为有效的键 ID 或键 ARN
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
# 将以下示例键 ARN 替换为有效的键 ID 或键 ARN
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
-
有关详细信息,请参阅 中的 RevokeGrant 适用于 PHP 的 AWS 开发工具包方法。
// Revoke a grant on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 ARN
$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
-
有关详细信息,请参阅 中的 revokeGrant 属性AWS SDK for JavaScript in Node.js。
// Revoke a grant on a CMK
//
// 将以下示例键 ARN 替换为有效的键 ID 或键 ARN
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
# 将以下示例键 ARN 替换为有效的键 ID 或键 ARN
$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 工具 用户指南。