[新機能] KMSでキーのタグづけがサポートされました
こんにちは、虎塚です。
2月のアップデートで、KMSのカスタマーマスターキーに対するタグづけがサポートされました。ユーザは、カスタマーマスターキーごとにAWS利用料を追跡できるようになりました。
- AWS Key Management Service (KMS) now supports tagging of keys
- Tagging Keys - AWS Key Management Service
タグを使って、必要な情報をタグりよせましょう。
概要
タグの付与対象
タグをつけられるのは、カスタマーマスターキー、つまりユーザが明示的に作成したキーだけです。AWS内部で生成したキーにも、ユーザがインポートしたキーにも、タグをつけることができます。
一方で、AWSが提供するmanagedなマスターキーには、タグをつけることができません。S3、EBS、RDS、Redshiftなどに格納するデータをサーバサイドで暗号化するために、各リージョンで最初からキーが提供されていて、削除できません。これらのキーには、タグをつけられません。
注意点
単一のカスタマーマスターキーに、同じKeyを持つタグを2つ付けることはできません。付けようとすると、元のタグが上書きされます。
料金や制限
タグ自体に料金はかかりません。また、タグ付与数の上限もないようです。
AWS CLIのKMSタグ関連コマンド
タグの一覧表示 (list-resource-tags)
カスタマーマスターキーを指定して、付与されているタグを一覧表示します。key-idオプションで指定できるのは、KeyIdまたは、キーのARNです。
aws kms list-resource-tags \ --key-id <KEY_ID_OR_KEY_ARN> \ --limit <value> \ #option --marker <value> #option
limitオプションは、表示するタグの数を1〜50個に絞るとき、markerオプションは、タグの集合を途中から取得するときに使用します。
タグをつける (tag-resource)
カスタマーマスターキーを指定して、タグを付与します。または、すでに付与されたタグを上書きします。
aws kms tag-resource \ --key-id <KEY_ID_OR_KEY_ARN> \ --tags TagKey=string,TagValue=string
他のAWSサービスのタグと同じで、タグはKeyとValueからなります。Valueは空でも構いません。
タグを消す (untag-resource)
カスタマーマスターキーを指定して、特定のタグを削除します。
aws kms untag-resource \ --key-id <KEY_ID_OR_KEY_ARN> --tag-keys "tag-key1" "tag-key2"
tag-keysオプションの引数には、削除するタグのKeyを指定します。Valueを指定してはいけません。
実際に使ってみる
AWS CLIを使って、KMSのカスタマーマスターキーにタグをつけたり外したりする手順を紹介します。AWS CLIは、次のバージョンを使いました。
- aws-cli/1.11.78 Python/2.7.10 Darwin/16.5.0 botocore/1.5.41
1. キーエイリアス一覧を取得する
リージョンに存在するキーのエイリアス一覧を取得します。
aws kms list-aliases | jq . { "Aliases": [ { "AliasArn": "arn:aws:kms:ap-northeast-1:123456789012:alias/aws/ebs", "AliasName": "alias/aws/ebs", "TargetKeyId": "11111111-aaaa-bbbb-cccc-222222222222" }, { "AliasArn": "arn:aws:kms:ap-northeast-1:123456789012:alias/aws/rds", "AliasName": "alias/aws/rds", "TargetKeyId": "33333333-dddd-eeee-ffff-444444444444" }, [...] { "AliasArn": "arn:aws:kms:ap-northeast-1:123456789012:alias/test-kms", "AliasName": "alias/test-kms", "TargetKeyId": "55555555-0000-1111-2222-666666666666" } ] }
AliasNameが"alias/aws/"ではじまるキーは、AWSのmanagedなマスターキーです。これらのキーにタグをつけることはできません。
上の実行例では、AliasName"alias/test-kms"のキーにだけ、タグをつけることができます。今回はこのカスタマーマスターキーに、タグをつけたり外したりします。KeyIdを控えておきます。
2. キーについているタグを確認する
キーに付与されているタグを一覧で表示します。
aws kms list-resource-tags \ --key-id 55555555-0000-1111-2222-666666666666
実行結果の例を次に示します。
{ "Truncated": false, "Tags": [] }
実行結果が上のような場合、対象のキーにはタグがついていません。
なお、指定したKeyIdを持つキーが存在しないときは、次のようなエラーが表示されます。
An error occurred (NotFoundException) when calling the ListResourceTags operation: Key 'arn:aws:kms:ap-northeast-1:123456789012:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' does not exist
3. キーにタグをつける
キーにタグをつけます。今回は、次のようなタグを付与します。
Key | Value |
---|---|
CostCenter | AWS-Dev |
CreatedBy | torazuka |
Purpose | Test |
aws kms tag-resource \ --key-id 55555555-0000-1111-2222-666666666666 \ --tags TagKey=CostCenter,TagValue=AWS-Dev,TagKey=CreatedBy,TagValue=torazuka,TagKey=Purpose,TagValue=Test
キーにタグがついたことを確認します。
aws kms list-resource-tags \ --key-id 55555555-0000-1111-2222-666666666666 { "Truncated": false, "Tags": [ { "TagKey": "CostCenter", "TagValue": "AWS-Dev" }, { "TagKey": "CreatedBy", "TagValue": "torazuka" }, { "TagKey": "Purpose", "TagValue": "Test" } ] }
ちなみに、誤ってAWS managedなキーを対象にタグをつけようとした場合、権限がなくて実行できないために、次のようなエラーになります。
An error occurred (AccessDeniedException) when calling the TagResource operation: User: arn:aws:iam::123456789012:user/IAM_USER_NAME is not authorized to perform: kms:TagResource on resource: arn:aws:kms:ap-northeast-1:123456789012:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4. タグを上書きする
キーにすでに付与されているタグを、別の値で上書きします。
先ほどと同じtag-resourceコマンドを使いますが、タグのKeyとValueをファイルに外出ししてみましょう。複数のタグが必要なときは、コマンドラインから指定するよりも、JSONファイルで管理したほうが便利です。
既存タグを上書きする内容を次に示します。
[ { "TagKey": "CostCenter", "TagValue": "Busi" }, { "TagKey": "Purpose", "TagValue": "Prod" } ]
tagsオプションの引数に上のJSONファイルを指定して、コマンドを実行します。
aws kms tag-resource \ --key-id 55555555-0000-1111-2222-666666666666 \ --tags file://key-tags.json
タグが上書きされたことを確認します。
aws kms list-resource-tags \ --key-id 55555555-0000-1111-2222-666666666666 { "Truncated": false, "Tags": [ { "TagKey": "CostCenter", "TagValue": "Busi" }, { "TagKey": "CreatedBy", "TagValue": "torazuka" }, { "TagKey": "Purpose", "TagValue": "Prod" } ] }
5. キーのタグを消す
キーを指定して、特定のタグを外します。今回は、CreatedByタグとPurposeタグを削除します。
aws kms untag-resource \ --key-id 55555555-0000-1111-2222-666666666666 \ --tag-keys "CreatedBy" "Purpose"
2個のタグが削除され、CostCenterタグだけが残っていることを確認します。
aws kms list-resource-tags \ --key-id 55555555-0000-1111-2222-666666666666 { "Truncated": false, "Tags": [ { "TagKey": "CostCenter", "TagValue": "Busi" } ] }
おわりに
今回は、カスタマーマスターキーで新たにサポートされたタグについてご紹介しました。タグがつけられるようになって、KMSがますます便利になりましたね。
それでは、また。