IAM ポリシーの例 - AWS Key Management Service

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

IAM ポリシーの例

このセクションでは、さまざまな AWS KMS アクションのためのアクセス許可を付与する IAM ポリシーの例を示しています。

重要

以下のポリシーのアクセス許可の一部は、KMS キーのキーポリシーも同じアクセス許可を付与する場合にのみ付与されます。詳細については、「アクセス許可に関するリファレンス」を参照してください。

JSON ポリシードキュメントの記述と書式設定については、『 IAM ユーザーガイド』の「IAM JSON ポリシーリファレンス 」を参照してください

AWS KMS コンソールでの KMS キーの表示をユーザーに許可する

以下の IAM ポリシーでは、ユーザーに AWS KMS コンソールへの読み取り専用アクセスを許可します。これらのアクセス許可を持つユーザーは、AWS アカウント 内のすべての KMS キーを表示できますが、KMS キーを作成 または変更することはできません。

AWS マネージドキー および [Customer managed keys] (カスタマーマネージドキー) ページ上に KMS キーを表示するには、キーにタグやエイリアスがない場合でも、プリンシパルに kms:ListKeyskms:ListAliasestag:GetResources への許可が必要です。KMS キーの詳細ページでオプションの KMS キーテーブルの列とデータを表示するには、残りのアクセス許可 (特に kms:DescribeKey) が必要です。エラーなしでデフォルトのビューでキーポリシーを表示するには、iam:ListUsers および iam:ListRoles アクセス許可が必要です。カスタムキーストア ページのデータおよびカスタムキーストアの KMS キーの詳細を表示するには、プリンシパルに kms:DescribeCustomKeyStores アクセス許可も必要です。

ユーザーのコンソールアクセスを特定の KMS キーに制限すると、コンソールは、表示されない各 KMS キーにエラーを表示します。

このポリシーには 2 つのポリシーステートメントが含まれます。最初のポリシーステートメントの Resource 要素は、例 AWS アカウント のすべてのリージョンのすべての KMS キーで指定されたアクセス許可を付与します。AWS KMS コンソールはプリンシパルのアカウントの KMS キーのみを表示するため、コンソールビューワーは追加のアクセスを必要としません。これは、他の AWS アカウント で KMS キーを表示するアクセス許可がある場合にも当てはまります。特定の KMS キーには "Resource": "*" 要素が適用されないため、残りの AWS KMS と IAM のアクセス許可には、 要素が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyAccessForAllKMSKeysInAccount", "Effect": "Allow", "Action": [ "kms:GetPublicKey", "kms:GetKeyRotationStatus", "kms:GetKeyPolicy", "kms:DescribeKey", "kms:ListKeyPolicies", "kms:ListResourceTags", "tag:GetResources" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "ReadOnlyAccessForOperationsWithNoKMSKey", "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "iam:ListRoles", "iam:ListUsers" ], "Resource": "*" } ] }

KMS キーの作成をユーザーに許可する

以下の IAM ポリシーは、ユーザーがすべてのタイプの KMS キーを作成することを許可します。CreateKey オペレーションは特定の AWS KMS リソース (KMS キーまたはエイリアス) を使用することがないため、Resource 要素の値は * になります。

ユーザーを特定タイプの KMS キーに制限するには、kms:KeySpeckms:KeyUsage、および kms:KeyOrigin 条件キーを使用します。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" } }

キーを作成するプリンシパルには、関連するパーミッションが必要な場合があります。

  • kms:PutKeyPolicykms:CreateKey アクセス許可を持つプリンシパルには、KMS キーの初期キーポリシーを設定できます。ただし、CreateKey 発信者には、KMS キーのキーポリシーを変更できる kms:PutKeyPolicy 許可が必要です。または、CreateKeyBypassPolicyLockoutSafetyCheck パラメータを指定する必要があります (非推奨)。CreateKey 発信者は、IAM ポリシーから KMS キーの kms:PutKeyPolicy アクセス許可を取得することも、作成している KMS キーのキーポリシーにこのアクセス許可を含めることもできます。

  • kms:TagResourceCreateKey オペレーション中に KMS キーにタグを追加するには、CreateKey 発信者に IAM ポリシーの kms:TagResource アクセス許可が必要です。新しい KMS キーのキーポリシーにこのアクセス許可を含めるだけでは不十分です。ただし、CreateKey 発信者が初期キーポリシーの kms:TagResource を含む場合は、KMS キーの作成後に、個別の呼び出しでタグを追加できます。

  • kms:CreateAlias — AWS KMS コンソールで KMS キーを作成するプリンシパルには、KMS キーおよびエイリアスに対する kms:CreateAlias アクセス許可が必要です。(コンソールは、へのコール CreateKey とへのコールを 2 つ行います CreateAlias)。IAM ポリシーでエイリアスアクセス許可を指定する必要があります。キーポリシーまたは IAM ポリシーで、KMS キーアクセス許可を付与できます。詳細については、「エイリアスへのアクセスの制御」を参照してください。

kms:CreateKey に加えて、次の IAM ポリシーでは AWS アカウント のすべての KMS キーに kms:TagResource アクセス許可を付与し、アカウントのすべてのエイリアスに kms:CreateAlias アクセス許可を付与します。また、IAM ポリシーでのみ提供できる便利な読み取り専用アクセス許可もいくつか含まれています。

この IAM ポリシーには、キーポリシーで設定できる kms:PutKeyPolicy アクセス権限やその他のアクセス権限は含まれていません。これらのアクセス許可は、1 つの KMS キーにのみ適用されるキーポリシーで設定するのがベストプラクティスです。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPermissionsForParticularKMSKeys", "Effect": "Allow", "Action": "kms:TagResource", "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMPermissionsForParticularAliases", "Effect": "Allow", "Action": "kms:CreateAlias", "Resource": "arn:aws:kms:*:111122223333:alias/*" }, { "Sid": "IAMPermissionsForAllKMSKeys", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } ] }

特定の AWS アカウント で KMS キーにより暗号化および復号することをユーザーに許可する

次の IAM ポリシーでは、AWS アカウント 111122223333 の任意の KMS キーを使用して、ユーザーがデータを暗号化および復号できます。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:*:111122223333:key/*" } }

特定の AWS アカウント およびリージョンで KMS キーにより暗号化および復号することをユーザーに許可する

次の IAM ポリシーでは、米国西部 (オレゴン) リージョンの AWS アカウント 111122223333 の任意の KMS キーを使用して、ユーザーがデータを暗号化および復号できます。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/*" ] } }

特定の KMS キーにより暗号化および復号することをユーザーに許可する

次の IAM ポリシーでは、 Resource エレメントで指定された 2 つの KMS キーを使用して、ユーザーがデータを暗号化および復号できます。IAM ポリシーステートメントで KMS キーを指定するときは、KMS キーの キー ARN を使用する必要があります。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ] } }

KMS キーの無効化または削除を禁止する

次の IAM ポリシーでは、別の IAM ポリシーまたはキーポリシーで許可されている場合でも、ユーザーが KMS キーを無効化、削除できないようにします。アクセス権限を明示的に拒否するポリシーは、同じアクセス権限を明示的に付与するポリシーを含め、他のすべてのポリシーを上書きします。詳細については、「AWS KMS アクセス許可のトラブルシューティング」を参照してください。

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:DisableKey", "kms:ScheduleKeyDeletion" ], "Resource": "*" } }