AWS KMS 使用 的範例 AWS CLI - AWS Command Line Interface

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

AWS KMS 使用 的範例 AWS CLI

下列程式碼範例示範如何使用 AWS Command Line Interface 搭配 來執行動作和實作常見案例 AWS KMS。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會告訴您如何呼叫個別服務函數,但您可以在其相關情境中查看內容中的動作。

每個範例都包含完整原始程式碼的連結,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

下列程式碼範例示範如何使用 cancel-key-deletion

AWS CLI

取消客戶受管 KMS 金鑰的排程刪除

下列cancel-key-deletion範例會取消客戶受管 KMS 金鑰的排程刪除。

aws kms cancel-key-deletion \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

輸出:

{ "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

cancel-key-deletion命令成功時,排程刪除會取消。不過,KMS 金鑰的金鑰狀態為 Disabled,因此您無法在密碼編譯操作中使用 KMS 金鑰。若要還原其功能,請使用 enable-key命令。

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的排程和取消金鑰刪除AWS

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 CancelKeyDeletion

下列程式碼範例示範如何使用 connect-custom-key-store

AWS CLI

連接自訂金鑰存放區

下列connect-custom-key-store範例會重新連接指定的自訂金鑰存放區。您可以使用像這樣的命令來第一次連接自訂金鑰存放區,或重新連接中斷連線的金鑰存放區。

您可以使用此命令來連接 AWS CloudHSM 金鑰存放區或外部金鑰存放區。

aws kms connect-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0

此命令不會傳回任何輸出。若要驗證命令是否有效,請使用 describe-custom-key-stores命令。

如需有關連接 AWS CloudHSM 金鑰存放區的資訊,請參閱 AWS 金鑰管理服務開發人員指南中的連接和中斷 AWS 連接 CloudHSM 金鑰存放區。

如需有關連接外部金鑰存放區的資訊,請參閱 Key AWS Management Service 開發人員指南中的連接和中斷連接外部金鑰存放區。

下列程式碼範例示範如何使用 create-alias

AWS CLI

建立 KMS 金鑰的別名

下列create-alias命令會為金鑰 ID 所識別example-alias的 KMS 金鑰建立名為 的別名1234abcd-12ab-34cd-56ef-1234567890ab

別名名稱必須以 開頭alias/。請勿使用以 開頭的別名;alias/aws這些名稱會保留供 使用 AWS。

aws kms create-alias \ --alias-name alias/example-alias \ --target-key-id 1234abcd-12ab-34cd-56ef-1234567890ab

此命令不會傳回任何輸出。若要查看新的別名,請使用 list-aliases命令。

如需詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的使用別名

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 CreateAlias

下列程式碼範例示範如何使用 create-custom-key-store

AWS CLI

範例 1:建立 AWS CloudHSM 金鑰存放區

下列create-custom-key-store範例使用所需的參數建立由 AWS CloudHSM 叢集支援的 AWS CloudHSM 金鑰存放區。您也可以新增 custom-key-store-type``parameter with the default value: ``AWS_CLOUDHSM

若要在 CLI AWS 中指定trust-anchor-certificate命令的檔案輸入,需要 file://字首。

aws kms create-custom-key-store \ --custom-key-store-name ExampleCloudHSMKeyStore \ --cloud-hsm-cluster-id cluster-1a23b4cdefg \ --key-store-password kmsPswd \ --trust-anchor-certificate file://customerCA.crt

輸出:

{ "CustomKeyStoreId": cks-1234567890abcdef0 }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的建立 a AWS CloudHSM 金鑰存放區。 AWS

範例 2:建立具有公有端點連線能力的外部金鑰存放區

下列create-custom-key-store範例會建立透過網際網路與 AWS KMS 通訊的外部金鑰存放區 (XKS)。

在此範例中, XksProxyUriPath使用選用的 字首example-prefix

注意:如果您使用 AWS CLI 1.0 版,請在指定具有 HTTP 或 HTTPS 值的參數之前執行下列命令,例如 XksProxyUriEndpoint 參數。

aws configure set cli_follow_urlparam false

否則, AWS CLI 1.0 版會將 參數值取代為在該 URI 地址找到的內容。

aws kms create-custom-key-store \ --custom-key-store-name ExamplePublicEndpointXKS \ --custom-key-store-type EXTERNAL_KEY_STORE \ --xks-proxy-connectivity PUBLIC_ENDPOINT \ --xks-proxy-uri-endpoint "https://myproxy.xks.example.com" \ --xks-proxy-uri-path "/example-prefix/kms/xks/v1" \ --xks-proxy-authentication-credential "AccessKeyId=ABCDE12345670EXAMPLE, RawSecretAccessKey=DXjSUawnel2fr6SKC7G25CNxTyWKE5PF9XX6H/u9pSo="

輸出:

{ "CustomKeyStoreId": cks-2234567890abcdef0 }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的建立外部金鑰存放區。 AWS

範例 3:建立具有 VPC 端點服務連線的外部金鑰存放區

下列create-custom-key-store範例會建立使用 Amazon VPC 端點服務的外部金鑰存放區 (XKS),以與 AWS KMS 通訊。

注意:如果您使用 AWS CLI 1.0 版,請在指定具有 HTTP 或 HTTPS 值的參數之前執行下列命令,例如 XksProxyUriEndpoint 參數。

aws configure set cli_follow_urlparam false

否則, AWS CLI 1.0 版會將 參數值取代為在該 URI 地址找到的內容。

aws kms create-custom-key-store \ --custom-key-store-name ExampleVPCEndpointXKS \ --custom-key-store-type EXTERNAL_KEY_STORE \ --xks-proxy-connectivity VPC_ENDPOINT_SERVICE \ --xks-proxy-uri-endpoint "https://myproxy-private.xks.example.com" \ --xks-proxy-uri-path "/kms/xks/v1" \ --xks-proxy-vpc-endpoint-service-name "com.amazonaws.vpce.us-east-1.vpce-svc-example1" \ --xks-proxy-authentication-credential "AccessKeyId=ABCDE12345670EXAMPLE, RawSecretAccessKey=DXjSUawnel2fr6SKC7G25CNxTyWKE5PF9XX6H/u9pSo="

輸出:

{ "CustomKeyStoreId": cks-3234567890abcdef0 }

如需詳細資訊,請參閱 Key Management Service 開發人員指南中的建立外部金鑰存放區。 AWS

下列程式碼範例示範如何使用 create-grant

AWS CLI

建立授予

下列create-grant範例會建立授予,允許使用者exampleUser1234abcd-12ab-34cd-56ef-1234567890ab範例 KMS 金鑰上使用 decrypt命令。淘汰主體是 adminRole角色。只有在decrypt請求中的加密內容包含"Department": "IT"金鑰/值對時,授予才會使用EncryptionContextSubset授予限制來允許此許可。

aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::123456789012:user/exampleUser \ --operations Decrypt \ --constraints EncryptionContextSubset={Department=IT} \ --retiring-principal arn:aws:iam::123456789012:role/adminRole

輸出:

{ "GrantId": "1a2b3c4d2f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "GrantToken": "<grant token here>" }

若要檢視授予的詳細資訊,請使用 list-grants命令。

如需詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的 AWS KMS 中的授與

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 CreateGrant

下列程式碼範例示範如何使用 create-key

AWS CLI

範例 1:在 KMS 中建立客戶受管 AWS KMS 金鑰

下列create-key範例會建立對稱加密 KMS 金鑰。

若要建立基本 KMS 金鑰,即對稱加密金鑰,您不需要指定任何參數。這些參數的預設值會建立對稱加密金鑰。

由於此命令未指定金鑰政策,KMS 金鑰會取得以程式設計方式建立的 KMS 金鑰的預設金鑰政策。若要檢視金鑰政策,請使用 get-key-policy命令。若要變更金鑰政策,請使用 put-key-policy命令。

aws kms create-key

create-key 命令會傳回金鑰中繼資料,包括新 KMS 金鑰的金鑰 ID 和 ARN。您可以使用這些值來識別其他 KMS 操作中的 AWS KMS 金鑰。輸出不包含標籤。若要檢視 KMS 金鑰的標籤,請使用 list-resource-tags command

輸出:

{ "KeyMetadata": { "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": "2017-07-05T14:04:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "Description": "", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "AWS_KMS" "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

注意: create-key命令不允許您指定別名。若要為新的 KMS 金鑰建立別名,請使用 create-alias命令。

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的建立AWS 金鑰

範例 2:建立用於加密和解密的非對稱 RSA KMS 金鑰

下列create-key範例會建立 KMS 金鑰,其中包含用於加密和解密的非對稱 RSA 金鑰對。

aws kms create-key \ --key-spec RSA_4096 \ --key-usage ENCRYPT_DECRYPT

輸出:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2021-04-05T14:04:55-07:00", "CustomerMasterKeySpec": "RSA_4096", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "RSA_4096", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "AWS_KMS" } }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的 AWS KMS 中的非對稱金鑰。 AWS

範例 3:建立非對稱橢圓曲線 KMS 金鑰以進行簽署和驗證

建立非對稱 KMS 金鑰,其中包含用於簽署和驗證的非對稱橢圓曲線 (ECC) 金鑰對。即使 --key-usage ECC KMS 金鑰的唯一有效值SIGN_VERIFY是 參數也是必要的。

aws kms create-key \ --key-spec ECC_NIST_P521 \ --key-usage SIGN_VERIFY

輸出:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2019-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "ECC_NIST_P521", "Description": "", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "ECC_NIST_P521", "KeyState": "Enabled", "KeyUsage": "SIGN_VERIFY", "MultiRegion": false, "Origin": "AWS_KMS", "SigningAlgorithms": [ "ECDSA_SHA_512" ] } }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的 AWS KMS 中的非對稱金鑰。 AWS

範例 4:建立 HMAC KMS 金鑰

下列create-key範例會建立 384 位元 HMAC KMS 金鑰。即使--key-usage參數GENERATE_VERIFY_MAC是 HMAC KMS 金鑰的唯一有效值,仍需要 參數的值。

aws kms create-key \ --key-spec HMAC_384 \ --key-usage GENERATE_VERIFY_MAC

輸出:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2022-04-05T14:04:55-07:00", "CustomerMasterKeySpec": "HMAC_384", "Description": "", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "HMAC_384", "KeyState": "Enabled", "KeyUsage": "GENERATE_VERIFY_MAC", "MacAlgorithms": [ "HMAC_SHA_384" ], "MultiRegion": false, "Origin": "AWS_KMS" } }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的 AWS KMS 中的 HMAC 金鑰。 AWS

範例 4:建立多區域主要 KMS 金鑰

下列create-key範例會建立多區域主要對稱加密金鑰。由於所有參數的預設值都會建立對稱加密金鑰,因此此 KMS 金鑰只需要 --multi-region 參數。在 AWS CLI 中,若要指出布林值參數為 true,只要指定參數名稱即可。

aws kms create-key \ --multi-region

輸出:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef12345678990ab", "AWSAccountId": "111122223333", "CreationDate": "2021-09-02T016:15:21-09:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "mrk-1234abcd12ab34cd56ef12345678990ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": true, "MultiRegionConfiguration": { "MultiRegionKeyType": "PRIMARY", "PrimaryKey": { "Arn": "arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef12345678990ab", "Region": "us-west-2" }, "ReplicaKeys": [] }, "Origin": "AWS_KMS" } }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的 AWS KMS 中的非對稱金鑰。 AWS

