IAMPolicy Simulator を使用した IAM ポリシーのテスト - AWS Identity and Access Management

IAMPolicy Simulator を使用した IAM ポリシーのテスト

IAM ポリシーを使用する方法と理由の詳細については、「ポリシーとアクセス許可」を参照してください。

IAM Policy Simulator コンソールは https://policysim.aws.amazon.com/ でアクセスできます。

IAM Policy Simulator を使用すると、アイデンティティベースのポリシー、IAM アクセス許可の境界、組織のサービスコントロールポリシー、リソースベースのポリシーをテストおよびトラブルシューティングできます。以下に示しているのは、Policy Simulator で可能ないくつかの一般的な処理です。

  • AWS アカウントの IAM ユーザー、グループ、またはロールにアタッチされているポリシーをテストします。複数のポリシーがユーザー、グループ、またはロールにアタッチされている場合は、すべてのポリシーまたは選択した個別のポリシーをテストできます。特定のリソースで選択されたポリシーについて、どのアクションが許可または拒否されているかをテストできます。

  • IAM エンティティに対するアクセス許可の境界の影響をテストおよびトラブルシューティングします。注: 一度にシミュレートできるアクセス許可の境界は 1 つのみです。

  • AWS リソース (Amazon S3 バケット、Amazon SQS キュー、Amazon SNS トピック、Amazon S3 Glacier ボールトなど) にアタッチされているポリシーをテストします。

  • AWS アカウントが AWS Organizations の組織である場合、IAM ポリシーとリソースポリシーへのサービスコントロールポリシーの影響をテストできます。

  • ユーザー、グループ、またはロールにまだアタッチされていない新しいポリシーをテストする。そのためには、テストするポリシーを Policy Simulator に入力またはコピーします。これらはシミュレーションでのみ使用され、保存されません。注: リソースベースのポリシーは、Policy Simulator に入力またはコピーできません。シミュレーターでリソースベースのポリシーを使用するには、シミュレーションにリソースを含める必要があります。また、チェックボックスをオンにして、シミュレーションにそのリソースのポリシーも含める必要もあります。

  • 指定したサービス、アクション、リソースを含むポリシーをテストします。たとえば、ポリシーによってエンティティが Amazon S3 サービスの特定のバケットで ListAllMyBucketsCreateBucket、および DeleteBucket アクションの実行を許可されていることをテストできます。

  • テストするポリシー内の Condition エレメントに含まれる IP アドレスや日付などのコンテキストキーを提供して、実際のシナリオをシミュレートします。

  • ポリシーのどのステートメントによって特定のリソースやアクションへのアクセスが許可または拒否されているかを特定する。

IAM Policy Simulator のしくみ

Policy Simulator は、選択されたポリシーを評価し、指定された各アクションに対して有効なアクセス許可を特定します。このシミュレーターでは、AWS のサービスに対する実際のリクエストで使用されるものと同じポリシー評価エンジンが使用されます。しかし、シミュレーターは以下の点でライブ AWS 環境とは異なります。

  • Policy Simulator は実際の AWS サービスリクエストを行わないため、実働 AWS 環境に不要な変更を加える可能性のあるリクエストを安全にテストできます。

  • Policy Simulator は選択したアクションの実行をシミュレートしないため、シミュレートされたリクエストに対するレスポンスをレポートできません。返される結果は、リクエストされたアクションが許可されるか拒否されるかだけです。

  • Policy Simulator 内でポリシーを編集した場合、それらの変更は Policy Simulator にのみ影響を与えます。AWS アカウントの対応するポリシーが変更されることはありません。

IAM Policy Simulator の使用に必要なアクセス許可

