AWS KMS 使用 的範例 AWS CLI - AWS SDK 程式碼範例

文件 AWS SDK AWS 範例 SDK 儲存庫中有更多可用的 GitHub 範例。

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

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 金鑰存放區。

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

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

AWS CLI

為 KMS 金鑰建立別名

下列create-alias命令會為金鑰 ID 所識別的 KMS 金鑰建立名為 example-alias的別名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 Key Management Service 開發人員指南中的使用別名

  • 如需 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

若要在 AWS CLI 中指定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 }

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

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

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

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

NOTE:如果您使用 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 }

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

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

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

NOTE:如果您使用 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 Key Management Service 開發人員指南中的 Grants in AWS KMS

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

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

AWS CLI

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

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

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

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

aws kms create-key

create-key 命令會傳回金鑰中繼資料,包括新 ARN 金鑰的金鑰 ID 和 KMS。您可以使用這些值來識別其他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 Key Management Service 開發人員指南中的建立金鑰

範例 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" } }

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

範例 3:建立用於簽署和驗證的非對稱橢圓曲線 KMS 金鑰

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

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" ] } }

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

範例 4:建立 HMAC KMS金鑰

下列create-key範例會建立 384 位元 KMS HMAC 金鑰。即使 GENERATE_VERIFY_MAC --key-usage 參數是 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" } }

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

範例 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" } }

如需詳細資訊,請參閱 金鑰管理服務開發人員指南中的 in 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" } }

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

範例 6:在 AWS CloudKMS 金鑰存放區中建立 HSM 金鑰

下列create-key範例會在指定的 AWS CloudHSM 金鑰存放區中建立 KMS 金鑰。操作會建立 KMS 金鑰及其中繼資料 in 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 Key Management Service 開發人員指南中的外部金鑰存放區。

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

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

AWS CLI

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

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

在 file.In 中提供 --ciphertext-blob 參數值的密碼文字,使用 fileb:// 字首,告訴 CLI 從二進位檔案讀取資料。如果檔案不在目前的目錄中,請輸入檔案的完整路徑。如需從 檔案讀取 AWS CLI 參數值的詳細資訊,請參閱 AWS 命令列介面使用者指南中的「https://docs.aws.amazon.com/cli/latest/userguide/cliWord-usage-parameters-file.html」檔案的 Load AWS CLI 參數,以及 AWS Command Line Tool Blog 中的本機檔案參數的最佳實務<https://aws.amazon.com/blogs/ developer/best-practices-for-local-file-parameters/>。指定 KMS 金鑰以解密密碼文字。使用對稱 KMS 金鑰解密時不需要 --key-id 參數。 AWS KMS 可以取得用來加密密碼文字中中繼資料之 KMS 金鑰的金鑰 ID。但是,指定您正在使用的 KMS 金鑰始終是最佳實務。此實務可確保您使用您打算使用的 KMS 金鑰,並防止您使用不信任的 KMS 金鑰意外解密密碼文字。請求純文字輸出作為文字值。 --query 參數會告訴 CLI 僅從輸出取得Plaintext欄位的值。--output 參數會以文字傳回輸出。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 解碼,並儲存在 檔案中。

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

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

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

AWS CLI

刪除 a AWS KMS 別名

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

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

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

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

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

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

AWS CLI

若要刪除自訂金鑰存放區

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

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

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

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

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

如需有關刪除 AWS CloudHSM 金鑰存放區的資訊,請參閱 AWS 金鑰管理服務開發人員指南中的刪除 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 管理服務開發人員指南中的刪除匯入的金鑰材料<latest/developerguide/importinghttps://docs.aws.amazon.com/kms/-keys-delete-key-material.html>。

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

AWS CLI

若要衍生共用秘密

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

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

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" }

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

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

AWS CLI

範例 1:取得 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>" } ] }

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

範例 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命令。

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

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

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

AWS CLI

若要啟用 KMS 金鑰的自動輪換

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

--key-id 參數可識別 KMS 金鑰。此範例使用金鑰 ARN 值,但您可以使用金鑰 ID 或 ARN 金鑰的 KMS。 --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 Key Management Service 開發人員指南中的輪換金鑰

  • 如需 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命令示範使用 AWS CLI 加密資料的建議方法。

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 Command Line Tool 部落格上的本機檔案參數的最佳實務。使用 --output--query 參數來控制命令的輸出。這些參數會擷取加密的資料, 稱為密碼文字 從命令的輸出。如需控制輸出的詳細資訊, 請參閱 命令列介面使用者指南中的控制命令輸出。 使用 base64 公用程式將擷取的輸出解碼為二進位資料。成功encrypt命令傳回的密碼文字是 base64 編碼的文字。 AWS 您必須先解碼此文字,才能使用 AWS CLI 進行解密。將二進位密碼文字儲存到 檔案。命令 (> ExampleEncryptedFile) 的最後一個部分會將二進位密碼文字儲存到 檔案,讓解密更容易。如需使用 AWS CLI 解密資料的範例命令,請參閱解密範例。

