この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、虎塚です。
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ファイルで管理したほうが便利です。
既存タグを上書きする内容を次に示します。
key-tags.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がますます便利になりましたね。
それでは、また。