Policy Simulator コンソールまたは Policy Simulator API を使用して、ポリシーをテストできます。デフォルトでは、コンソールユーザーは、ユーザー、グループ、またはロールにまだアタッチされていないポリシーをテストできます。そのためには、それらのポリシーをシミュレーターに入力またはコピーします。それらのポリシーはシミュレーションでのみ使用され、機密情報が公開されることはありません。API ユーザーには、アタッチされていないポリシーをテストするアクセス権限が必要です。コンソールまたは API ユーザーに、AWS アカウントの IAM ユーザー、グループ、またはロールにアタッチされているポリシーをテストすることを許可できます。そのためには、それらのポリシーを取得するアクセス許可を付与する必要があります。リソースベースのポリシーをテストするには、リソースのポリシーを取得するための権限がユーザーに必要です。

ポリシーのシミュレートをユーザーに許可するコンソールまたは API ポリシーの例については、「ポリシーの例: AWS Identity and Access Management (IAM)」を参照してください。

Policy Simulator コンソールの使用に必要なアクセス許可

IAM アカウントの AWS ユーザー、グループ、またはロールにアタッチされているポリシーをテストすることをユーザーに許可できます。そのためには、それらのポリシーを取得するアクセス許可をユーザーに付与する必要があります。リソースベースのポリシーをテストするには、リソースのポリシーを取得するための権限がユーザーに必要です。

ユーザー、グループ、またはロールにアタッチされたポリシーのために Policy Simulator コンソールの使用を許可するポリシー例を確認するには、IAM: Policy Simulator のコンソールへのアクセスを参照してください。

特定のパスがあるユーザーにのみ Policy Simulator コンソールの使用を許可するポリシー例を確認するには、IAM: ユーザーパスに基づく Policy Simulator のコンソールへのアクセスを参照してください。

1 つのタイプのエンティティのみのために Policy Simulator コンソールの使用を許可するポリシーを作成するには、次の手順を実行します。

コンソールユーザーがユーザーのポリシーをシミュレートできるようにするには

次のアクションをポリシーに含めます。

  • iam:GetGroupPolicy

  • iam:GetPolicy

  • iam:GetPolicyVersion

  • iam:GetUser

  • iam:GetUserPolicy

  • iam:ListAttachedUserPolicies

  • iam:ListGroupsForUser

  • iam:ListGroupPolicies

  • iam:ListUserPolicies

  • iam:ListUsers

コンソールユーザーがグループのポリシーをシミュレートできるようにするには

次のアクションをポリシーに含めます。

  • iam:GetGroup

  • iam:GetGroupPolicy

  • iam:GetPolicy

  • iam:GetPolicyVersion

  • iam:ListAttachedGroupPolicies

  • iam:ListGroupPolicies

  • iam:ListGroups

コンソールユーザーがロールのポリシーをシミュレートできるようにするには

次のアクションをポリシーに含めます。

  • iam:GetPolicy

  • iam:GetPolicyVersion

  • iam:GetRole

  • iam:GetRolePolicy

  • iam:ListAttachedRolePolicies

  • iam:ListRolePolicies

  • iam:ListRoles

リソースベースのポリシーをテストするには、リソースのポリシーを取得するためのアクセス権限がユーザーに必要です。

コンソールユーザーが Amazon S3 バケットのリソースベースのポリシーをテストできるようにするには

次のアクションをポリシーに含めます。

  • s3:GetBucketPolicy

