本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用密钥
本主题中的示例使用 Amazon KMS API 创建、查看、启用和禁用 Amazon KMS Amazon KMS keys 并生成数据密钥。
创建 KMS 密钥
要创建 Amazon KMS key(KMS 密钥),请使用 CreateKey 操作。本节中的示例创建一个对称加密 KMS 密钥。这些示例中使用的 Description
参数是可选的。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 Amazon KMS 客户端对象。
有关在 Amazon KMS 控制台中创建 KMS 密钥的帮助,请参阅 创建密钥。
- Java
-
有关详细信息,请参阅 Amazon SDK for Java API 参考中的 createKey 方法。
// Create a KMS key // String desc = "Key for protecting critical data"; CreateKeyRequest req = new CreateKeyRequest().withDescription(desc); CreateKeyResult result = kmsClient.createKey(req);
- C#
-
有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceCreateKeyCreateKeyRequest.html 中的 Amazon SDK for .NETCreateKey 方法。
// Create a KMS key // String desc = "Key for protecting critical data"; CreateKeyRequest req = new CreateKeyRequest() { Description = desc }; CreateKeyResponse response = kmsClient.CreateKey(req);
- Python
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
create_key
方法。 # Create a KMS key desc = 'Key for protecting critical data' response = kms_client.create_key( Description=desc )
- Ruby
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
create_key
实例方法。# Create a KMS key desc = 'Key for protecting critical data' response = kmsClient.create_key({ description: desc })
- PHP
-
有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createkey 中的 Amazon SDK for PHPCreateKey 方法。
// Create a KMS key // $desc = "Key for protecting critical data"; $result = $KmsClient->createKey([ 'Description' => $desc ]);
- Node.js
-
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 createKey 属性。
// Create a KMS key // const Description = 'Key for protecting critical data'; kmsClient.createKey({ Description }, (err, data) => { ... });
- PowerShell
要在 PowerShell 中创建 KMS 密钥,请使用 New-KmsKey cmdlet。
# Create a KMS key $desc = 'Key for protecting critical data' New-KmsKey -Description $desc
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅《Amazon Tools for Windows PowerShell 用户指南》。
生成数据密钥
要生成对称数据密钥,请使用 GenerateDataKey 操作。此操作将返回一个明文数据密钥以及以您指定的对称加密 KMS 密钥加密的该数据密钥的副本。您必须在每个命令中指定 KeySpec
或 NumberOfBytes
(但不能同时指定这两者)。
在使用数据密钥加密数据如需帮助,请参阅 Amazon Encryption SDK。您还可以使用数据密钥进行 HMAC 操作。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 Amazon KMS 客户端对象。
- Java
-
有关详细信息,请参阅 Amazon SDK for Java API 参考中的 generateDataKey 方法。
// Generate a data key // // Replace the following example key ARN with any valid key identfier String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest(); dataKeyRequest.setKeyId(keyId); dataKeyRequest.setKeySpec("AES_256"); GenerateDataKeyResult dataKeyResult = kmsClient.generateDataKey(dataKeyRequest); ByteBuffer plaintextKey = dataKeyResult.getPlaintext(); ByteBuffer encryptedKey = dataKeyResult.getCiphertextBlob();
- C#
-
有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceGenerateDataKeyGenerateDataKeyRequest.html 中的 Amazon SDK for .NETGenerateDataKey 方法。
// Generate a data key // // Replace the following example key ARN with any valid key identfier String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest() { KeyId = keyId, KeySpec = DataKeySpec.AES_256 }; GenerateDataKeyResponse dataKeyResponse = kmsClient.GenerateDataKey(dataKeyRequest); MemoryStream plaintextKey = dataKeyResponse.Plaintext; MemoryStream encryptedKey = dataKeyResponse.CiphertextBlob;
- Python
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
generate_data_key
方法。 # Generate a data key # Replace the following example key ARN with any valid key identfier key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kms_client.generate_data_key( KeyId=key_id, KeySpec='AES_256' ) plaintext_key = response['Plaintext'] encrypted_key = response['CiphertextBlob']
- Ruby
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
generate_data_key
实例方法。# Generate a data key # Replace the following example key ARN with any valid key identfier key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kmsClient.generate_data_key({ key_id: key_id, key_spec: 'AES_256' }) plaintext_key = response.plaintext encrypted_key = response.ciphertext_blob
- PHP
-
有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#generatedatakey 中的 Amazon SDK for PHPGenerateDataKey 方法。
// Generate a data key // // Replace the following example key ARN with any valid key identfier $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $keySpec = 'AES_256'; $result = $KmsClient->generateDataKey([ 'KeyId' => $keyId, 'KeySpec' => $keySpec, ]); $plaintextKey = $result['Plaintext']; $encryptedKey = $result['CiphertextBlob'];
- Node.js
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 generateDataKey 属性。
// Generate a data key // // Replace the following example key ARN with any valid key identfier const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; const KeySpec = 'AES_256'; kmsClient.generateDataKey({ KeyId, KeySpec }, (err, data) => { if (err) console.log(err, err.stack); else { const { CiphertextBlob, Plaintext } = data; ... } });
- PowerShell
要生成对称数据密钥,请使用 New-KMSDataKey cmdlet。
在输出中,明文密钥(在
Plaintext
属性中)和加密密钥(在CiphertextBlob
属性中)是 MemoryStream对象。要将它们转换为字符串,请使用 MemoryStream
类的方法,或使用将MemoryStream
对象转换为字符串的 cmdlet 或函数,例如 Convert模块中的 ConvertFrom-MemoryStream 和 ConvertFrom-Base64 函数。 # Generate a data key # Replace the following example key ARN with any valid key identfier $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' $keySpec = 'AES_256' $response = New-KmsDataKey -KeyId $keyId -KeySpec $keySpec $plaintextKey = $response.Plaintext $encryptedKey = $response.CiphertextBlob
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅《Amazon Tools for Windows PowerShell 用户指南》。
查看 Amazon KMS key
要获取有关 Amazon KMS key 的详细信息(包括 KMS 密钥 ARN 和密钥状态),请使用 DescribeKey 操作。
DescribeKey
未获得别名。要获得别名,请使用 ListAliases 操作。有关示例,请参阅 使用别名。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 Amazon KMS 客户端对象。
有关在 Amazon KMS 控制台中查看 KMS 密钥的帮助,请参阅 查看密钥。
- Java
-
有关详细信息,请参阅 Amazon SDK for Java API 参考中的 describeKey 方法。
// Describe a KMS key // // Replace the following example key ARN with any valid key identfier String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; DescribeKeyRequest req = new DescribeKeyRequest().withKeyId(keyId); DescribeKeyResult result = kmsClient.describeKey(req);
- C#
-
有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceDescribeKeyDescribeKeyRequest.html 中的 Amazon SDK for .NETDescribeKey 方法。
// Describe a KMS key // // Replace the following example key ARN with any valid key identfier String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; DescribeKeyRequest describeKeyRequest = new DescribeKeyRequest() { KeyId = keyId }; DescribeKeyResponse describeKeyResponse = kmsClient.DescribeKey(describeKeyRequest);
- Python
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
describe_key
方法。 # Describe a KMS key # Replace the following example key ARN with any valid key identfier key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kms_client.describe_key( KeyId=key_id )
- Ruby
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
describe_key
实例方法。# Describe a KMS key # Replace the following example key ARN with any valid key identfier key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kmsClient.describe_key({ key_id: key_id })
- PHP
-
有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#describekey 中的 Amazon SDK for PHPDescribeKey 方法。
// Describe a KMS key // // Replace the following example key ARN with any valid key identfier $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $result = $KmsClient->describeKey([ 'KeyId' => $keyId, ]);
- Node.js
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 describeKey 属性。
// Describe a KMS key // // Replace the following example key ARN with any valid key identfier const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; kmsClient.describeKey({ KeyId }, (err, data) => { ... });
- PowerShell
要获取有关 KMS 密钥的详细信息,请使用 Get-KmsKey cmdlet。
# Describe a KMS key # Replace the following example key ARN with any valid key identfier $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' Get-KmsKey -KeyId $keyId
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅《Amazon Tools for Windows PowerShell 用户指南》。
获取 KMS 密钥的密钥 ID 和密钥 ARN
要获取 Amazon KMS keys 的密钥 ID 和密钥 ARN,请使用 ListKeys 操作。这些示例使用可选 Limit
参数,该参数设置在每个调用中返回的最大 KMS 密钥数。有关在 Amazon KMS 操作中识别 KMS 密钥的帮助信息,请参阅 密钥标识符 (KeyId)。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 Amazon KMS 客户端对象。
有关在 Amazon KMS 控制台中查找密钥 ID 和密钥 ARN 的帮助,请参阅查找密钥 ID 和密钥 ARN。
- Java
-
有关详细信息,请参阅 Amazon SDK for Java API 参考中的 listKeys 方法。
// List KMS keys in this account // Integer limit = 10; ListKeysRequest req = new ListKeysRequest().withLimit(limit); ListKeysResult result = kmsClient.listKeys(req);
- C#
-
有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceListKeysListKeysRequest.html 中的 Amazon SDK for .NETListKeys 方法。
// List KMS keys in this account // int limit = 10; ListKeysRequest listKeysRequest = new ListKeysRequest() { Limit = limit }; ListKeysResponse listKeysResponse = kmsClient.ListKeys(listKeysRequest);
- Python
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
list_keys
方法。 # List KMS keys in this account response = kms_client.list_keys( Limit=10 )
- Ruby
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
list_keys
实例方法。# List KMS keys in this account response = kmsClient.list_keys({ limit: 10 })
- PHP
-
有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeys 中的 Amazon SDK for PHPListKeys 方法。
// List KMS keys in this account // $limit = 10; $result = $KmsClient->listKeys([ 'Limit' => $limit, ]);
- Node.js
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 listKeys 属性。
// List KMS keys in this account // const Limit = 10; kmsClient.listKeys({ Limit }, (err, data) => { ... });
- PowerShell
要获取账户和区域中所有 KMS 密钥的密钥 ID 和密钥 ARN,请使用 Get-KmsKeyList cmdlet。
为限制输出对象的数量,此示例使用 Select-Object
cmdlet,而不是 Limit
参数,该参数在列表 cmdlet 中将被弃用。有关在 Amazon Tools for PowerShell 中分页输出的帮助,请参阅使用 Amazon Tools for PowerShell 的输出分页。 # List KMS keys in this account $limit = 10 Get-KmsKeyList | Select-Object -First $limit
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅《Amazon Tools for Windows PowerShell 用户指南》。
启用 Amazon KMS keys
要启用已禁用的 Amazon KMS key,请使用 EnableKey 操作。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 Amazon KMS 客户端对象。
有关在 Amazon KMS 控制台中启用和禁用 KMS 密钥的帮助,请参阅 启用和禁用密钥。
- Java
-
有关 Java 实施的详细信息,请参阅 Amazon SDK for Java API 参考中的 enableKey 方法。
// Enable 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"; EnableKeyRequest req = new EnableKeyRequest().withKeyId(keyId); kmsClient.enableKey(req);
- C#
-
有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceEnableKeyEnableKeyRequest.html 中的 Amazon SDK for .NETEnableKey 方法。
// Enable 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"; EnableKeyRequest enableKeyRequest = new EnableKeyRequest() { KeyId = keyId }; kmsClient.EnableKey(enableKeyRequest);
- Python
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
enable_key
方法。 # Enable 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.enable_key( KeyId=key_id )
- Ruby
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
enable_key
实例方法。# Enable 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.enable_key({ key_id: key_id })
- PHP
-
有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#enablekey 中的 Amazon SDK for PHPEnableKey 方法。
// Enable 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'; $result = $KmsClient->enableKey([ 'KeyId' => $keyId, ]);
- Node.js
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 enableKey 属性。
// Enable 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'; kmsClient.enableKey({ KeyId }, (err, data) => { ... });
- PowerShell
要启用 KMS 密钥,请使用 Enable-KmsKey cmdlet。
# Enable 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' Enable-KmsKey -KeyId $keyId
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅《Amazon Tools for Windows PowerShell 用户指南》。
禁用 Amazon KMS key
要禁用 KMS 密钥,请使用 DisableKey 操作。禁用 KMS 密钥可防止其在加密操作中使用。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 Amazon KMS 客户端对象。
有关在 Amazon KMS 控制台中启用和禁用 KMS 密钥的帮助,请参阅 启用和禁用密钥。
- Java
-
有关详细信息,请参阅 Amazon SDK for Java API 参考中的 disableKey 方法。
// Disable 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"; DisableKeyRequest req = new DisableKeyRequest().withKeyId(keyId); kmsClient.disableKey(req);
- C#
-
有关详细信息,请参阅 https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/KeyManagementService/MKeyManagementServiceDisableKeyDisableKeyRequest.html 中的 Amazon SDK for .NETDisableKey 方法。
// Disable 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"; DisableKeyRequest disableKeyRequest = new DisableKeyRequest() { KeyId = keyId }; kmsClient.DisableKey(disableKeyRequest);
- Python
-
有关详细信息,请参阅 Amazon SDK for Python (Boto3) 中的
disable_key
方法。 # Disable 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.disable_key( KeyId=key_id )
- Ruby
-
有关详细信息,请参阅 Amazon SDK for Ruby 中的
disable_key
实例方法。# Disable 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.disable_key({ key_id: key_id })
- PHP
-
有关详细信息,请参阅 https://docs.amazonaws.cn/aws-sdk-php/v3/api/api-kms-2014-11-01.html#disablekey 中的 Amazon SDK for PHPDisableKey 方法。
// Disable 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'; $result = $KmsClient->disableKey([ 'KeyId' => $keyId, ]);
- Node.js
有关详细信息,请参阅适用于 Node.js 中的 JavaScript 的 Amazon 开发工具包中的 disableKey 属性。
// Disable 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'; kmsClient.disableKey({ KeyId }, (err, data) => { ... });
- PowerShell
要禁用 KMS 密钥,请使用 Disable-KmsKey cmdlet。
# Disable 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' Disable-KmsKey -KeyId $keyId
要使用 Amazon KMS PowerShell cmdlets,请安装 AWS.Tools.KeyManagementService
模块。有关更多信息,请参阅 Amazon Tools for Windows PowerShell 用户指南。