翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS KMS コンソールまたは API を使用してタグを追加、表示、削除するには、プリンシパルにタグ付けのアクセス許可が必要です。これらのアクセス許可はキーポリシーで付与できます。または、IAM ポリシー (VPC エンドポイントポリシーを含む) で付与することもできますが、キーポリシーが許可する場合に限られます。AWSKeyManagementServicePowerUser マネージドポリシーは、プリンシパルがアカウントからアクセスできるすべての KMS キーで、タグ付け、タグ解除、タグの一覧表示を行うことを許可します。
タグ AWS のグローバル条件キーを使用して、これらのアクセス許可を制限することもできます。 AWS KMSではこれらの条件により、TagResource および UntagResource のようなタグ付けオペレーションへのアクセスを制御できます。
注記
タグとエイリアスを管理する許可をプリンシパルに付与する場合は注意が必要です。タグまたはエイリアスを変更すると、カスタマーマネージドキーに対するアクセス許可が許可または拒否される可能性があります。詳細については、「の ABAC AWS KMS」および「タグを使用して KMS キーへのアクセスを制御する」を参照してください。
サンプルポリシーおよび詳細については、IAM ユーザーガイドのタグキーに基づいたアクセス制御を参照してください。
タグを作成および管理するためのアクセス許可は、次のように機能します。
- kms:TagResource
-
プリンシパルにタグの追加または編集を許可します。KMS キーの作成中にタグを追加するには、プリンシパルが特定の KMS キーに制限されない IAM ポリシーでアクセス許可を持っている必要があります。
- kms:ListResourceTags
-
プリンシパルが KMS キーのタグを表示できるようにします。
- kms:UntagResource
-
プリンシパルが KMS キーからタグを削除できるようにします。
ポリシーのタグ付け許可
キーポリシーまたは IAM ポリシーでタグ付け許可を付与できます。例えば、次のキーポリシーの例では、選択したユーザーに KMS キーに対するタグ付け許可が付与されます。これにより、サンプルの管理者ロールまたはデベロッパーロールを引き受けることができるすべてのユーザーにタグを表示する許可が付与されます。
{
"Version": "2012-10-17",
"Id": "example-key-policy",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::111122223333:root"},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow all tagging permissions",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::111122223333:user/LeadAdmin",
"arn:aws:iam::111122223333:user/SupportLead"
]},
"Action": [
"kms:TagResource",
"kms:ListResourceTags",
"kms:UntagResource"
],
"Resource": "*"
},
{
"Sid": "Allow roles to view tags",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::111122223333:role/Administrator",
"arn:aws:iam::111122223333:role/Developer"
]},
"Action": "kms:ListResourceTags",
"Resource": "*"
}
]
}
プリンシパルに複数の KMS キーに対するタグ付け許可を付与するには、IAM ポリシーを使用します。このポリシーを有効にするには、各 KMS キーのキーポリシーで、アカウントが IAM ポリシーを使用して KMS キーへのアクセスを制御することを許可する必要があります。
例えば、次の IAM ポリシーではプリンシパルが KMS キーを作成することを許可します。指定したアカウントのすべての KMS キーでタグを作成および管理することもできます。この組み合わせにより、プリンシパルは CreateKey オペレーションのタグパラメータを使用して、KMS キー作成時に KMS キーにタグを追加できます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "IAMPolicyCreateKeys",
"Effect": "Allow",
"Action": "kms:CreateKey",
"Resource": "*"
},
{
"Sid": "IAMPolicyTags",
"Effect": "Allow",
"Action": [
"kms:TagResource",
"kms:UntagResource",
"kms:ListResourceTags"
],
"Resource": "arn:aws:kms:*:111122223333:key/*"
}
]
}
タグ付け許可を制限する
ポリシー条件を使用して、タグ付け許可を制限できます。次のポリシー条件を kms:TagResource
および kms:UntagResource
許可に適用できます。例えば、aws:RequestTag/tag-key
条件を使用して、プリンシパルが特定のタグのみを追加できるようにするか、プリンシパルが特定のタグキーを持つタグを追加しないように許可できます。または、kms:KeyOrigin
条件を使用して、プリンシパルがインポートされたキーマテリアルを持つ KMS キーにタグ付けまたはタグ解除を行わないようにすることができます。
ベストプラクティスとして、タグを使用して KMS キーへのアクセスを制御する場合は、aws:RequestTag/tag-key
または aws:TagKeys
条件キーを使用して、許可するタグ (またはタグキー) を決定します。
例えば、次の IAM ポリシーは前述のものと似ています。ただしこのポリシーでは、プリンシパルはタグ (TagResource
) の作成とタグ UntagResource
の削除を、Project
タグキーを持つタグに対してのみ実行できます。
TagResource
および UntagResource
リクエストは複数のタグを含む可能性があるため、ForAllValues
または ForAnyValue
集合演算子をaws:TagKeys 条件で指定する必要があります。ForAnyValue
演算子では、リクエスト内のタグキー 1 つ以上が、ポリシーのタグキーの 1 つと一致する必要があります。ForAllValues
演算子では、リクエスト内のタグキーすべてが、ポリシーのタグキーの 1 つと一致する必要があります。ForAllValues
演算子はリクエストにタグがない場合も true
を返しますが、TagResource と UntagResource は、タグが指定されていない場合、失敗します。集合演算子の詳細については、「IAM ユーザーガイド」の「複数のキーと値の使用」を参照してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "IAMPolicyCreateKey",
"Effect": "Allow",
"Action": "kms:CreateKey",
"Resource": "*"
},
{
"Sid": "IAMPolicyViewAllTags",
"Effect": "Allow",
"Action": "kms:ListResourceTags",
"Resource": "arn:aws:kms:*:111122223333:key/*"
},
{
"Sid": "IAMPolicyManageTags",
"Effect": "Allow",
"Action": [
"kms:TagResource",
"kms:UntagResource"
],
"Resource": "arn:aws:kms:*:111122223333:key/*",
"Condition": {
"ForAllValues:StringEquals": {"aws:TagKeys": "Project"}
}
}
]
}