使用 API 檢視 KMS 金鑰 - AWS Key Management Service

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

使用 API 檢視 KMS 金鑰

您可以使用 AWS Key Management Service (AWS KMS) API 來檢視您的 KMS 金鑰。這個部分示範數個會傳回現有 KMS 金鑰之詳細資訊的操作。範例使用 AWS Command Line Interface (AWS CLI),但您可以使用任何支援的程式設計語言。

ListKeys:取得所有 KMS 金鑰的識別碼和 ARN

ListKeys作業會傳回帳戶和區域中所有 KMS 金鑰的 ID 和 Amazon 資源名稱 (ARN)。

例如,呼叫 ListKeys 操作會傳回這個虛構帳戶中每個 KMS 金鑰的 ID 和 ARN。如需多種程式設計語言的範例,請參閱取得 KMS 金鑰的金鑰 ID 和金鑰 ARN

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

DescribeKey:取得 KMS 金鑰的詳細資訊

DescribeKey作業會傳回有關指定 KMS 金鑰的詳細資料。若要識別 KMS 金鑰,請使用金鑰 ID金鑰 ARN別名名稱別名 ARN

與僅在呼叫者帳戶和區域中顯示 KMS 金鑰的ListKeys作業不同,授權使用者可以使用此DescribeKey作業取得有關其他帳戶中 KMS 金鑰的詳細資料。

注意

DescribeKey 回應包括具有相同值的 KeySpecCustomerMasterKeySpec 成員。已取代 CustomerMasterKeySpec 成員。

例如,呼叫 DescribeKey 會傳回對稱加密 KMS 金鑰的相關資訊。回應中的欄位會隨 AWS KMS key 規格金鑰狀態金鑰材料來源而有所不同。如需多種程式設計語言的範例,請參閱檢視 AWS KMS key

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

這個範例會在用於簽署和驗證的非對稱 KMS 金鑰上呼叫 DescribeKey 操作。回應包含 AWS KMS 針對此 KMS 金鑰支援的簽署演算法。

$ aws kms describe-key --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 { "KeyMetadata": { "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "Origin": "AWS_KMS", "Arn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "KeyState": "Enabled", "KeyUsage": "SIGN_VERIFY", "CreationDate": 1569973196.214, "Description": "", "KeySpec": "ECC_NIST_P521", "CustomerMasterKeySpec": "ECC_NIST_P521", "AWSAccountId": "111122223333", "Enabled": true, "MultiRegion": false, "KeyManager": "CUSTOMER", "SigningAlgorithms": [ "ECDSA_SHA_512" ] } }

GetKeyPolicy:取得附加至 KMS 金鑰的金鑰原則

GetKeyPolicy業會取得附加至 KMS 金鑰的金鑰原則。若要識別 KMS 金鑰,請使用它的金鑰 ID 或金鑰 ARN。您還必須指定政策名稱,這一律是 default。(如果您的輸出難以讀取,請將 --output text 選項新增至您的命令。) GetKeyPolicy 僅適用於呼叫者帳戶和區域中的 KMS 金鑰。

如需多種程式設計語言的範例,請參閱取得金鑰政策

$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default { "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" : "*" } ] }

ListAliases:取得 KMS 金鑰的別名名稱和 ARN

ListAliases業會傳回帳戶與區域中的別名。回應中的 TargetKeyId 會顯示別名 (如果有) 參考之 KMS 金鑰的金鑰 ID。

在預設情況下,ListAliases 命令會傳回在帳戶和區域中的所有別名。這包括您建立的別名,而且是與客戶管理的金鑰相關聯的別名,以及 AWS 建立且與您帳戶中 AWS 受管金鑰 相關聯的別名。您可以識別 AWS 別名,因為其名稱具有格式 aws/<service-name>,例如 aws/dynamodb

回應可能還包括沒有 TargetKeyId 欄位的別名,例如此範例中的 aws/redshift 別名。這些是 AWS 已建立但尚未關聯至 KMS 金鑰的預先定義別名。

如需多種程式設計語言的範例,請參閱列出別名

