本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用密钥
本主题中的示例使用 AWS KMS API 创建、查看、启用和禁用 AWS KMS AWS KMS keys 并生成数据密钥。
创建 KMS 密钥
要创建 AWS KMS key(KMS 密钥),请使用CreateKey操作。本节中的示例创建一个对称加密 KMS 密钥。这些示例中使用的 Description
参数是可选的。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。
有关在 AWS KMS 控制台中创建 KMS 密钥的帮助,请参阅 创建密钥。
- Java
-
有关详细信息,请参阅 AWS 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#
-
有关详细信息,请参阅 AWS SDK for .NET 中的 CreateKey 方法。
// Create a KMS key // String desc = "Key for protecting critical data"; CreateKeyRequest req = new CreateKeyRequest() { Description = desc }; CreateKeyResponse response = kmsClient.CreateKey(req);
- Python
-
有关详细信息,请参阅 AWS SDK for Python (Boto3) 中的
create_key
方法。 # Create a KMS key desc = 'Key for protecting critical data' response = kms_client.create_key( Description=desc )
- Ruby
-
有关详细信息,请参阅 AWS SDK for Ruby 中的
create_key
实例方法。# Create a KMS key desc = 'Key for protecting critical data' response = kmsClient.create_key({ description: desc })
- PHP
-
有关详细信息,请参阅 AWS SDK for PHP 中的 CreateKey 方法。
// Create a KMS key // $desc = "Key for protecting critical data"; $result = $KmsClient->createKey([ 'Description' => $desc ]);
- Node.js
-
有关详细信息,请参阅 Node.js 软件开发工具包中的 create AWS Key 属性 JavaScript 。
// Create a KMS key // const Description = 'Key for protecting critical data'; kmsClient.createKey({ Description }, (err, data) => { ... });
- PowerShell
要在中创建 KMS 密钥 PowerShell,请使用 New-KmsKey cmdlet。
# Create a KMS key $desc = 'Key for protecting critical data' New-KmsKey -Description $desc
要使用 AWS KMS PowerShell cmdlet,请安装 aws.Tools。 KeyManagementService
模块。有关更多信息,请参阅 AWS Tools for Windows PowerShell 用户指南。
生成数据密钥
要生成对称数据密钥,请使用GenerateDataKey操作。此操作将返回一个明文数据密钥以及以您指定的对称加密 KMS 密钥加密的该数据密钥的副本。您必须在每个命令中指定 KeySpec
或 NumberOfBytes
(但不能同时指定这两者)。
在使用数据密钥加密数据如需帮助,请参阅 AWS Encryption SDK。您还可以使用数据密钥进行 HMAC 操作。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。
- Java
-
有关详细信息,请参阅《AWS SDK for JavaAPI 参考》中的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#
-
有关详细信息,请参阅 AWS SDK for .NET 中的 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() { KeyId = keyId, KeySpec = DataKeySpec.AES_256 }; GenerateDataKeyResponse dataKeyResponse = kmsClient.GenerateDataKey(dataKeyRequest); MemoryStream plaintextKey = dataKeyResponse.Plaintext; MemoryStream encryptedKey = dataKeyResponse.CiphertextBlob;
- Python
-
有关详细信息,请参阅 AWS 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
-
有关详细信息,请参阅 AWS 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
-
有关详细信息,请参阅 AWS SDK for PHP 中的 GenerateDataKey 方法。
// 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 AWS 软件开发工具包 JavaScript 中的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-DataKey KMS 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
要使用 AWS KMS PowerShell cmdlet,请安装 aws.Tools。 KeyManagementService
模块。有关更多信息,请参阅 AWS Tools for Windows PowerShell 用户指南。
查看 AWS KMS key
要获取有关(包括 KMS 密钥 ARN 和密钥状态)的详细信息,请使用操作。AWS KMS key DescribeKey
DescribeKey
未获得别名。要获取别名,请使用ListAliases操作。有关示例,请参阅使用别名。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。
有关在 AWS KMS 控制台中查看 KMS 密钥的帮助,请参阅 查看密钥。
- Java
-
有关详细信息,请参阅 AWS 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#
-
有关详细信息,请参阅 AWS SDK for .NET 中的 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 describeKeyRequest = new DescribeKeyRequest() { KeyId = keyId }; DescribeKeyResponse describeKeyResponse = kmsClient.DescribeKey(describeKeyRequest);
- Python
-
有关详细信息,请参阅 AWS 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
-
有关详细信息,请参阅 AWS 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
-
有关详细信息,请参阅 AWS SDK for PHP 中的 DescribeKey 方法。
// 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 软件开发工具包中的 AWS describe K JavaScript ey 属性。
// 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
要使用 AWS KMS PowerShell cmdlet,请安装 aws.Tools。 KeyManagementService
模块。有关更多信息,请参阅 AWS Tools for Windows PowerShell 用户指南。
获取 KMS 密钥的密钥 ID 和密钥 ARN
要获取的密钥 ID 和密钥 ARNAWS KMS keys,请使用ListKeys操作。这些示例使用可选 Limit
参数,该参数设置在每个调用中返回的最大 KMS 密钥数。有关在 AWS KMS 操作中识别 KMS 密钥的帮助信息,请参阅 密钥标识符 (KeyId)。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。
有关在 AWS KMS 控制台中查找密钥 ID 和密钥 ARN 的帮助,请参阅查找密钥 ID 和密钥 ARN。
- Java
-
有关详细信息,请参阅 AWS 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#
-
有关详细信息,请参阅 AWS SDK for .NET 中的 ListKeys 方法。
// List KMS keys in this account // int limit = 10; ListKeysRequest listKeysRequest = new ListKeysRequest() { Limit = limit }; ListKeysResponse listKeysResponse = kmsClient.ListKeys(listKeysRequest);
- Python
-
有关详细信息,请参阅 AWS SDK for Python (Boto3) 中的
list_keys
方法。 # List KMS keys in this account response = kms_client.list_keys( Limit=10 )
- Ruby
-
有关详细信息,请参阅 AWS SDK for Ruby 中的
list_keys
实例方法。# List KMS keys in this account response = kmsClient.list_keys({ limit: 10 })
- PHP
-
有关详细信息,请参阅 AWS SDK for PHP 中的 ListKeys 方法。
// List KMS keys in this account // $limit = 10; $result = $KmsClient->listKeys([ 'Limit' => $limit, ]);
- Node.js
有关详细信息,请参阅 Node.js 软件开发工具包中的 list AWS Keys 属性 JavaScript 。
// 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 中将被弃用。有关在 AWS Tools for PowerShell 中分页输出的帮助,请参阅使用 AWS Tools for PowerShell 的输出分页。 # List KMS keys in this account $limit = 10 Get-KmsKeyList | Select-Object -First $limit
要使用 AWS KMS PowerShell cmdlet,请安装 aws.Tools。 KeyManagementService
模块。有关更多信息,请参阅 AWS Tools for Windows PowerShell 用户指南。
启用 AWS KMS keys
要启用已禁用AWS KMS key,请使用EnableKey操作。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。
有关在 AWS KMS 控制台中启用和禁用 KMS 密钥的帮助,请参阅 启用和禁用密钥。
- Java
-
有关 Java 实施的详细信息,请参阅 AWS 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#
-
有关详细信息,请参阅 AWS SDK for .NET 中的 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 enableKeyRequest = new EnableKeyRequest() { KeyId = keyId }; kmsClient.EnableKey(enableKeyRequest);
- Python
-
有关详细信息,请参阅 AWS 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
-
有关详细信息,请参阅 AWS 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
-
有关详细信息,请参阅 AWS SDK for PHP 中的 EnableKey 方法。
// 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 软件开发工具包中的 AWSenable K JavaScript ey 属性。
// 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 密钥,请使用 En able-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
要使用 AWS KMS PowerShell cmdlet,请安装 aws.Tools。 KeyManagementService
模块。有关更多信息,请参阅 AWS Tools for Windows PowerShell 用户指南。
禁用 AWS KMS key
要禁用 KMS 密钥,请使用DisableKey操作。禁用 KMS 密钥可防止其在加密操作中使用。
在需要客户端对象的语言中,这些示例使用您在 创建客户端 中创建的 AWS KMS 客户端对象。
有关在 AWS KMS 控制台中启用和禁用 KMS 密钥的帮助,请参阅 启用和禁用密钥。
- Java
-
有关详细信息,请参阅 AWS 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#
-
有关详细信息,请参阅 AWS SDK for .NET 中的 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 disableKeyRequest = new DisableKeyRequest() { KeyId = keyId }; kmsClient.DisableKey(disableKeyRequest);
- Python
-
有关详细信息,请参阅 AWS 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
-
有关详细信息,请参阅 AWS 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
-
有关详细信息,请参阅 AWS SDK for PHP 中的 DisableKey 方法。
// 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 软件开发工具包中的 AWS d isable K JavaScript ey 属性。
// 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 密钥,请使用禁用-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
要使用 AWS KMS PowerShell cmdlet,请安装 aws.Tools。 KeyManagementService
模块。有关更多信息,请参阅 AWS Tools for Windows PowerShell 用户指南。