範例 5:為匯入的金鑰材料建立 KMS 金鑰

下列create-key範例會建立不含金鑰材料的 KMS 金鑰。操作完成後,您可以將自己的金鑰材料匯入 KMS 金鑰。若要建立此 KMS 金鑰,請將 --origin 參數設定為 EXTERNAL

aws kms create-key \ --origin EXTERNAL

輸出:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2019-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "Description": "", "Enabled": false, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "PendingImport", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "EXTERNAL" } }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的在 AWS KMS 金鑰中匯入金鑰材料AWS

範例 6:在 a AWS CloudHSM 金鑰存放區中建立 KMS 金鑰

下列create-key範例會在指定的 AWS CloudHSM 金鑰存放區中建立 KMS 金鑰。操作會在 KMS 中建立 AWS KMS 金鑰及其中繼資料,並在與自訂金鑰存放區相關聯的 AWS CloudHSM 叢集中建立金鑰材料。--custom-key-store-id--origin 是必要參數。

aws kms create-key \ --origin AWS_CLOUDHSM \ --custom-key-store-id cks-1234567890abcdef0

輸出:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CloudHsmClusterId": "cluster-1a23b4cdefg", "CreationDate": "2019-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "CustomKeyStoreId": "cks-1234567890abcdef0", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "AWS_CLOUDHSM" } }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的 AWS CloudHSM 金鑰存放區。 AWS

範例 7:在外部金鑰存放區中建立 KMS 金鑰

下列create-key範例會在指定的外部金鑰存放區中建立 KMS 金鑰。此命令需要 --custom-key-store-id--origin--xks-key-id 參數。

--xks-key-id 參數指定外部金鑰管理器中現有對稱加密金鑰的 ID。此金鑰做為 KMS 金鑰的外部金鑰材料。 --origin 參數的值必須是 EXTERNAL_KEY_STOREcustom-key-store-id 參數必須識別連接到其外部金鑰存放區代理的外部金鑰存放區。

aws kms create-key \ --origin EXTERNAL_KEY_STORE \ --custom-key-store-id cks-9876543210fedcba9 \ --xks-key-id bb8562717f809024

輸出:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2022-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "CustomKeyStoreId": "cks-9876543210fedcba9", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "EXTERNAL_KEY_STORE", "XksKeyConfiguration": { "Id": "bb8562717f809024" } } }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的外部金鑰存放區。 AWS

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 CreateKey

下列程式碼範例示範如何使用 decrypt

AWS CLI

範例 1:使用對稱 KMS 金鑰 (Linux 和 macOS) 解密加密的訊息

下列decrypt命令範例示範使用 CLI AWS 解密資料的建議方法。此版本說明如何在對稱 KMS 金鑰下解密資料。

在 file.In 中提供 --ciphertext-blob 參數值的加密文字,使用 fileb://字首,告知 CLI 從二進位檔案讀取資料。如果檔案不在目前的目錄中,請輸入檔案的完整路徑。如需從 檔案讀取 AWS CLI 參數值的詳細資訊, 請參閱 Command Line Interface AWS 使用者指南中的從檔案 <https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html> 載入 CLI 參數,以及 AWS Command Line Tool 部落格中的本機檔案參數最佳實務 <https://aws.amazon.com/blogs/developer/best-practices-for-local-file-parameters/>。指定 KMS 金鑰以解密加密文字。使用對稱 KMS 金鑰解密時,不需要 --key-id 參數。 AWS KMS 可以取得用於加密加密加密加密文字中中繼資料之 KMS 金鑰的金鑰 ID。 AWS 但是指定您正在使用的 KMS 金鑰永遠是最佳實務。此實務確保您使用的是您想要的 KMS 金鑰,並避免您不小心使用您不信任的 KMS 金鑰解密加密文字。請求純文字輸出做為文字值。 --query 參數會告知 CLI 從輸出中只取得 Plaintext 欄位的值。--output 參數會以 text.Base64 形式傳回輸出。將純文字解碼並儲存在檔案中。下列範例會將 Plaintext 參數的值 (|) 輸送至 Base64 公用程式,以解碼該參數。然後,它會將解碼的輸出重新導向 (>) 至 ExamplePlaintext 檔案。

執行此命令之前,請將範例金鑰 ID 取代為來自您 AWS 帳戶的有效金鑰 ID。

aws kms decrypt \ --ciphertext-blob fileb://ExampleEncryptedFile \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --output text \ --query Plaintext | base64 \ --decode > ExamplePlaintextFile

此命令不會產生輸出。來自 decrypt命令的輸出會進行 base64 解碼,並儲存在 檔案中。

如需詳細資訊,請參閱 AWS Key Management Service API 參考中的解密

範例 2:使用對稱 KMS 金鑰解密加密的訊息 (Windows 命令提示)

下列範例與上一個範例相同,但它使用 certutil公用程式來對純文字資料進行 Base64-decode。此程序需要兩個命令,如下列範例所示。

執行此命令之前,請將範例金鑰 ID 取代為來自您 AWS 帳戶的有效金鑰 ID。

aws kms decrypt ^ --ciphertext-blob fileb://ExampleEncryptedFile ^ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab ^ --output text ^ --query Plaintext > ExamplePlaintextFile.base64

執行 certutil 命令。

certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile

輸出:

Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.

如需詳細資訊,請參閱 AWS Key Management Service API 參考中的解密

範例 3:使用非對稱 KMS 金鑰 (Linux 和 macOS) 解密加密的訊息

下列decrypt命令範例示範如何解密 RSA 非對稱 KMS 金鑰下加密的資料。

使用非對稱 KMS 金鑰時,需要指定用於加密純文字的演算法的 encryption-algorithm 參數。

執行此命令之前,請將範例金鑰 ID 取代為來自您 AWS 帳戶的有效金鑰 ID。

aws kms decrypt \ --ciphertext-blob fileb://ExampleEncryptedFile \ --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --encryption-algorithm RSAES_OAEP_SHA_256 \ --output text \ --query Plaintext | base64 \ --decode > ExamplePlaintextFile

此命令不會產生輸出。來自 decrypt命令的輸出會進行 base64 解碼,並儲存在 檔案中。

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的 AWS KMS 中的非對稱金鑰。 AWS

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的解密

下列程式碼範例示範如何使用 delete-alias

AWS CLI

刪除 AWS KMS 別名

下列delete-alias範例會刪除別名 alias/example-alias。別名名稱必須以別名/ 開頭。

aws kms delete-alias \ --alias-name alias/example-alias

此命令不會產生輸出。若要尋找別名,請使用 list-aliases命令。

如需詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的刪除別名

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 DeleteAlias

下列程式碼範例示範如何使用 delete-custom-key-store

AWS CLI

刪除自訂金鑰存放區

下列delete-custom-key-store範例會刪除指定的自訂金鑰存放區。

刪除 a AWS CloudHSM 金鑰存放區不會影響相關聯的 CloudHSM 叢集。刪除外部金鑰存放區不會影響相關聯的外部金鑰存放區代理、外部金鑰管理員或外部金鑰。

注意:您必須先排程刪除自訂金鑰存放區中的所有 KMS 金鑰,然後等待刪除這些 KMS 金鑰。然後,您必須中斷連接自訂金鑰存放區。如需在您的自訂金鑰存放區中尋找 KMS 金鑰的說明,請參閱 AWS 金鑰管理服務開發人員指南中的刪除 an AWS CloudHSM 金鑰存放區 (API)

delete-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0

此命令不會傳回任何輸出。若要確認自訂金鑰存放區已刪除,請使用 describe-custom-key-stores命令。

如需有關刪除 AWS CloudHSM 金鑰存放區的資訊,請參閱 AWS 金鑰管理服務開發人員指南中的刪除 a AWS CloudHSM 金鑰存放區。

如需有關刪除外部金鑰存放區的資訊,請參閱 金鑰AWS 管理服務開發人員指南中的刪除外部金鑰存放區。

下列程式碼範例示範如何使用 delete-imported-key-material

AWS CLI

從 KMS 金鑰刪除匯入的金鑰材料

下列delete-imported-key-material範例會刪除已匯入 KMS 金鑰的金鑰材料。

aws kms delete-imported-key-material \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

此命令不會產生輸出。若要驗證金鑰材料是否已刪除,請使用 describe-key命令來尋找 PendingImport或 的金鑰狀態PendingDeletion

如需詳細資訊,請參閱 金鑰AWS 管理服務開發人員指南中的刪除匯入的金鑰材料<https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-delete-key-material.html>。

下列程式碼範例示範如何使用 derive-shared-secret

AWS CLI

衍生共用秘密

下列derive-shared-secret範例使用金鑰協議演算法衍生共用秘密。

