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 キーの ID と 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 レスポンスは、同じ値を持つ KeySpec および CustomerMasterKeySpec メンバーの両方を含みます。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 オペレーションを呼び出します。レスポンスには、この KMS キーに対して AWS 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 policies", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ] }

ListAliases: KMS キーのエイリアス名と ARN の取得

ListAliases オペレーションは、アカウントとリージョンのエイリアスを返します。レスポンスの TargetKeyId は、エイリアスが参照する KMS キーのキー ID (存在する場合) を示します。

デフォルトでは、ListAliases コマンドはアカウントとリージョンのすべてのエイリアスを返します。これには、お客様が作成してカスタマーマネージドキーに関連付けたエイリアスと、AWS が作成してアカウントの AWS マネージドキー に関連付けたエイリアスが含まれます。AWS のエイリアスは aws/dynamodb のような aws/<service-name> 形式を使用するので認識できます。

このレスポンスには、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 では 1 つの KMS キーのタグを返しますが、コマンドをループで実行すると、アカウントとリージョン内のすべての KMS キー、または選択した KMS キーのセットに対するタグを取得できます。  この API は一度に 1 ページずつ返されるため、多数の 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 スクリプトでは、ListKeys および ListResourceTags オペレーションを使用して、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" } ]