$ aws kms list-aliases { "Aliases": [ { "AliasName": "alias/access-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/access-key", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1516435200.399, "LastUpdatedDate": 1516435200.399 }, { "AliasName": "alias/financeKey", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/financeKey", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1604958290.014, "LastUpdatedDate": 1604958290.014 }, { "AliasName": "alias/ECC-P521-Sign", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ECC-P521-Sign", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1693622000.704, "LastUpdatedDate": 1693622000.704 }, { "AliasName": "alias/ImportedKey", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ImportedKey", "TargetKeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "CreationDate": 1493622000.704, "LastUpdatedDate": 1521097200.235 }, { "AliasName": "alias/aws/dynamodb", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/dynamodb", "TargetKeyId": "0987ab65-43cd-21ef-09ab-87654321cdef", "CreationDate": 1521097200.454, "LastUpdatedDate": 1521097200.454 }, { "AliasName": "alias/aws/ebs", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/ebs", "TargetKeyId": "abcd1234-09fe-ef90-09fe-ab0987654321", "CreationDate": 1466518990.200, "LastUpdatedDate": 1466518990.200 }, { "AliasName": "alias/aws/redshift", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/redshift" }, ] }

若要取得參考特定 KMS 金鑰的別名,請使用 KeyId 參數。參數值可以是金鑰 ID金鑰 ARN。您不能指定別名名稱別名 ARN

以下範例中的命令會取得參考客戶受管金鑰的別名。但是,您也可以使用這類命令來尋找參考 AWS 受管金鑰 的別名。

$ aws kms list-aliases --key-id arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321 { "Aliases": [ { "AliasName": "alias/access-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/access-key", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1516435200.399, "LastUpdatedDate": 1516435200.399 }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/financeKey", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "AliasName": "alias/financeKey", "CreationDate": 1604958290.014, "LastUpdatedDate": 1604958290.014 }, ] }

若只要取得 AWS 受管金鑰 的別名,請使用程式設計語言的功能來篩選回應。

$ aws kms list-aliases --query 'Aliases[?starts_with(AliasName, `alias/aws/`)]'

ListResourceTags:取得 KMS 金鑰上的標籤

此作ListResourceTags業會傳回指定 KMS 金鑰上的標籤。API 會傳回一個 KMS 金鑰的標籤,但您可以在迴圈中執行命令,以取得帳戶和區域中所有 KMS 金鑰的標籤,或您選取的一組 KMS 金鑰。此 API 一次傳回一個頁面,因此如果您在許多 KMS 金鑰上有許多標籤,您可能必須使用程式設計語言中的分頁器來取得所有您想要的標籤。

ListResourceTags 操作會傳回所有 KMS 金鑰的標籤,但是 AWS 受管金鑰 未加上標籤。它僅適用於呼叫者帳戶和區域中的 KMS 金鑰。

若要尋找 KMS 金鑰的標籤,請使用 ListResourceTags 操作。KeyId 參數是必要參數。它接受金鑰 ID金鑰 ARN。執行此範例之前,請使用有效的 ARN 取代範例金鑰 ARN。

$ aws kms list-resource-tags --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab { "Tags": [ { "TagKey": "Department", "TagValue": "IT" }, { "TagKey": "Purpose", "TagValue": "Test" } ], "Truncated": false }

您可能想要使用 ListResourceTags 操作,以取得帳戶和區域中具有特定標籤、標籤索引鍵或標籤值的所有 KMS 金鑰。若要執行這項操作,請使用程式設計語言的篩選功能。

例如,下列 Bash 指令碼會使用ListKeysListResourceTags作業,以Project標籤金鑰取得帳戶和區域中的所有 KMS 金鑰。這兩個操作都只取得結果的第一頁。如果您有許多 KMS 金鑰或許多標籤,請使用您語言的分頁功能,從每個操作中取得全部結果。執行此範例之前,請使用有效的 ID 取代範例金鑰 ID。

TARGET_TAG_KEY='Project' for key in $(aws kms list-keys --query 'Keys[*].KeyId' --output text); do key_tags=$(aws kms list-resource-tags --key-id "$key" --query "Tags[?TagKey==\`$TARGET_TAG_KEY\`]") if [ "$key_tags" != "[]" ]; then echo "Key: $key" echo "$key_tags" fi done

系統會對輸出進行格式化,如下列範例輸出。

Key: 0987dcba-09fe-87dc-65ba-ab0987654321 [ { "TagKey": "Project", "TagValue": "Gamma" } ] Key: 1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d [ { "TagKey": "Project", "TagValue": "Alpha" } ] Key: 0987ab65-43cd-21ef-09ab-87654321cdef [ { "TagKey": "Project", "TagValue": "Alpha" } ]