タグへのアクセスを制御する - AWS Key Management Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

タグへのアクセスを制御する

タグを追加、表示、削除するには、AWS KMS コンソールまたは API を使用して、プリンシパルがアクセス許可にタグ付けする必要があります。これらのアクセス許可はキーポリシーで付与できます。または、IAM ポリシー (VPC エンドポイントポリシーを含む) で付与することもできますが、キーポリシーが許可する場合に限られますAWSKeyManagementServicePowerUser 管理ポリシーは、アカウントがアクセスできるすべての KMS キーのタグ、タグ解除、およびタグの一覧表示をプリンシパルに許可します。

タグの AWS グローバル条件キーを使用して、これらのアクセス許可を制限することもできます。ではAWS KMS、これらの条件により、 TagResourceや などのタグ付けオペレーションへのアクセスを制御できますUntagResource

注記

タグとエイリアスを管理する許可をプリンシパルに付与する場合は注意が必要です。タグまたはエイリアスを変更すると、カスタマーマネージドキーに対するアクセス許可が許可または拒否される可能性があります。詳細については、「AWS KMS の ABAC」および「タグを使用して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オペレーションの Tags パラメータを使用して、作成中に 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リクエストには複数のタグを含めることができるため、aws:TagKeys 条件で ForAllValuesまたは ForAnyValue集合演算子を指定する必要があります。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"} } } ] }