範例 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

NOTE:此範例輸出中的值被截斷以供顯示。

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 Key Management Service 開發人員指南中的資料金鑰對

下列程式碼範例示範如何使用 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

NOTE:此範例輸出中的值被截斷以供顯示。

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 Key Management Service 開發人員指南中的資料金鑰對

下列程式碼範例示範如何使用 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 金鑰,也就是具有 KMSSYMMETRIC_Word 金鑰規格值的 DEFAULT 金鑰。

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 金鑰,也就是具有 KMSSYMMETRIC_Word 金鑰規格值的 DEFAULT 金鑰。

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/conceptsWord.html#data-keys。

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

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

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

您指定的 KMS 金鑰必須是對稱加密的 KMS 金鑰,也就是具有 KMSSYMMETRIC_Word 金鑰規格值的 DEFAULT 金鑰。

NOTE:此範例輸出中的值被截斷以供顯示。

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 編碼格式傳回。

如需詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的資料金鑰 <https://docs.aws.amazon.com/kms/latest/developerguide/conceptsWord.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 會產生隨機數字。不過,如果您指定自訂金鑰存放區<latest/developerguide/customhttps://docs.aws.amazon.com/kms/-key-store-overview.html>,隨機位元組字串會在與自訂金鑰存放區相關聯的 AWS CloudHSM 叢集中產生。

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

它使用值為 的必要--number-of-bytes參數32來請求 32 位元組 (256 位元) string.It 使用值為 的 --output 參數text來指示 AWS CLI 以文字形式傳回輸出, 而不是 JSON。它使用 從 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

此命令不會產生輸出。

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

範例 2:產生 256 位元隨機數字 (Windows Command Prompt)

下列範例使用 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.

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

  • 如需 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

此命令不會產生輸出。

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

  • 如需 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 金鑰 in AWS KMS 的詳細資訊,請參閱 AWS Key Management Service API 參考中的使用對稱和非對稱金鑰

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

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

當您在 AWS CLI 中使用 get-public-key命令時,它會傳回以 DER 編碼的 X.509 公有金鑰,其為 Base64-encoded。此範例會以文字的形式取得 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 金鑰 in 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

在 a AWS KMS 金鑰上檢視授予

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

此命令使用 key-id 參數搭配金鑰 ID 來識別 KMS 金鑰。您可以使用金鑰 ID 或金鑰 ARN 來識別 KMS 金鑰。若要取得 AWS 受管 ARN 金鑰的金鑰 ID 或金鑰 KMS,請使用 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 Key Management Service 開發人員指南中的 Grants in 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 金鑰政策的詳細資訊,請參閱 金鑰管理服務開發人員指南中的使用 in 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 }

如需使用 in 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 Key Management Service 開發人員指南中的 Grants in 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 命令列介面使用者指南中的「https://docs.aws.amazon.com/cli/latest/userguide/cliWord-usage-parameters-file.html」檔案的 Load AWS CLI 參數,以及 AWS Command Line Tool Blog 中本機檔案參數的最佳實務<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 參數會以 text.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/APIWord_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/APIWord_ReEncrypt.html。

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

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

AWS CLI

淘汰客戶主金鑰的授予

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

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

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 Key Management Service 開發人員指南中的淘汰和撤銷授予

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

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

AWS CLI

撤銷客戶主金鑰的授予

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

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" }

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

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

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

AWS CLI

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

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

--key-id 參數會識別 KMS 金鑰。此範例使用金鑰 ARN 值,但您可以使用金鑰 ID 或 ARN 金鑰的 KMS。 --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命令。

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

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

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" }

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

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

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

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

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

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 屬性,並將其儲存在檔案中。

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

  • 如需 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'

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

如需使用 in 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'

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

如需使用 in 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範例會變更自訂金鑰存放區的名稱。此範例適用於 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:編輯 AWS CloudHSM 金鑰存放區的 kmsuser 密碼

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

NOTE:在更新 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:編輯 AWS HSM金鑰存放區的 AWS CloudHSM 叢集

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

NOTE:在更新 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,即使您只變更其中一個值。您可以使用此功能來修正無效的憑證,或在外部金鑰存放區代理輪換憑證時變更憑證。

在外部金鑰存放區上建立 for AWS KMS 的代理身分驗證憑證。然後,使用此命令來提供憑證 to 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值,以反映與 DNS 端點服務相關聯的私有 VPC 名稱。您也必須新增 xks-proxy-vpc-endpoint-service-name值。

NOTE:在更新外部存放區的代理連線之前,您必須中斷連線。使用 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 值,但您可以使用金鑰 ID 或 ARN 金鑰的金鑰 KMS。 --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命令。

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

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

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

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

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

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

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

下列程式碼範例示範如何使用 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 金鑰 in AWS KMS 的詳細資訊,請參閱 AWS 金鑰管理服務開發人員指南中的使用非對稱金鑰

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