たとえば、次のポリシーではこのアクションを使用して、コンソールユーザーに特定の Amazon S3 バケット内のリソースベースのポリシーをシミュレートすることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketPolicy", "Resource":"arn:aws:s3:::bucket-name/*" } ] }

コンソールユーザーが AWS Organizations のポリシーをテストできるようにするには

次のアクションをポリシーに含めます。

  • organizations:DescribePolicy

  • organizations:ListPolicies

  • organizations:ListPoliciesForTarget

  • organizations:ListTargetsForPolicy

Policy Simulator API の使用に必要なアクセス許可

Policy Simulator API オペレーション GetContextKeyForCustomPolicy および SimulateCustomPolicy を使用すると、ユーザー、グループ、またはロールにまだアタッチされていないポリシーをテストできます。このようなポリシーをテストするには、ポリシーを文字列として API に渡します。それらのポリシーはシミュレーションでのみ使用され、機密情報が公開されることはありません。API を使用して、AWS アカウントの IAM ユーザー、グループ、またはロールにアタッチされているポリシーをテストすることもできます。そのためには、GetContextKeyForPrincipalPolicy および SimulatePrincipalPolicy を呼び出すアクセス許可をユーザーに付与する必要があります。

現在の AWS アカウントでアタッチされているポリシーとアタッチされていないポリシーに対して Policy Simulator API を使用することを許可するポリシーの例を表示するには、「IAM: Policy Simulator API へのアクセス」を参照してください。

1 つのタイプのポリシーのみのために Policy Simulator API の使用を許可するポリシーを作成するには、次の手順を実行します。

API ユーザーが API に直接文字列として渡されるポリシーをシミュレートできるようにするには

次のアクションをポリシーに含めます。

  • iam:GetContextKeysForCustomPolicy

  • iam:SimulateCustomPolicy

API ユーザーが IAM ユーザー、グループ、ロール、またはリソースにアタッチされたポリシーをシミュレートできるようにするには

次のアクションをポリシーに含めます。

  • iam:GetContextKeysForPrincipalPolicy

  • iam:SimulatePrincipalPolicy

たとえば、Bob という名前のユーザーに、Alice という名前のユーザーに割り当てられたポリシーをシミュレートするアクセス許可を付与するには、Bob にリソース arn:aws:iam::777788889999:user/alice へのアクセス権を付与します。

特定のパスがあるユーザーにのみ Policy Simulator API の使用を許可するポリシー例を確認するには、IAM: ユーザーパスに基づいた Policy Simulator API へのアクセスを参照してください。

IAM Policy Simulator の使用方法 (コンソール)

デフォルトでは、ユーザーは、ユーザー、グループ、またはロールにまだアタッチされていないポリシーをテストできます。そのためには、それらのポリシーを Policy Simulator コンソールに入力またはコピーします。それらのポリシーはシミュレーションでのみ使用され、機密情報が公開されることはありません。

ユーザー、グループ、またはロールにアタッチされていないポリシーをテストするには (コンソール)

  1. IAM Policy Simulator コンソール (https://policysim.aws.amazon.com/) を開きます。

  2. ページ上部にある [Mode: (モード:)] メニューで [New Policy (新しいポリシー)] を選択します。

  3. [Policy Sandbox (ポリシーサンドボックス)] で [新規ポリシーの作成] を選択します。

  4. ポリシーをシミュレーターに入力またはコピーし、次のステップで説明されているようにシミュレーターを使用します。

IAM Policy Simulator コンソールを使用するアクセス許可を取得したら、シミュレーターを使用して IAM ユーザー、グループ、ロール、またはリソースポリシーをテストできます。

ユーザー、グループ、またはロールにアタッチされているポリシーをテストするには (コンソール)

  1. IAM Policy Simulator コンソール (https://policysim.aws.amazon.com/) を開きます。

    注記

    IAM ユーザーとして Policy Simulator にサインインするには、割り当てられたサインイン URL を使用して AWS マネジメントコンソール にサインインします。その後、https://policysim.aws.amazon.com/ に移動します。IAM ユーザーとしてのサインインの詳細については、「IAM ユーザーが AWS にサインインする方法」を参照してください。

    Policy Simulator が [Existing Policies (既存のポリシー)] モードで開き、[ユーザー、グループ、およびロール] にアカウントの IAM ユーザーのリストが表示されます。

  2. 目的のタスクに該当するオプションを選択します。

    これをテストするには: 処理:
    ユーザーにアタッチされているポリシー [ユーザー、グループ、およびロール] リストで、[ユーザー] を選択します。その後、ユーザーを選択します。
    グループにアタッチされているポリシー [ユーザー、グループ、およびロール] リストで、[グループ] を選択します。その後、グループを選択します。
    ロールにアタッチされているポリシー [ユーザー、グループ、およびロール] リストで、[ロール] を選択します。その後、ロールを選択します。
    リソースにアタッチされているポリシー ステップ 9」を参照してください。
    ユーザー、グループ、またはロールのカスタムポリシー [新しいポリシーの作成] を選択します。新しい [ポリシー] ペインで、ポリシーを入力または貼り付け、[Apply (適用)] を選択します。
    ヒント

    グループにアタッチされたポリシーをテストするには、IAM Policy Simulator を IAM コンソールから直接起動します。ナビゲーションペインで、[グループ] を選択します。ポリシーをテストするグループの名前を選択し、次に [Permissions (アクセス許可)] タブを選択します。[インラインポリシー] または [管理ポリシー] セクションで、テストするポリシーを特定します。そのポリシーの [Actions (アクション)] 列で、[ポリシーのシミュレート] を選択します。

    ユーザーにアタッチされているカスタマー管理ポリシーをテストするには、ナビゲーションペインで [ユーザー] を選択します。ポリシーをテストするユーザーの名前を選択します。[Permissions (アクセス許可)] タブを選択し、テストするポリシーを展開します。右端にある [ポリシーのシミュレート] を選択します。新しいウィンドウで IAM Policy Simulator が開き、選択したポリシーが [ポリシー] ペインに表示されます。

  3. (オプション) アカウントが AWS Organizations のメンバーである場合、シミュレーションされたユーザーのアカウントに影響するすべてのサービスコントロールポリシー (SCP) が [ポリシー] ペインに表示されます。[ポリシー] ペインには、[IAM ポリシー]、[Resource policies (リソースポリシー)]、[Permissions Boundary policies (アクセス許可の境界ポリシー)] も表示されます。SCP は、組織または組織単位 (OU) のアクセス許可の上限を指定する JSON ポリシーです。SCP はメンバーアカウントのエンティティに対するアクセス許可を制限します。SCP によってサービスまたはアクションがブロックされる場合、そのアカウントには、そのサービスにアクセスできるエンティティ、またはそのアクションを実行できるエンティティがありません。管理者が IAM またはリソースポリシーを使用してそのサービスまたはアクションへのアクセス権限を明示的に付与したとしても同様です。SCP をシミュレーションから削除するには、SCP 名の横にあるチェックボックスをオフにします。SCP の内容を表示するには、SCP の名前を選択します。

    アカウントが組織のメンバーでない場合、シミュレーションする SCP はありません。

  4. (オプション) グループではなく IAM エンティティ (ユーザーまたはロール) に対する アクセス許可の境界として設定されているポリシーをテストできます。現在、エンティティにアクセス許可の境界ポリシーが設定されている場合、そのポリシーが [ポリシー] ペインに表示されます。1 つのエンティティに設定できるアクセス許可の境界は 1 つのみです。別のアクセス許可の境界をテストするために、カスタムのアクセス許可の境界を作成できます。そのためには、[新しいポリシーの作成] を選択します。新しい [ポリシー] ペインが開きます。メニューで、[Custom IAM Permissions Boundary Policy (カスタムの IAM アクセス許可の境界ポリシー)] を選択します。新しいポリシーの名前を入力し、下の領域にポリシーを入力またはコピーします。[Apply (適用)] を選択して、ポリシーを保存します。次に、[Back (戻る)] を選択して、元の [ポリシー] ペインに戻ります。その後、シミュレーションに使用するアクセス許可の境界の横にあるチェックボックスをオンにします。

  5. (オプション) ユーザー、グループ、またはロールにアタッチされているポリシーのサブセットのみをテストできます。そのためには、[ポリシー] ペインで、除外する各ポリシーの横にあるチェックボックスをオフにします。

  6. Policy Simulator で、[Select service (サービスの選択)] を選択してから、テストするサービスを選択します。その後、[アクションの選択] を選択し、テストするアクションを 1 つ以上選択します。メニューでは、サービスごとに使用できる選択肢しか表示されませんが、[Action Settings and Results (アクションの設定と結果)] では選択したすべてのサービスとアクションが表示されます。

  7. (オプション) 「ステップ 2」および「ステップ 5」で選択したポリシーに AWS グローバル条件キーが含まれている場合、それらのキーの値を入力します。これを行うには、[グローバル設定] セクションを展開して、そこに表示されるキー名の値を入力します。

    警告

    条件キーの値を空にすると、そのキーはシミュレーション時に無視されます。これによってエラーが発生し、シミュレーションの実行が失敗する場合があります。また、シミュレーションが実行されても、結果が信頼できない場合があります。シミュレーションが、条件キーや変数の値を含む実際の状況と一致しない場合もあります。

  8. (オプション) 選択した各アクションは [Action Settings and Results (アクションの設定と結果)] リストに表示され、実施にシミュレーションを実行するまで [Not simulated (未シミュレーション)] が [アクセス許可] 列に表示されます。シミュレーションを実行する前に、リソースで各アクションを設定できます。特定のシナリオ用に個別のアクションを設定するには、矢印を選択してアクションの行を展開します。アクションがリソースレベルのアクセス許可をサポートしている場合、アクセスをテストする特定のリソースの Amazon リソースネーム (ARN) を入力できます。デフォルトでは、各リソースはワイルドカード (*) に設定されています。任意の条件コンテキストキーの値を指定することもできます。前述したように、値が空のキーは無視されるため、シミュレーションの失敗や信頼性の低い結果が生じる可能性があります。

    1. アクション名の横にある矢印を選択して各行を拡張し、使用するシナリオでアクションを正確にシミュレートするために必要な追加の情報を設定します。アクションがリソースレベルのアクセス許可を必要とする場合、アクセスをシミュレートする特定のリソースの Amazon リソースネーム (ARN) を入力できます。デフォルトでは、各リソースはワイルドカード (*) に設定されています。

    2. アクションがリソースレベルのアクセス許可をサポートするものの、それを必要としない場合、[Add Resource (リソースの追加)] を選択して、シミュレーションに追加するリソースタイプを選択できます。

    3. 選択したポリシーのいずれかに、このアクションのサービスのコンテキストキーを参照する Condition 要素が含まれる場合、アクションの下にそのキー名が表示されます。そのアクションのシミュレーションで、指定したリソースに対して使用する値を指定できます。

    異なるグループのリソースタイプが必要なアクション

    アクションによって、異なる状況下で異なるリソース タイプが必要です。リソースタイプの各グループにはシナリオが関連付けられています。そのいずれかがシミュレーションに適用される場合、それを選択すると、シミュレーターはシナリオに適してリソースタイプを要求します。次の一覧では、サポートされるそれぞれのシナリオオプションと、シミュレーションを実行するために定義する必要のあるリソースを示しています。

    以下の各 Amazon EC2 シナリオでは、instanceimage、および security-group リソースを指定する必要があります。シナリオに EBS ボリュームが含まれる場合、その volume をリソースとして指定する必要があります。Amazon EC2 シナリオに仮想プライベートクラウド (VPC) が含まれる場合、network-interface リソースを指定する必要があります。IP サブネットが含まれる場合、subnet リソースを指定する必要があります。Amazon EC2 シナリオオプションの詳細については、Amazon EC2 ユーザーガイドの「サポートされているプラットフォーム」を参照してください。

    • EC2-Classic-InstanceStore

      instance, image, security-group

    • EC2-Classic-EBS

      instance, image, security-group, volume

    • EC2-VPC-InstanceStore

      instance, image, security-group, network-interface

    • EC2-VPC-InstanceStore-Subnet

      instance, image, security-group, network-interface, subnet

    • EC2-VPC-EBS

      instance, image, security-group, network-interface, volume

    • EC2-VPC-EBS-Subnet

      instance, image, security-group, network-interface, subnet, volume

  9. (任意) リソースベースのポリシーをシミュレーションに含める場合、まずそのリソースでシミュレートするアクションを ステップ 6 で選択する必要があります。選択したアクションの行を展開し、シミュレートするポリシーのリソースの ARN を入力します。その後、[ARN] テキストボックスの横にある [Include Resource Policy (リソースポリシーを含む)] を選択します。IAM Policy Simulator では現在、次のサービスのリソースベースポリシーをサポートしています。Amazon S3 (リソースベースポリシーのみ。ACL は現在未サポート)、Amazon SQS、Amazon SNS、およびロック解除された S3 Glacier ボールト (ロックされたボールトは現在未サポート)。

  10. 右上の [Run Simulation (シミュレーションの実行)] を選択します。

    [Action Settings and Results (アクションの設定と結果)] の各行の [アクセス許可] 列では、指定したリソースに対するアクションのシミュレーションの結果を表示します。

  11. 右上の [Run Simulation (シミュレーションの実行)] を選択します。

    [Action Settings and Results (アクションの設定と結果)] の各行の [アクセス許可] 列では、指定したリソースに対するアクションのシミュレーションの結果を表示します。

  12. ポリシーのどのステートメントがアクションを明示的に許可または拒否したかを調べるには、[アクセス許可] 列の [N matching statement(s) (N 個の一致ステートメント)] リンクを選択して行を展開します。次に、[Show statement (ステートメントの表示)] リンクを選択します。[ポリシー] ペインに、関連するポリシーが表示され、シミュレーションの結果に影響を与えたステートメントが強調表示されます。

    注記

    アクションが暗黙的に拒否されている場合 (つまり、アクションが明示的に許可されていないために拒否されている場合) は、[リスト] および [Show statement (ステートメントの表示)] オプションは表示されません。

IAM Policy Simulator コンソールメッセージのトラブルシューティング

以下の表では、IAM Policy Simulator の使用時に表示される可能性のある通知および警告メッセージを示しています。それらのメッセージが表示されたときの問題の解決手順についても説明しています。

メッセージ 解決手順
This policy has been edited.Changes will not be saved to your account.

対処は必要ありません。

これは通知メッセージです。IAM Policy Simulator で既存のポリシーを編集した場合、その変更は AWS アカウントに影響を与えません。シミュレーターでは、テスト目的でのみポリシーに変更を加えられます。

リソースポリシーを取得できない。原因: 詳しいエラーメッセージ シミュレーターはリクエストされたリソースベースポリシーにアクセスできません。指定されたリソース ARN が正しいこと、またシミュレーションを実行しているユーザーにリソースポリシーを見る権限があることを確認します。
One or more policies require values in the simulation settings.The simulation might fail without these values.

このメッセージが表示されるのは、テストするポリシーに条件キーや変数が含まれているが、これらのキーや変数の値を [Simulation Settings (シミュレーションの設定)] で指定しなかった場合です。

このメッセージが表示されないようにするには、[Simulation Settings (シミュレーション設定)] を選択し、各条件キーまたは変数に値を入力します。

You have changed policies.These results are no longer valid.

このメッセージが表示されるのは、[結果] ペインに結果が表示されている間に、選択したポリシーを変更した場合です。[結果] ペインに表示されている結果は動的に更新されません。

このメッセージが表示されないようにするには、[Run Simulation (シミュレーションの実行)] を再度選択します。[ポリシー] ペインで行った変更に基づいて、新しいシミュレーションの結果が表示されます。

The resource you typed for this simulation does not match this service.

このメッセージが表示されるのは、現在のシミュレーション用に選択したサービスと一致しない Amazon リソースネーム (ARN) を [Simulation Settings (シミュレーションの設定)] ペインで入力した場合です。たとえば、Amazon DynamoDB リソースの ARN を指定し、シミュレートするサービスに Amazon Redshift を選択した場合などです。

このメッセージが表示されないようにするには、以下のいずれかの操作を行います。

  • [Simulation Settings (シミュレーションの設定)] ペインのボックスから ARN を削除する。

  • [Simulation Settings (シミュレーションの設定)] で指定した ARN に一致するサービスを選択する。

このアクションが属するサービスは、Amazon S3 ACL や S3 Glacier ボールトロックポリシーなどのリソースベースポリシーに加えて、特別なアクセスコントロールメカニズムをサポートします。Policy Simulator はこれらのメカニズムをサポートしないため、結果は本番環境と異なる場合があります。

対処は必要ありません。

これは通知メッセージです。現在のバージョンでは、シミュレーターはユーザーおよびグループにアタッチされたポリシーを評価し、Amazon S3、Amazon SQS、Amazon SNS、および S3 Glacier のリソースベースポリシーを評価することもできます。Policy Simulator は、他の AWS サービスでサポートされるすべてのアクセスコントロールメカニズムをサポートするわけではありません。

DynamoDB FGAC is currently not supported.

対処は必要ありません。

この情報メッセージは、きめ細かなアクセスコントロールに関するものです。きめ細かなアクセスコントロールは、IAM ポリシー条件を使用して、DynamoDB テーブルおよびインデックス内の個々のデータ項目および属性にだれがアクセスできるかを決定する機能です。また、これらのテーブルとインデックスに対して実行できるアクションも参照します。IAM Policy Simulator の現在のバージョンでは、このタイプのポリシー条件はサポートされていません。DynamoDB のきめ細かなアクセスコントロールの詳細については、「DynamoDB のきめ細かなアクセスコントロール」を参照してください。

You have policies that do not comply with the policy syntax.You can use the Policy Validator to review and accept the recommended updates to your policies.

IAM ポリシーの文法に準拠しないポリシーがある場合、このメッセージがポリシーのリストの先頭に表示されます。これらのポリシーをシミュレートするには、「JSON ポリシーの検証」の手順に従って、これらのポリシーを特定して修正します。

This policy must be updated to comply with the latest policy syntax rules.

このメッセージが表示されるのは、IAM ポリシーの文法に準拠しないポリシーがある場合です。これらのポリシーをシミュレートするには、「JSON ポリシーの検証」の手順に従って、これらのポリシーを特定して修正します。

IAM Policy Simulator の使用 (AWS CLI および AWS API)

通常、Policy Simulator コマンドでは、次の 2 つのことを実行するために、API オペレーションの呼び出しが必要となります。

  1. ポリシーを評価し、ポリシーが参照するコンテキストキーのリストを返します。次のステップで、参照しているコンテキストキーの値を指定できるように、それらを確認しておく必要があります。

  2. ポリシーをシミュレートし、シミュレーションで使用されるアクション、リソース、コンテキストキーの一覧を提供します。

セキュリティ上の理由から、API オペレーションは以下の 2 つのグループに分かれています。

  • API に文字列として直接渡されるポリシーのみをシミュレートする API オペレーション。このセットには、GetContextKeysForCustomPolicySimulateCustomPolicy が含まれます。

  • 特定の IAM ユーザー、グループ、ロール、またはリソースにアタッチされたポリシーをシミュレートする API オペレーション。これらの API オペレーションは他の IAM エンティティに割り当てられたアクセス許可の詳細を表示できるため、これらの API オペレーションへのアクセスを制限することを検討してください。このセットには、GetContextKeysForPrincipalPolicySimulatePrincipalPolicy が含まれます。API オペレーションへのアクセス制限の詳細については、「ポリシーの例: AWS Identity and Access Management (IAM)」を参照してください。

いずれの場合でも、API オペレーションはアクションやリソースのリストに対する 1 つ以上のポリシーの影響をシミュレートします。各アクションは各リソースと組み合わせられており、シミュレーションによって、ポリシーがリソースのそのアクションを許可するか、または拒否するかを特定できます。また、ポリシーが参照するコンテキストキーの値を提供することもできます。ポリシーが参照するコンテキストキーのリストを取得するには、まず GetContextKeysForCustomPolicy または GetContextKeysForPrincipalPolicy を呼び出します。コンテキストキーの値を指定しない場合、シミュレーションは引き続き実行されます。しかし、シミュレーターはそのコンテキストキーを評価に含めることができないため、結果は信頼できない可能性があります。

コンテキストキーのリストを取得するには (AWS CLI、AWS API)

以下のコマンドでは、ポリシーのリストを評価し、ポリシーで使用されているコンテキストキーのリストを返します。

IAM ポリシーをシミュレートするには (AWS CLI、AWS API)

以下のコマンドでは、IAM ポリシーをシミュレートしてユーザーの有効なアクセス許可を確認します。