您必須使用非對稱 NIST 建議的橢圓曲線 (ECC) 或 SM2 (僅限中國區域) KMS 金鑰對,且KeyUsage值為 ,KEY_AGREEMENT才能呼叫 DeriveSharedSecret。

aws kms derive-shared-secret \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-agreement-algorithm ECDH \ --public-key "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvH3Yj0wbkLEpUl95Cv1cJVjsVNSjwGq3tCLnzXfhVwVvmzGN8pYj3U8nKwgouaHbBWNJYjP5VutbbkKS4Kv4GojwZBJyHN17kmxo8yTjRmjR15SKIQ8cqRA2uaERMLnpztIXdZp232PQPbWGxDyXYJ0aJ5EFSag"

輸出:

{ "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "SharedSecret": "MEYCIQCKZLWyTk5runarx6XiAkU9gv3lbwPO/pHa+DXFehzdDwIhANwpsIV2g/9SPWLLsF6p/hiSskuIXMTRwqrMdVKWTMHG", "KeyAgreementAlgorithm": "ECDH", "KeyOrigin": "AWS_KMS" }

如需詳細資訊,請參閱 AWS Key Management Service API 參考中的 DeriveSharedSecret

下列程式碼範例示範如何使用 describe-custom-key-stores

AWS CLI

範例 1:取得有關 a AWS CloudHSM 金鑰存放區的詳細資訊

下列describe-custom-key-store範例顯示指定 AWS CloudHSM 金鑰存放區的詳細資訊。命令對於所有類型的自訂金鑰存放區都是相同的,但輸出會因金鑰存放區類型而不同,對於外部金鑰存放區,則會有其連線選項。

根據預設,此命令會顯示帳戶和區域中所有自訂金鑰存放區的相關資訊。若要顯示特定自訂金鑰存放區的相關資訊,請使用 custom-key-store-namecustom-key-store-id 參數。

aws kms describe-custom-key-stores \ --custom-key-store-name ExampleCloudHSMKeyStore

此命令的輸出包含有關 AWS CloudHSM 金鑰存放區的實用詳細資訊,包括其連線狀態 (ConnectionState)。如果連線狀態為 FAILED,輸出會包含描述問題ConnectionErrorCode的欄位。

輸出:

{ "CustomKeyStores": [ { "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionState": "CONNECTED", "CreationDate": "2022-04-05T14:04:55-07:00", "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleExternalKeyStore", "TrustAnchorCertificate": "<certificate appears here>" } ] }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的檢視 AWS CloudHSM 金鑰存放區。 AWS

範例 2:取得具有公有端點連線的外部金鑰存放區詳細資訊

下列describe-custom-key-store範例顯示指定外部金鑰存放區的詳細資訊。命令對於所有類型的自訂金鑰存放區都是相同的,但輸出會因金鑰存放區類型而不同,對於外部金鑰存放區,則會有其連線選項。

根據預設,此命令會顯示帳戶和區域中所有自訂金鑰存放區的相關資訊。若要顯示特定自訂金鑰存放區的相關資訊,請使用 custom-key-store-namecustom-key-store-id 參數。

aws kms describe-custom-key-stores \ --custom-key-store-id cks-9876543210fedcba9

此命令的輸出包含有關外部金鑰存放區的實用詳細資訊,包括其連線狀態 (ConnectionState)。如果連線狀態為 FAILED,輸出會包含描述問題ConnectionErrorCode的欄位。

輸出:

{ "CustomKeyStores": [ { "CustomKeyStoreId": "cks-9876543210fedcba9", "CustomKeyStoreName": "ExampleXKS", "ConnectionState": "CONNECTED", "CreationDate": "2022-12-02T07:48:55-07:00", "CustomKeyStoreType": "EXTERNAL_KEY_STORE", "XksProxyConfiguration": { "AccessKeyId": "ABCDE12345670EXAMPLE", "Connectivity": "PUBLIC_ENDPOINT", "UriEndpoint": "https://myproxy.xks.example.com", "UriPath": "/example-prefix/kms/xks/v1" } } ] }

如需詳細資訊,請參閱 Key Management Service 開發人員指南中的檢視外部金鑰存放區。 AWS

範例 3:取得具有 VPC 端點服務連線之外部金鑰存放區的詳細資訊

下列describe-custom-key-store範例顯示指定外部金鑰存放區的詳細資訊。命令對於所有類型的自訂金鑰存放區都是相同的,但輸出會因金鑰存放區類型而不同,對於外部金鑰存放區,則會有其連線選項。

根據預設,此命令會顯示帳戶和區域中所有自訂金鑰存放區的相關資訊。若要顯示特定自訂金鑰存放區的相關資訊,請使用 custom-key-store-namecustom-key-store-id 參數。

aws kms describe-custom-key-stores \ --custom-key-store-id cks-2234567890abcdef0

此命令的輸出包含有關外部金鑰存放區的實用詳細資訊,包括其連線狀態 (ConnectionState)。如果連線狀態為 FAILED,輸出會包含描述問題ConnectionErrorCode的欄位。

輸出:

{ "CustomKeyStores": [ { "CustomKeyStoreId": "cks-3234567890abcdef0", "CustomKeyStoreName": "ExampleVPCExternalKeyStore", "ConnectionState": "CONNECTED", "CreationDate": "2022-12-22T07:48:55-07:00", "CustomKeyStoreType": "EXTERNAL_KEY_STORE", "XksProxyConfiguration": { "AccessKeyId": "ABCDE12345670EXAMPLE", "Connectivity": "VPC_ENDPOINT_SERVICE", "UriEndpoint": "https://myproxy-private.xks.example.com", "UriPath": "/kms/xks/v1", "VpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-example1" } } ] }

如需詳細資訊,請參閱 Key Management Service 開發人員指南中的檢視外部金鑰存放區。 AWS

下列程式碼範例示範如何使用 describe-key

AWS CLI

範例 1:尋找 KMS 金鑰的詳細資訊

下列describe-key範例會取得範例帳戶和區域中 Amazon S3 受 AWS 管金鑰的詳細資訊。您可以使用此命令來尋找受 AWS 管金鑰和客戶受管金鑰的詳細資訊。

若要指定 KMS 金鑰,請使用 key-id 參數。此範例使用別名名稱值,但您可以在此命令中使用金鑰 ID、金鑰 ARN、別名名稱或別名 ARN。

aws kms describe-key \ --key-id alias/aws/s3

輸出:

{ "KeyMetadata": { "AWSAccountId": "846764612917", "KeyId": "b8a9477d-836c-491f-857e-07937918959b", "Arn": "arn:aws:kms:us-west-2:846764612917:key/b8a9477d-836c-491f-857e-07937918959b", "CreationDate": 2017-06-30T21:44:32.140000+00:00, "Enabled": true, "Description": "Default KMS key that protects my S3 objects when no other key is defined", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "AWS", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的檢視AWS 金鑰

範例 2:取得 RSA 非對稱 KMS 金鑰的詳細資訊

下列describe-key範例取得用於簽署和驗證的非對稱 RSA KMS 金鑰的詳細資訊。

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

輸出:

{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": "2019-12-02T19:47:14.861000+00:00", "CustomerMasterKeySpec": "RSA_2048", "Enabled": false, "Description": "", "KeyState": "Disabled", "Origin": "AWS_KMS", "MultiRegion": false, "KeyManager": "CUSTOMER", "KeySpec": "RSA_2048", "KeyUsage": "SIGN_VERIFY", "SigningAlgorithms": [ "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512" ] } }

範例 3:取得多區域複本金鑰的詳細資訊

下列describe-key範例取得多區域複本金鑰的中繼資料。此多區域金鑰是對稱加密金鑰。任何多區域金鑰的describe-key命令輸出會傳回主金鑰及其所有複本的相關資訊。

aws kms describe-key \ --key-id arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab

輸出:

{ "KeyMetadata": { "MultiRegion": true, "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "CreationDate": "2021-06-28T21:09:16.114000+00:00", "Description": "", "Enabled": true, "KeyId": "mrk-1234abcd12ab34cd56ef1234567890ab", "KeyManager": "CUSTOMER", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "Origin": "AWS_KMS", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegionConfiguration": { "MultiRegionKeyType": "PRIMARY", "PrimaryKey": { "Arn": "arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "us-west-2" }, "ReplicaKeys": [ { "Arn": "arn:aws:kms:eu-west-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "eu-west-1" }, { "Arn": "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "ap-northeast-1" }, { "Arn": "arn:aws:kms:sa-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "sa-east-1" } ] } } }

範例 4:取得 HMAC KMS 金鑰的詳細資訊

下列describe-key範例會取得 HMAC KMS 金鑰的詳細資訊。

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

輸出:

{ "KeyMetadata": { "AWSAccountId": "123456789012", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": "2022-04-03T22:23:10.194000+00:00", "Enabled": true, "Description": "Test key", "KeyUsage": "GENERATE_VERIFY_MAC", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "HMAC_256", "MacAlgorithms": [ "HMAC_SHA_256" ], "MultiRegion": false } }
  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 DescribeKey

下列程式碼範例示範如何使用 disable-key-rotation

AWS CLI

停用 KMS 金鑰的自動輪換

下列disable-key-rotation範例會停用客戶受管 KMS 金鑰的自動輪換。若要重新啟用自動輪換,請使用 enable-key-rotation命令。

aws kms disable-key-rotation \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

此命令不會產生輸出。若要確認 KMS 金鑰的自動輪換已停用,請使用 get-key-rotation-status命令。

如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的輪換金鑰

下列程式碼範例示範如何使用 disable-key

AWS CLI

暫時停用 KMS 金鑰

下列範例使用 disable-key命令來停用客戶受管 KMS 金鑰。若要重新啟用 KMS 金鑰,請使用 enable-key命令。

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

此命令不會產生輸出。

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的啟用和停用AWS 金鑰

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 DisableKey

下列程式碼範例示範如何使用 disconnect-custom-key-store

AWS CLI

中斷連接自訂金鑰存放區

下列disconnect-custom-key-store範例會中斷自訂金鑰存放區與其 AWS CloudHSM 叢集的連線。您可以中斷連接金鑰存放區,以對問題進行故障診斷、更新其設定,或防止金鑰存放區中的 KMS 金鑰用於密碼編譯操作。

此命令對所有自訂金鑰存放區都相同,包括 AWS CloudHSM 金鑰存放區和外部金鑰存放區。

執行此命令之前,請將範例自訂金鑰存放區 ID 以有效的 ID 取代。

$ aws kms disconnect-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0

此命令不會產生任何輸出。請確認命令是否有效,請使用 describe-custom-key-stores命令。

如需中斷連線 a AWS CloudHSM 金鑰存放區的詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的連線和中斷連線 a AWS CloudHSM 金鑰存放區。

如需中斷連接外部金鑰存放區的詳細資訊,請參閱 金鑰AWS 管理服務開發人員指南中的連接和中斷連接外部金鑰存放區。

下列程式碼範例示範如何使用 enable-key-rotation

AWS CLI

啟用 KMS 金鑰的自動輪換

下列enable-key-rotation範例會啟用客戶受管 KMS 金鑰的自動輪換,輪換期間為 180 天。KMS 金鑰將從此命令完成之日起一年 (大約 365 天) 輪換,之後每年輪換一次。

--key-id 參數可識別 KMS 金鑰。此範例使用金鑰 ARN 值,但您可以使用 KMS 金鑰的金鑰 ID 或 ARN。 --rotation-period-in-days 參數會指定每個輪換日期之間的天數。指定介於 90 到 2560 天之間的值。如果未指定值,預設值為 365 天。

aws kms enable-key-rotation \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --rotation-period-in-days 180

此命令不會產生輸出。若要確認 KMS 金鑰已啟用,請使用 get-key-rotation-status命令。

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的輪換AWS 金鑰

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 EnableKeyRotation

下列程式碼範例示範如何使用 enable-key

AWS CLI

啟用 KMS 金鑰

下列enable-key範例會啟用客戶受管金鑰。您可以使用像這樣的命令來啟用您暫時停用的 KMS 金鑰,方法是使用 disable-key命令。您也可以使用它來啟用停用的 KMS 金鑰,因為其已排定刪除,且刪除已取消。

若要指定 KMS 金鑰,請使用 key-id 參數。此範例使用金鑰 ID 值,但您可以在此命令中使用金鑰 ID 或金鑰 ARN 值。

執行此命令之前,請將範例金鑰 ID 取代為有效的金鑰 ID。

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

此命令不會產生輸出。若要確認 KMS 金鑰已啟用,請使用 describe-key命令。請參閱describe-key輸出中 KeyStateEnabled 欄位的值。

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的啟用和停用AWS 金鑰

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 EnableKey

下列程式碼範例示範如何使用 encrypt

AWS CLI

範例 1:在 Linux 或 MacOS 上加密檔案的內容

下列encrypt命令示範使用 CLI AWS 加密資料的建議方法。

aws kms encrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --plaintext fileb://ExamplePlaintextFile \ --output text \ --query CiphertextBlob | base64 \ --decode > ExampleEncryptedFile

命令會執行數個動作:

使用 --plaintext 參數來指示要加密的資料。此參數值必須是 base64 編碼。 plaintext 參數的值必須是 base64 編碼,或者您必須使用 fileb://字首,告知 AWS CLI 從 檔案讀取二進位資料。如果檔案不在目前的目錄中,請輸入檔案的完整路徑。例如:fileb:///var/tmp/ExamplePlaintextFilefileb://C:\Temp\ExamplePlaintextFile。如需從 檔案讀取 AWS CLI 參數值的詳細資訊, 請參閱 AWS 命令列界面使用者指南 中的從檔案載入參數,以及 AWS 命令列工具部落格上本機檔案參數的最佳實務。使用 --output--query 參數來控制命令的輸出。這些參數會擷取加密的資料, 稱為加密文字 從命令的輸出。如需控制輸出的詳細資訊, 請參閱 命令列介面使用者指南中的控制命令輸出。 使用 base64 公用程式將擷取的輸出解碼為二進位資料。成功encrypt命令傳回的密碼文字是 base64 編碼的文字。 AWS 您必須先解碼此文字,才能使用 AWS CLI 來解密。將二進位加密文字儲存到 檔案。命令 (> ExampleEncryptedFile) 的最後一部分會將二進位加密文字儲存到 檔案,讓解密更容易。如需使用 CLI AWS 解密資料的範例命令,請參閱解密範例。

範例 2:使用 AWS CLI 加密 Windows 上的資料

此範例與上一個範例相同,但它使用 certutil工具而非 base64。此程序需要兩個命令,如下列範例所示。

aws kms encrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --plaintext fileb://ExamplePlaintextFile \ --output text \ --query CiphertextBlob > C:\Temp\ExampleEncryptedFile.base64 certutil -decode C:\Temp\ExampleEncryptedFile.base64 C:\Temp\ExampleEncryptedFile

範例 3:使用非對稱 KMS 金鑰加密

下列encrypt命令說明如何使用非對稱 KMS 金鑰加密純文字。--encryption-algorithm 參數是必要參數。如同所有 encrypt CLI 命令, plaintext 參數必須是 base64 編碼,或者您必須使用 fileb://字首,這可讓 AWS CLI 從 檔案讀取二進位資料。

aws kms encrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --encryption-algorithm RSAES_OAEP_SHA_256 \ --plaintext fileb://ExamplePlaintextFile \ --output text \ --query CiphertextBlob | base64 \ --decode > ExampleEncryptedFile

此命令不會產生輸出。

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的加密

下列程式碼範例示範如何使用 generate-data-key-pair-without-plaintext

AWS CLI

產生 ECC NIST P384 非對稱資料金鑰對

下列generate-data-key-pair-without-plaintext範例會請求 ECC NIST P384 金鑰對,以便在 外部使用 AWS。

命令會傳回純文字公有金鑰和在指定 KMS 金鑰下加密的私有金鑰複本。它不會傳回純文字私有金鑰。您可以安全地將加密的私有金鑰與加密的資料一起存放,並呼叫 AWS KMS 以在您需要使用時解密私有金鑰。

若要請求 ECC NIST P384 非對稱資料金鑰對,請使用 值為 的 key-pair-spec 參數ECC_NIST_P384

您指定的 KMS 金鑰必須是對稱加密 KMS 金鑰,也就是KeySpec值為 的 KMS 金鑰SYMMETRIC_DEFAULT

注意:此範例輸出中的值會截斷以顯示。

aws kms generate-data-key-pair-without-plaintext \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-pair-spec ECC_NIST_P384

輸出:

{ "PrivateKeyCiphertextBlob": "AQIDAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAFFxmiD134doUDzMGmfCEtcAAAHaTCCB2UGCSqGSIb3DQEHBqCCB1...", "PublicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA3A3eGMyPrvSn7+LdlJE1oUoQV5HpEuHAVbdOyND+NmYDH/mL1OSIEuLrcdZ5hrMH4pk83r40l...", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyPairSpec": "ECC_NIST_P384" }

PublicKeyPrivateKeyCiphertextBlob會以 base64 編碼格式傳回。

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的資料金鑰對AWS

下列程式碼範例示範如何使用 generate-data-key-pair

AWS CLI

產生 2048 位元 RSA 非對稱資料金鑰對

下列generate-data-key-pair範例會請求 2048 位元 RSA 非對稱資料金鑰對,以供 外部使用 AWS。命令會傳回純文字公有金鑰和純文字私有金鑰,以供立即使用和刪除,以及在指定的 KMS 金鑰下加密的私有金鑰複本。您可以使用加密的資料安全地存放加密的私有金鑰。

若要請求 2048 位元 RSA 非對稱資料金鑰對,請使用 值為 的 key-pair-spec 參數RSA_2048

您指定的 KMS 金鑰必須是對稱加密 KMS 金鑰,也就是KeySpec值為 的 KMS 金鑰SYMMETRIC_DEFAULT

注意:此範例輸出中的值會截斷以顯示。

aws kms generate-data-key-pair \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-pair-spec RSA_2048

輸出:

{ "PrivateKeyCiphertextBlob": "AQIDAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAFFxmiD134doUDzMGmfCEtcAAAHaTCCB2UGCSqGSIb3DQEHBqCCB1...", "PrivateKeyPlaintext": "MIIG/QIBADANBgkqhkiG9w0BAQEFAASCBucwggbjAgEAAoIBgQDcDd4YzI+u9Kfv4t2UkTWhShBXkekS4cBVt07I0P42ZgMf+YvU5IgS4ut...", "PublicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA3A3eGMyPrvSn7+LdlJE1oUoQV5HpEuHAVbdOyND+NmYDH/mL1OSIEuLrcdZ5hrMH4pk83r40l...", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyPairSpec": "RSA_2048" }

PublicKeyPrivateKeyPlaintextPrivateKeyCiphertextBlob會以 base64 編碼格式傳回。

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的資料金鑰對AWS

下列程式碼範例示範如何使用 generate-data-key-without-plaintext

AWS CLI

產生不含純文字金鑰的 256 位元對稱資料金鑰

下列generate-data-key-without-plaintext範例會請求 256 位元對稱資料金鑰的加密副本,以供 外部使用 AWS。當您準備好使用資料金鑰時,您可以呼叫 AWS KMS 來解密資料金鑰。

若要請求 256 位元資料金鑰,請使用 值為 的 key-spec 參數AES_256。若要請求 128 位元資料金鑰,請使用 值為 的 key-spec 參數AES_128。對於所有其他資料金鑰長度,請使用 number-of-bytes 參數。

您指定的 KMS 金鑰必須是對稱加密 KMS 金鑰,也就是金鑰規格值為 SYMMETRIC_DEFAULT 的 KMS 金鑰。

aws kms generate-data-key-without-plaintext \ --key-id "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --key-spec AES_256

輸出:

{ "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogL", "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

CiphertextBlob (加密的資料金鑰) 會以 base64 編碼格式傳回。

如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的資料金鑰

下列程式碼範例示範如何使用 generate-data-key

AWS CLI

範例 1:產生 256 位元對稱資料金鑰

下列generate-data-key範例會請求 256 位元對稱資料金鑰,以便在 外部使用 AWS。命令會傳回純文字資料金鑰,以供立即使用和刪除,以及在指定的 KMS 金鑰下加密的資料金鑰副本。加密的資料金鑰可以安全地跟加密資料一起存放。

若要請求 256 位元資料金鑰,請使用 值為 的 key-spec 參數AES_256。若要請求 128 位元資料金鑰,請使用 值為 的 key-spec 參數AES_128。對於所有其他資料金鑰長度,請使用 number-of-bytes 參數。

您指定的 KMS 金鑰必須是對稱加密 KMS 金鑰,也就是金鑰規格值為 SYMMETRIC_DEFAULT 的 KMS 金鑰。

aws kms generate-data-key \ --key-id alias/ExampleAlias \ --key-spec AES_256

輸出:

{ "Plaintext": "VdzKNHGzUAzJeRBVY+uUmofUGGiDzyB3+i9fVkh3piw=", "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogLqPWZconQhwHAIBEIA7d9AC7GeJJM34njQvg4Wf1d5sw0NIo1MrBqZa+YdhV8MrkBQPeac0ReRVNDt9qleAt+SHgIRF8P0H+7U=" }

Plaintext (純文字資料金鑰) 和 CiphertextBlob(加密資料金鑰) 會以 base64 編碼格式傳回。

如需詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的資料金鑰 <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys。

範例 2:產生 512 位元對稱資料金鑰

下列generate-data-key範例會請求 512 位元對稱資料金鑰以進行加密和解密。命令會傳回純文字資料金鑰以供立即使用和刪除,以及在指定的 KMS 金鑰下加密的資料金鑰複本。加密的資料金鑰可以安全地跟加密資料一起存放。

若要請求 128 或 256 位元以外的金鑰長度,請使用 number-of-bytes 參數。若要請求 512 位元資料金鑰,下列範例會使用 值為 64 (位元組) 的 number-of-bytes 參數。

您指定的 KMS 金鑰必須是對稱加密 KMS 金鑰,也就是金鑰規格值為 SYMMETRIC_DEFAULT 的 KMS 金鑰。

注意:此範例輸出中的值會截斷以顯示。

aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --number-of-bytes 64

輸出:

{ "CiphertextBlob": "AQIBAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAEnX/QQNmMwDfg2korNMEc8AAACaDCCAmQGCSqGSIb3DQEHBqCCAlUwggJRAgEAMIICSgYJKoZ...", "Plaintext": "ty8Lr0Bk6OF07M2BWt6qbFdNB+G00ZLtf5MSEb4al3R2UKWGOp06njAwy2n72VRm2m7z/Pm9Wpbvttz6a4lSo9hgPvKhZ5y6RTm4OovEXiVfBveyX3DQxDzRSwbKDPk/...", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

Plaintext (純文字資料金鑰) 和 CiphertextBlob(加密資料金鑰) 會以 base64 編碼格式傳回。

如需詳細資訊,請參閱 Key AWS Management Service 開發人員指南中的資料金鑰 <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys。

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 GenerateDataKey

下列程式碼範例示範如何使用 generate-random

AWS CLI

範例 1:產生 256 位元隨機位元組字串 (Linux 或 macOs)

下列generate-random範例會產生 256 位元 (32 位元組)、Base64 編碼的隨機位元組字串。此範例會解碼位元組字串,並將其儲存在隨機檔案中。

當您執行此命令時,必須使用 number-of-bytes 參數以位元組為單位指定隨機值的長度。

當您執行此命令時,不會指定 KMS 金鑰。隨機位元組字串與任何 KMS 金鑰無關。

根據預設, AWS KMS 會產生隨機數字。不過,如果您指定自訂金鑰存放區<https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html>,隨機位元組字串會在與自訂金鑰存放區相關聯的 AWS CloudHSM 叢集中產生。

此範例使用下列參數和值:

它使用值為 的必要--number-of-bytes參數32來請求 32 位元組 (256 位元) string.It 使用值為 的 --output 參數text來指示 CLI AWS 以文字形式傳回輸出。 而不是 JSON.It 使用 從 response.It 管道 ( | ) --query parameter擷取 Plaintext 屬性的值,命令的輸出到 base64 公用程式, 解碼擷取的 output.It 使用重新導向運算子 ( > ) 將解碼後的位元組字串儲存到 ExampleRandom file.It 使用重新導向運算子 ( > ) 將二進位密碼文字儲存到檔案。

aws kms generate-random \ --number-of-bytes 32 \ --output text \ --query Plaintext | base64 --decode > ExampleRandom

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Key Management Service API 參考中的 GenerateRandom

範例 2:產生 256 位元隨機數字 (Windows 命令提示)

下列範例使用 generate-random命令來產生 256 位元 (32 位元組)、Base64 編碼的隨機位元組字串。此範例會解碼位元組字串,並將其儲存在隨機檔案中。此範例與上一個範例相同,除了在 Windows 中使用 certutil 公用程式,在將隨機位元組字串儲存到 檔案之前,先對隨機位元組字串進行 base64 解碼。

首先,產生 base64 編碼的隨機位元組字串,並將其儲存在暫存檔案 中ExampleRandom.base64

aws kms generate-random \ --number-of-bytes 32 \ --output text \ --query Plaintext > ExampleRandom.base64

由於generate-random命令的輸出會儲存在檔案中,因此此範例不會產生輸出。

現在,請使用 certutil -decode命令來解碼 ExampleRandom.base64 檔案中的 base64 編碼位元組字串。然後,它會將解碼後的位元組字串儲存在 ExampleRandom 檔案中。

certutil -decode ExampleRandom.base64 ExampleRandom

輸出:

Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.

如需詳細資訊,請參閱 AWS Key Management Service API 參考中的 GenerateRandom

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 GenerateRandom

下列程式碼範例示範如何使用 get-key-policy

AWS CLI

將金鑰政策從一個 KMS 金鑰複製到另一個 KMS 金鑰

下列get-key-policy範例會從一個 KMS 金鑰取得金鑰政策,並將其儲存在文字檔案中。然後,它會使用文字檔案取代不同 KMS 金鑰的政策做為政策輸入。

由於 的 --policy 參數put-key-policy需要字串,您必須使用 --output text選項,將輸出傳回為文字字串,而非 JSON。

aws kms get-key-policy \ --policy-name default \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --query Policy \ --output text > policy.txt aws kms put-key-policy \ --policy-name default \ --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --policy file://policy.txt

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS KMS API 參考中的 PutKeyPolicy

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 GetKeyPolicy

下列程式碼範例示範如何使用 get-key-rotation-status

AWS CLI

擷取 KMS 金鑰的輪換狀態。

下列get-key-rotation-status範例會傳回指定 KMS 金鑰輪換狀態的相關資訊,包括是否啟用自動輪換、輪換期間和下一個排定的輪換日期。您可以在客戶受管 KMS 金鑰和 AWS 受管 KMS 金鑰上使用此命令。不過,所有 AWS 受管 KMS 金鑰每年都會自動輪換。

aws kms get-key-rotation-status \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

輸出:

{ "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyRotationEnabled": true, "NextRotationDate": "2024-02-14T18:14:33.587000+00:00", "RotationPeriodInDays": 365 }

如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的輪換金鑰

下列程式碼範例示範如何使用 get-parameters-for-import

AWS CLI

取得將金鑰材料匯入 KMS 金鑰所需的項目

下列get-parameters-for-import範例會取得您匯入金鑰資料至 KMS 金鑰所需的公有金鑰和匯入權杖。當您使用 import-key-material命令時,請務必使用由相同get-parameters-for-import命令中傳回的公有金鑰加密的匯入字符和金鑰材料。此外,您在此命令中指定的包裝演算法必須是您使用公有金鑰加密金鑰材料的演算法。

若要指定 KMS 金鑰,請使用 key-id 參數。此範例使用金鑰 ID,但您可以在此命令中使用金鑰 ID 或金鑰 ARN。

aws kms get-parameters-for-import \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --wrapping-algorithm RSAES_OAEP_SHA_256 \ --wrapping-key-spec RSA_2048

輸出:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "PublicKey": "<public key base64 encoded data>", "ImportToken": "<import token base64 encoded data>", "ParametersValidTo": 1593893322.32 }

如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的下載公有金鑰和匯入權杖

下列程式碼範例示範如何使用 get-public-key

AWS CLI

範例 1:下載非對稱 KMS 金鑰的公有金鑰

下列get-public-key範例會下載非對稱 KMS 金鑰的公有金鑰。

除了傳回公有金鑰之外,輸出還包含您在 AWS KMS 外安全地使用公有金鑰所需的資訊,包括金鑰使用方式和支援的加密演算法。

aws kms get-public-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

輸出:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "PublicKey": "jANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAl5epvg1/QtJhxSi2g9SDEVg8QV/...", "CustomerMasterKeySpec": "RSA_4096", "KeyUsage": "ENCRYPT_DECRYPT", "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ] }

如需在 KMS 中使用非對稱 AWS KMS 金鑰的詳細資訊,請參閱 AWS Key Management Service API 參考中的使用對稱和非對稱金鑰

範例 2:將公有金鑰轉換為 DER 格式 (Linux 和 macOS)

下列get-public-key範例會下載非對稱 KMS 金鑰的公有金鑰,並將其儲存在 DER 檔案中。

當您在 CLI AWS 中使用 get-public-key命令時,它會傳回以 BaseBase64-encoded X.509 公有金鑰。此範例會以文字的形式取得 PublicKey 屬性的值。它 Base64-decodes ,PublicKey並將其儲存在 public_key.der 檔案中。output 參數會以文字形式傳回輸出,而非 JSON。--query 參數只會取得 PublicKey 屬性,而不是您在 AWS KMS 外安全地使用公有金鑰所需的屬性。

執行此命令之前,請將範例金鑰 ID 取代為來自您 AWS 帳戶的有效金鑰 ID。

aws kms get-public-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --output text \ --query PublicKey | base64 --decode > public_key.der

此命令不會產生輸出。

如需在 KMS 中使用非對稱 AWS KMS 金鑰的詳細資訊,請參閱 AWS Key Management Service API 參考中的使用對稱和非對稱金鑰

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 GetPublicKey

下列程式碼範例示範如何使用 import-key-material

AWS CLI

將金鑰材料匯入 KMS 金鑰

下列import-key-material範例會將金鑰材料上傳至不使用金鑰材料建立的 KMS 金鑰。KMS 金鑰的金鑰狀態必須為 PendingImport

此命令使用您以get-parameters-for-import命令傳回的公有金鑰加密的金鑰材料。它也會使用來自相同get-parameters-for-import命令的匯入字符。

expiration-model 參數指出金鑰材料會在 valid-to 參數指定的日期和時間自動過期。當金鑰材料過期時, AWS KMS 會刪除金鑰材料,KMS 金鑰的金鑰狀態會變更為 ,Pending import而 KMS 金鑰會變成無法使用。若要還原 KMS 金鑰,您必須重新匯入相同的金鑰材料。若要使用不同的金鑰材料,您必須建立新的 KMS 金鑰。

執行此命令之前,請將範例金鑰 ID 取代為有效的金鑰 ID 或來自您 AWS 帳戶的金鑰 ARN。

aws kms import-key-material \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --encrypted-key-material fileb://EncryptedKeyMaterial.bin \ --import-token fileb://ImportToken.bin \ --expiration-model KEY_MATERIAL_EXPIRES \ --valid-to 2021-09-21T19:00:00Z

此命令不會產生輸出。

如需匯入金鑰材料的詳細資訊,請參閱 金鑰管理服務開發人員指南中的匯入金鑰材料AWS

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 ImportKeyMaterial

下列程式碼範例示範如何使用 list-aliases

AWS CLI

範例 1:列出 AWS 帳戶和區域中的所有別名

下列範例使用 list-aliases命令來列出 AWS 帳戶預設區域中的所有別名。輸出包含與 AWS 受管 KMS 金鑰和客戶受管 KMS 金鑰相關聯的別名。

aws kms list-aliases

輸出:

{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/testKey", "AliasName": "alias/testKey", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/FinanceDept", "AliasName": "alias/FinanceDept", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/dynamodb", "AliasName": "alias/aws/dynamodb", "TargetKeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/ebs", "AliasName": "alias/aws/ebs", "TargetKeyId": "0987ab65-43cd-21ef-09ab-87654321cdef" }, ... ] }

範例 2:列出特定 KMS 金鑰的所有別名

下列範例使用 list-aliases命令及其key-id參數來列出與特定 KMS 金鑰相關聯的所有別名。

每個別名只會與一個 KMS 金鑰相關聯,但 KMS 金鑰可以有多個別名。此命令非常有用,因為 AWS KMS 主控台只會為每個 KMS 金鑰列出一個別名。若要尋找 KMS 金鑰的所有別名,您必須使用 list-aliases命令。

此範例使用 --key-id 參數 KMS 金鑰的金鑰 ID,但您可以在此命令中使用金鑰 ID、金鑰 ARN、別名名稱或別名 ARN。

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

輸出:

{ "Aliases": [ { "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/oregon-test-key", "AliasName": "alias/oregon-test-key" }, { "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/project121-test", "AliasName": "alias/project121-test" } ] }

如需詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的使用別名

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 ListAliases

下列程式碼範例示範如何使用 list-grants

AWS CLI

在 AWS KMS 金鑰上檢視授予

下列list-grants範例顯示您帳戶中 Amazon DynamoDB 指定 AWS 受管 KMS 金鑰上的所有授予。此授與可讓 DynamoDB 代表您使用 KMS 金鑰來加密 DynamoDB 資料表,然後再寫入磁碟。您可以使用像這樣的命令來檢視 AWS 帳戶和區域中 AWS 受管 KMS 金鑰和客戶受管 KMS 金鑰的授予。

此命令使用 key-id 參數搭配金鑰 ID 來識別 KMS 金鑰。您可以使用金鑰 ID 或金鑰 ARN 來識別 KMS 金鑰。若要取得 AWS 受管 KMS 金鑰的金鑰 ID 或金鑰 ARN,請使用 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 金鑰管理服務開發人員指南中的 AWS KMS 中的授與

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 ListGrants

下列程式碼範例示範如何使用 list-key-policies

AWS CLI

取得 KMS 金鑰的金鑰政策名稱

下列list-key-policies範例會取得範例帳戶和區域中客戶受管金鑰的金鑰政策名稱。您可以使用此命令來尋找 AWS 受管金鑰和客戶受管金鑰的金鑰政策名稱。

由於唯一有效的金鑰政策名稱是 default,因此此命令沒有用。

若要指定 KMS 金鑰,請使用 key-id 參數。此範例使用金鑰 ID 值,但您可以在此命令中使用金鑰 ID 或金鑰 ARN。

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

輸出:

{ "PolicyNames": [ "default" ] }

如需 AWS KMS 金鑰政策的詳細資訊,請參閱 金鑰管理服務開發人員指南中的在 AWS KMS 中使用金鑰政策AWS

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 ListKeyPolicies

下列程式碼範例示範如何使用 list-key-rotations

AWS CLI

擷取所有已完成金鑰材料輪換的相關資訊

下列list-key-rotations範例列出指定 KMS 金鑰之所有已完成金鑰材料輪換的相關資訊。

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

輸出:

{ "Rotations": [ { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "RotationDate": "2024-03-02T10:11:36.564000+00:00", "RotationType": "AUTOMATIC" }, { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "RotationDate": "2024-04-05T15:14:47.757000+00:00", "RotationType": "ON_DEMAND" } ], "Truncated": false }

如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的輪換金鑰

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 ListKeyRotations

下列程式碼範例示範如何使用 list-keys

AWS CLI

取得帳戶和區域中的 KMS 金鑰

下列list-keys範例取得 帳戶和區域中的 KMS 金鑰。此命令會同時傳回 AWS 受管金鑰和客戶受管金鑰。

aws kms list-keys

輸出:

{ "Keys": [ { "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, { "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "KeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" } ] }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的檢視AWS 金鑰

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 ListKeys

下列程式碼範例示範如何使用 list-resource-tags

AWS CLI

取得 KMS 金鑰上的標籤

下列list-resource-tags範例會取得 KMS 金鑰的標籤。若要在 KMS 金鑰上新增或取代資源標籤,請使用 tag-resource命令。輸出顯示此 KMS 金鑰有兩個資源標籤,每個標籤都有金鑰和值。

若要指定 KMS 金鑰,請使用 key-id 參數。此範例使用金鑰 ID 值,但您可以在此命令中使用金鑰 ID 或金鑰 ARN。

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

輸出:

{ "Tags": [ { "TagKey": "Dept", "TagValue": "IT" }, { "TagKey": "Purpose", "TagValue": "Test" } ], "Truncated": false }

如需在 AWS KMS 中使用標籤的詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的標記金鑰

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 ListResourceTags

下列程式碼範例示範如何使用 list-retirable-grants

AWS CLI

檢視委託人可以淘汰的授予

下列list-retirable-grants範例顯示ExampleAdmin使用者可在 AWS 帳戶和區域中的 KMS 金鑰上淘汰的所有授予。您可以使用像這樣的命令來檢視任何帳戶主體可以在 AWS 帳戶和區域中的 KMS 金鑰上淘汰的授予。

必要retiring-principal參數的值必須是帳戶、使用者或角色的 Amazon Resource Name (ARN)。

您無法在此命令retiring-principal中為 的值指定服務,即使服務可以是淘汰主體。若要尋找特定服務為淘汰委託人的授予,請使用 list-grants命令。

輸出顯示ExampleAdmin使用者有權淘汰帳戶和區域中兩個不同 KMS 金鑰的授予。除了淘汰委託人之外,帳戶還具有淘汰帳戶中任何授予的許可。

aws kms list-retirable-grants \ --retiring-principal arn:aws:iam::111122223333:user/ExampleAdmin

輸出:

{ "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "GrantId": "156b69c63cb154aa21f59929ff19760717be8d9d82b99df53e18b94a15a5e88e", "Name": "", "CreationDate": 2021-01-14T20:17:36.419000+00:00, "GranteePrincipal": "arn:aws:iam::111122223333:user/ExampleUser", "RetiringPrincipal": "arn:aws:iam::111122223333:user/ExampleAdmin", "IssuingAccount": "arn:aws:iam::111122223333:root", "Operations": [ "Encrypt" ], "Constraints": { "EncryptionContextSubset": { "Department": "IT" } } }, { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GrantId": "8c94d1f12f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "Name": "", "CreationDate": "2021-02-02T19:49:49.638000+00:00", "GranteePrincipal": "arn:aws:iam::111122223333:role/ExampleRole", "RetiringPrincipal": "arn:aws:iam::111122223333:user/ExampleAdmin", "IssuingAccount": "arn:aws:iam::111122223333:root", "Operations": [ "Decrypt" ], "Constraints": { "EncryptionContextSubset": { "Department": "IT" } } } ], "Truncated": false }

如需詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的 AWS KMS 中的授與

下列程式碼範例示範如何使用 put-key-policy

AWS CLI

變更 KMS 金鑰的金鑰政策

下列put-key-policy範例會變更客戶受管金鑰的金鑰政策。

若要開始,請建立金鑰政策並將其儲存在本機 JSON 檔案中。在此範例中,檔案為 key_policy.json。您也可以指定金鑰政策做為 policy 參數的字串值。

此金鑰政策中的第一個陳述式提供 AWS 帳戶使用 IAM 政策來控制對 KMS 金鑰的存取的許可。第二個陳述式提供test-user使用者在 KMS 金鑰上執行 describe-keylist-keys命令的許可。

key_policy.json 的內容:

{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" }, { "Sid" : "Allow Use of Key", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:user/test-user" }, "Action" : [ "kms:DescribeKey", "kms:ListKeys" ], "Resource" : "*" } ] }

若要識別 KMS 金鑰,此範例會使用金鑰 ID,但您也可以使用金鑰 ARN。若要指定金鑰政策,命令會使用 policy 參數。若要指出政策位於檔案中,會使用必要的file://字首。識別所有支援的作業系統上的檔案時,需要此字首。最後, 命令會使用 值為 的 policy-name 參數default。如果未指定政策名稱,則預設值為 default。唯一有效的值為 default

aws kms put-key-policy \ --policy-name default \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --policy file://key_policy.json

此命令不會產生任何輸出。若要驗證命令是否有效,請使用 get-key-policy命令。下列範例命令會取得相同 KMS 金鑰的金鑰政策。值為 的 output 參數會text傳回易於讀取的文字格式。

aws kms get-key-policy \ --policy-name default \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --output text

輸出:

{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" }, { "Sid" : "Allow Use of Key", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:user/test-user" }, "Action" : [ "kms:Describe", "kms:List" ], "Resource" : "*" } ] }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的變更金鑰政策AWS

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 PutKeyPolicy

下列程式碼範例示範如何使用 re-encrypt

AWS CLI

範例 1:在不同的對稱 KMS 金鑰 (Linux 和 macOS) 下重新加密訊息。

下列re-encrypt命令範例示範使用 AWS CLI 重新加密資料的建議方法。

在 file.In 中提供 --ciphertext-blob 參數值的加密文字,使用 fileb://字首,告知 CLI 從二進位檔案讀取資料。如果檔案不在目前的目錄中,請輸入檔案的完整路徑。如需從 檔案讀取 AWS CLI 參數值的詳細資訊, 請參閱 AWS 命令列界面使用者指南中的從檔案載入 AWS CLI 參數 <https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html>,以及 AWS 命令列工具部落格中的本機檔案參數最佳實務 <https://aws.amazon.com/blogs/developer/best-practices-for-local-file-parameters/>。指定來源 KMS 金鑰。 會解密加密文字。使用對稱加密 KMS 金鑰解密時,不需要 --source-key-id 參數。 AWS KMS 可以取得用來加密加密加密文字 Blob 中中繼資料資料的 KMS 金鑰。但是指定您正在使用的 KMS 金鑰永遠是最佳實務。此實務可確保您使用您打算使用的 KMS 金鑰,並防止您使用不信任的 KMS 金鑰意外解密加密文字。指定目的地 KMS 金鑰,這會重新加密資料。--destination-key-id參數一律為必要項目。此範例使用金鑰 ARN,但您可以使用任何有效的金鑰識別符。請求純文字輸出做為文字值。 --query 參數會告知 CLI 僅從輸出取得 Plaintext 欄位的值。--output 參數會以文字傳回輸出。Base64 會解碼純文字,並將其儲存在檔案中。下列範例會將 Plaintext 參數的值 (|) 輸送至 Base64 公用程式,以解碼該參數。然後,它會將解碼的輸出重新導向 (>) 至 ExamplePlaintext 檔案。

執行此命令之前,請將範例金鑰 IDs 取代為您 AWS 帳戶中的有效金鑰識別符。

aws kms re-encrypt \ --ciphertext-blob fileb://ExampleEncryptedFile \ --source-key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --destination-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --query CiphertextBlob \ --output text | base64 --decode > ExampleReEncryptedFile

此命令不會產生輸出。來自 re-encrypt命令的輸出會進行 base64 解碼,並儲存在 檔案中。

如需詳細資訊,請參閱 AWS Key Management Service API 參考中的 ReEncrypt <https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html。

範例 2:在不同的對稱 KMS 金鑰 (Windows 命令提示) 下重新加密訊息。

下列re-encrypt命令範例與上一個命令範例相同,但它使用 certutil公用程式來對純文字資料進行 Base64-decode。此程序需要兩個命令,如下列範例所示。

執行此命令之前,請將範例金鑰 ID 取代為來自您 AWS 帳戶的有效金鑰 ID。

aws kms re-encrypt ^ --ciphertext-blob fileb://ExampleEncryptedFile ^ --source-key-id 1234abcd-12ab-34cd-56ef-1234567890ab ^ --destination-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 ^ --query CiphertextBlob ^ --output text > ExampleReEncryptedFile.base64

然後使用 certutil公用程式

certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile

輸出:

Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.

如需詳細資訊,請參閱 AWS Key Management Service API 參考中的 ReEncrypt <https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html。

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 ReEncrypt

下列程式碼範例示範如何使用 retire-grant

AWS CLI

淘汰客戶主金鑰的授予

下列retire-grant範例會從 KMS 金鑰刪除授予。

下列範例命令會指定 grant-idkey-id 參數。key-id 參數的值必須是 KMS 金鑰的金鑰 ARN。

aws kms retire-grant \ --grant-id 1234a2345b8a4e350500d432bccf8ecd6506710e1391880c4f7f7140160c9af3 \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

此命令不會產生輸出。若要確認授予已淘汰,請使用 list-grants命令。

如需詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的淘汰和撤銷授予

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 RetireGrant

下列程式碼範例示範如何使用 revoke-grant

AWS CLI

撤銷客戶主金鑰的授予

下列revoke-grant範例會從 KMS 金鑰刪除授予。下列範例命令會指定 grant-idkey-id 參數。key-id 參數的值可以是 KMS 金鑰的金鑰 ID 或金鑰 ARN。

aws kms revoke-grant \ --grant-id 1234a2345b8a4e350500d432bccf8ecd6506710e1391880c4f7f7140160c9af3 \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

此命令不會產生輸出。若要確認授予已撤銷,請使用 list-grants命令。

如需詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的淘汰和撤銷授予

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 RevokeGrant

下列程式碼範例示範如何使用 rotate-key-on-demand

AWS CLI

執行 KMS 金鑰的隨需輪換

下列rotate-key-on-demand範例會立即為指定的 KMS 金鑰啟動金鑰材料輪換。

aws kms rotate-key-on-demand \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

輸出:

{ "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }

如需詳細資訊,請參閱 Key AWS Management Service 開發人員指南中的如何執行隨需金鑰輪換

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的 RotateKeyOnDemand

下列程式碼範例示範如何使用 schedule-key-deletion

AWS CLI

排程刪除客戶受管 KMS 金鑰。

下列schedule-key-deletion範例會排程要在 15 天內刪除的指定客戶受管 KMS 金鑰。

--key-id 參數可識別 KMS 金鑰。此範例使用金鑰 ARN 值,但您可以使用金鑰 ID 或 KMS 金鑰的 ARN。 --pending-window-in-days 參數會指定 7-30 天等待期的長度。根據預設,等待期間為 30 天。此範例指定 15 的值,該值會指示 AWS 命令完成後 15 天永久刪除 KMS 金鑰。

aws kms schedule-key-deletion \ --key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --pending-window-in-days 15

回應包含金鑰 ARN、金鑰狀態、等待期間 (PendingWindowInDays),以及以 Unix 時間表示的刪除日期。若要在本機時間檢視刪除日期,請使用 AWS KMS 主控台。金鑰PendingDeletion狀態為 的 KMS 金鑰無法用於密碼編譯操作。

{ "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "DeletionDate": "2022-06-18T23:43:51.272000+00:00", "KeyState": "PendingDeletion", "PendingWindowInDays": 15 }

如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的刪除金鑰

下列程式碼範例示範如何使用 sign

AWS CLI

範例 1:產生訊息的數位簽章

下列sign範例會產生短訊息的密碼編譯簽章。命令的輸出包含 base-64 編碼Signature欄位,您可以使用 verify命令進行驗證。

您必須指定要簽署的訊息,以及非對稱 KMS 金鑰支援的簽署演算法。若要取得 KMS 金鑰的簽署演算法,請使用 describe-key命令。

在 AWS CLI 2.0 中, message 參數的值必須是 Base64-encoded。或者,您可以將訊息儲存在檔案中,並使用 fileb:// 字首,告知 AWS CLI 從檔案讀取二進位資料。

執行此命令之前,請將範例金鑰 ID 取代為來自您 AWS 帳戶的有效金鑰 ID。金鑰 ID 必須代表金鑰用量為 SIGN_VERIFY 的非對稱 KMS 金鑰。

msg=(echo 'Hello World' | base64) aws kms sign \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://UnsignedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256

輸出:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Signature": "ABCDEFhpyVYyTxbafE74ccSvEJLJr3zuoV1Hfymz4qv+/fxmxNLA7SE1SiF8lHw80fKZZ3bJ...", "SigningAlgorithm": "RSASSA_PKCS1_V1_5_SHA_256" }

如需在 AWS KMS 中使用非對稱 KMS 金鑰的詳細資訊,請參閱 金鑰管理服務開發人員指南中的 AWS KMS 中的非對稱金鑰。 AWS

範例 2:在 檔案 (Linux 和 macOs) 中儲存數位簽章

下列sign範例會為儲存在本機檔案中的短訊息產生密碼編譯簽章。命令也會從回應取得 Signature 屬性,Base64-decodes該屬性,並將其儲存在 ExampleSignature 檔案中。您可以在驗證簽章的verify命令中使用簽章檔案。

sign命令需要 Base64-encoded的訊息,以及非對稱 KMS 金鑰支援的簽署演算法。若要取得 KMS 金鑰支援的簽署演算法,請使用 describe-key命令。

執行此命令之前,請將範例金鑰 ID 取代為來自您 AWS 帳戶的有效金鑰 ID。金鑰 ID 必須代表金鑰用量為 SIGN_VERIFY 的非對稱 KMS 金鑰。

echo 'hello world' | base64 > EncodedMessage aws kms sign \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://EncodedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256 \ --output text \ --query Signature | base64 --decode > ExampleSignature

此命令不會產生輸出。此範例會擷取輸出的 Signature 屬性,並將其儲存在檔案中。

如需在 AWS KMS 中使用非對稱 KMS 金鑰的詳細資訊,請參閱 金鑰管理服務開發人員指南中的 AWS KMS 中的非對稱金鑰。 AWS

  • 如需 API 詳細資訊,請參閱登入AWS CLI 命令參考

下列程式碼範例示範如何使用 tag-resource

AWS CLI

將標籤新增至 KMS 金鑰

下列tag-resource範例會將 "Purpose":"Test""Dept":"IT" 標籤新增至客戶受管 KMS 金鑰。您可以使用這類標籤來標記 KMS 金鑰,並建立 KMS 金鑰類別以進行許可和稽核。

若要指定 KMS 金鑰,請使用 key-id 參數。此範例使用金鑰 ID 值,但您可以在此命令中使用金鑰 ID 或金鑰 ARN。

aws kms tag-resource \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --tags TagKey='Purpose',TagValue='Test' TagKey='Dept',TagValue='IT'

此命令不會產生輸出。若要檢視 AWS KMS KMS 金鑰上的標籤,請使用 list-resource-tags命令。

如需在 AWS KMS 中使用標籤的詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的標記金鑰

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 TagResource

下列程式碼範例示範如何使用 untag-resource

AWS CLI

從 KMS 金鑰刪除標籤

下列untag-resource範例會從客戶受管 KMS "Purpose"金鑰刪除具有 金鑰的標籤。

若要指定 KMS 金鑰,請使用 key-id 參數。此範例使用金鑰 ID 值,但您可以在此命令中使用金鑰 ID 或金鑰 ARN。執行此命令之前,請將範例金鑰 ID 取代為來自您 AWS 帳戶的有效金鑰 ID。

aws kms untag-resource \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --tag-key 'Purpose'

此命令不會產生輸出。若要檢視 AWS KMS KMS 金鑰上的標籤,請使用 list-resource-tags命令。

如需在 AWS KMS 中使用標籤的詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的標記金鑰

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 UntagResource

下列程式碼範例示範如何使用 update-alias

AWS CLI

將別名與不同的 KMS 金鑰建立關聯

下列update-alias範例會將別名alias/test-key與不同的 KMS 金鑰建立關聯。

--alias-name 參數指定別名。別名名稱值必須以 開頭alias/--target-key-id 參數會指定要與別名建立關聯的 KMS 金鑰。您不需要為別名指定目前的 KMS 金鑰。

aws kms update-alias \ --alias-name alias/test-key \ --target-key-id 1234abcd-12ab-34cd-56ef-1234567890ab

此命令不會產生輸出。若要尋找別名,請使用 list-aliases命令。

如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的更新別名

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 UpdateAlias

下列程式碼範例示範如何使用 update-custom-key-store

AWS CLI

範例 1:編輯自訂金鑰存放區的易記名稱

下列update-custom-key-store範例會變更自訂金鑰存放區的名稱。此範例適用於 a AWS CloudHSM 金鑰存放區或外部金鑰存放區。

使用 custom-key-store-id來識別金鑰存放區。使用 new-custom-key-store-name 參數來指定新的易記名稱。

若要更新 AWS CloudHSM 金鑰存放區的易記名稱,您必須先中斷連接金鑰存放區,例如使用 disconnect-custom-key-store命令。您可以在外部金鑰存放區連線或中斷連線時,更新其易記的名稱。若要尋找自訂金鑰存放區的連線狀態,請使用 describe-custom-key-store命令。

aws kms update-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0 \ --new-custom-key-store-name ExampleKeyStore

此命令不會傳回任何資料。若要驗證命令是否正常運作,請使用 describe-custom-key-stores命令。

如需有關更新 AWS CloudHSM 金鑰存放區的詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的編輯 AWS CloudHSM 金鑰存放區設定

如需更新外部金鑰存放區的詳細資訊,請參閱 金鑰AWS 管理服務開發人員指南中的編輯外部金鑰存放區屬性

範例 2:編輯 an AWS CloudHSM 金鑰存放區的 kmsuser 密碼

下列update-custom-key-store範例會將kmsuser密碼的值更新為與指定金鑰存放區相關聯之 CloudHSM 叢集kmsuser中 的目前密碼。此命令不會變更其叢集kmsuser的密碼。它只會告訴 AWS KMS 目前的密碼。如果 KMS 沒有目前的kmsuser密碼,則無法連線至 AWS CloudHSM 金鑰存放區。

注意:在更新 AWS CloudHSM 金鑰存放區之前,您必須中斷連線。使用 disconnect-custom-key-store 命令。命令完成後,您可以重新連接 AWS CloudHSM 金鑰存放區。使用 connect-custom-key-store 命令。

aws kms update-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0 \ --key-store-password ExamplePassword

此命令不會傳回任何輸出。若要驗證變更是否有效,請使用 describe-custom-key-stores命令。

如需更新 AWS CloudHSM 金鑰存放區的詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的編輯 AWS CloudHSM 金鑰存放區設定

範例 3:編輯 an AWS CloudHSM 金鑰存放區的 AWS CloudHSM 叢集

下列範例會將與 an AWS CloudHSM 金鑰存放區相關聯的 AWS CloudHSM 叢集變更為相關叢集,例如相同叢集的不同備份。

注意:在更新 AWS CloudHSM 金鑰存放區之前,您必須中斷連線。使用 disconnect-custom-key-store 命令。命令完成後,您可以重新連接 AWS CloudHSM 金鑰存放區。使用 connect-custom-key-store 命令。

aws kms update-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0 \ --cloud-hsm-cluster-id cluster-1a23b4cdefg

此命令不會傳回任何輸出。若要驗證變更是否有效,請使用 describe-custom-key-stores命令。

如需更新 AWS CloudHSM 金鑰存放區的詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的編輯 AWS CloudHSM 金鑰存放區設定

範例 4:編輯外部金鑰存放區的代理身分驗證憑證

下列範例會更新外部金鑰存放區的代理身分驗證憑證。您必須同時指定 raw-secret-access-keyaccess-key-id,即使您只變更其中一個值。您可以使用此功能來修正無效的登入資料,或在外部金鑰存放區代理輪換登入資料時變更登入資料。

在外部金鑰存放區上建立 AWS KMS 的代理身分驗證憑證。然後,使用此命令向 AWS KMS 提供登入資料。 AWS KMS 使用此登入資料來簽署其對外部金鑰存放區代理的請求。

您可以在外部金鑰存放區連線或中斷連線時更新代理身分驗證憑證。若要尋找自訂金鑰存放區的連線狀態,請使用 describe-custom-key-store命令。

aws kms update-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0 \ --xks-proxy-authentication-credential "AccessKeyId=ABCDE12345670EXAMPLE, RawSecretAccessKey=DXjSUawnel2fr6SKC7G25CNxTyWKE5PF9XX6H/u9pSo="

此命令不會傳回任何輸出。若要驗證變更是否有效,請使用 describe-custom-key-stores命令。

如需更新外部金鑰存放區的詳細資訊,請參閱 金鑰AWS 管理服務開發人員指南中的編輯外部金鑰存放區屬性

範例 5:編輯外部金鑰存放區的代理連線

下列範例會將外部金鑰存放區代理連線選項從公有端點連線變更為 VPC 端點服務連線。除了變更xks-proxy-connectivity值之外,您還必須變更xks-proxy-uri-endpoint值,以反映與 VPC 端點服務相關聯的私有 DNS 名稱。您也必須新增 xks-proxy-vpc-endpoint-service-name值。

注意:在更新外部存放區的代理連線之前,您必須中斷連線。使用 disconnect-custom-key-store 命令。命令完成後,您可以使用 connect-custom-key-store命令重新連接外部金鑰存放區。

aws kms update-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0 \ --xks-proxy-connectivity VPC_ENDPOINT_SERVICE \ --xks-proxy-uri-endpoint "https://myproxy-private.xks.example.com" \ --xks-proxy-vpc-endpoint-service-name "com.amazonaws.vpce.us-east-1.vpce-svc-example"

此命令不會傳回任何輸出。若要驗證變更是否有效,請使用 describe-custom-key-stores命令。

如需更新外部金鑰存放區的詳細資訊,請參閱 金鑰AWS 管理服務開發人員指南中的編輯外部金鑰存放區屬性

下列程式碼範例示範如何使用 update-key-description

AWS CLI

範例 1:新增或變更描述至客戶受管 KMS 金鑰

下列update-key-description範例會將描述新增至客戶受管 KMS 金鑰。您可以使用相同的命令來變更現有的描述。

--key-id 參數識別 命令中的 KMS 金鑰。此範例使用金鑰 ARN 值,但您可以使用 KMS 金鑰的金鑰 ID 或金鑰 ARN。 --description 參數會指定新的描述。此參數的值會取代 KMS 金鑰的目前描述,如果有的話。

aws kms update-key-description \ --key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --description "IT Department test key"

此命令不會產生輸出。若要檢視 KMS 金鑰的描述,請使用 describe-key命令。

如需詳細資訊,請參閱 AWS Key Management Service API 參考中的 UpdateKeyDescription

範例 2:刪除客戶受管 KMS 金鑰的描述

下列update-key-description範例會刪除對客戶受管 KMS 金鑰的描述。

--key-id 參數識別 命令中的 KMS 金鑰。此範例使用金鑰 ID 值,但您可以使用 KMS 金鑰的金鑰 ID 或金鑰 ARN。具有空字串值 ('') 的 --description 參數會刪除現有的描述。

aws kms update-key-description \ --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --description ''

此命令不會產生輸出。若要檢視 KMS 金鑰的描述,請使用 describe-key 命令。

如需詳細資訊,請參閱 AWS Key Management Service API 參考中的 UpdateKeyDescription

下列程式碼範例示範如何使用 verify

AWS CLI

驗證數位簽章

下列verify範例會驗證簡短 Base64-encoded訊息的密碼編譯簽章。金鑰 ID、訊息、訊息類型和簽署演算法必須與用來簽署訊息的演算法相同。您指定的簽章不能是 base64 編碼。如需協助解碼sign命令傳回的簽章,請參閱sign命令範例。

命令的輸出包含布林值SignatureValid欄位,指出簽章已驗證。如果簽章驗證失敗,verify命令也會失敗。

執行此命令之前,請將範例金鑰 ID 取代為來自您 AWS 帳戶的有效金鑰 ID。

aws kms verify \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://EncodedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256 \ --signature fileb://ExampleSignature

輸出:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "SignatureValid": true, "SigningAlgorithm": "RSASSA_PKCS1_V1_5_SHA_256" }

如需在 KMS 中使用非對稱 AWS KMS 金鑰的詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的使用非對稱金鑰

  • 如需 API 詳細資訊,請參閱 AWS CLI 命令參考中的驗證