處理金鑰 - AWS Key Management Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

處理金鑰

此主題中的範例使用 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 中 AWSSDK 中的 createKey 屬性。 JavaScript

// Create a KMS key // const Description = 'Key for protecting critical data'; kmsClient.createKey({ Description }, (err, data) => { ... });
PowerShell

若要在中建立 KMS 金鑰 PowerShell,請使用新增KmsKey指令程式。

# Create a KMS key $desc = 'Key for protecting critical data' New-KmsKey -Description $desc

若要使用AWS KMS PowerShell 指令程式,請安裝 AWS.Tools。 KeyManagementService模塊。如需詳細資訊,請參閱《AWS Tools for Windows PowerShell 使用者指南》。

產生資料金鑰

若要產生對稱資料金鑰,請使用此作GenerateDataKey業。此操作會傳回純文字資料金鑰和在您指定的對稱加密 KMS 金鑰下加密的資料金鑰複本。您必須在每個命令中指定 KeySpecNumberOfBytes (但不能同時指定兩者)。

如需使用資料金鑰來加密資料的說明,請參閱 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 SDK 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-KMS DataKey 指令程式。

在輸出中,純文本密鑰(在Plaintext屬性中)和加密密鑰(在CiphertextBlob屬性中)是MemoryStream對象。若要將它們轉換為字串,請使用MemoryStream類別的方法,或是將MemoryStream物件轉換為字串的指令程式或函數,例如 Convert 模組中的 ConvertFrom-MemoryStreamConvertFrom-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 指令程式,請安裝 AWS.Tools。 KeyManagementService模塊。如需詳細資訊,請參閱《 使用者指南》AWS Tools for Windows PowerShell

檢視 AWS KMS key

若要取得有關的詳細資訊AWS KMS key,包括 KMS 金鑰 ARN 和金鑰狀態,請使用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 中的 AWSSDK 中的 describeKey 屬性。 JavaScript

// 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 金鑰的詳細資訊,請使用 G et-KmsKey 指令程式。

# 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 指令程式,請安裝 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 中 AWS SDK 中的 listKeys 屬性。 JavaScript

// List KMS keys in this account // const Limit = 10; kmsClient.listKeys({ Limit }, (err, data) => { ... });
PowerShell

若要取得帳戶和區域中所有 KMS 金鑰的金鑰識別碼和金鑰 ARN,請使用 G et-KmsKeyList 指令程式。

若要限制輸出物件的數量,此範例使用 Select-Object Cmdlet,而不是在清單 Cmdlet 中已取代的 Limit 參數。如需 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 指令程式,請安裝 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 中的 AWSSDK 中的 enableKey 屬性。 JavaScript

// 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 金鑰,請使用用KmsKey指令程式。

# 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 指令程式,請安裝 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 中的 AWSSDK 中的 disableKey 屬性。 JavaScript

// 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指令程式。

# 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 指令程式,請安裝 AWS.Tools。 KeyManagementService模塊。如需詳細資訊,請參閱《AWS Tools for Windows PowerShell 使用者指南》。