メニュー
AWS Identity and Access Management
ユーザーガイド

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

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

IAM Policy Simulator は、https://policysim.aws.amazon.com でアクセスできます。

以下のビデオでは、IAM Policy Simulator の使用について概要を説明しています。

IAM Policy Simulator では、以下の方法で IAM およびリソースベースのポリシーをテストし、トラブルシューティングできます。

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

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

  • AWS アカウントが AWS 組織のメンバーである場合、IAM ポリシーとリソースポリシーへの組織の管理ポリシーの影響をテストできます。

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

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

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

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

IAM Policy Simulator のしくみ

Policy Simulator は、選択されたポリシーを評価し、指定された各アクションに対して有効なアクセス権限を特定します。Policy Simulator は、AWS サービスへの実際のリクエスト時に使用される同じポリシー評価エンジンを使用しますが、Policy Simulator と実稼働 AWS 環境では、以下の点で異なります。

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

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

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

IAM Policy Simulator の使用に必要なアクセス権限

デフォルトでは、AWS コンソールにアクセスできるどのユーザーもシミュレーターを使用して、ユーザー、グループ、またはロールにまだアタッチされていない新しいポリシーをテストできます。上部のモードメニューから [New Policy] を選択して [Policy Sandbox] で [Create New Policy] を選択し、ポリシーをシミュレーターに入力またはコピーするだけです。ここで追加したポリシーは、シミュレーションでのみ使用されるため、機密情報が開示されることはありません。

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

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

  • インラインポリシーの場合、次のアクションを実行するアクセス権限を付与します。

    • ListUsers

    • GetUser

    • GetUserPolicy

  • 管理ポリシーの場合、次のアクションを実行するアクセス権限を付与します。

    • ListUsers

    • GetUser

    • GetPolicy

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

リソースのポリシーを取得するアクセス権限を付与します。

たとえば、Amazon S3 バケットでリソースベースのポリシーをシミュレートするには、ユーザーが次のアクションを実行できるようにする必要があります。

  • s3:GetBucketPolicy

  • s3:GetObjects

ポリシーのシミュレートをコンソールユーザーに許可するポリシーの例については、「ユーザーによる Policy Simulator へのアクセスの許可」を参照してください。

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

次のアクションを実行するアクセス権限を付与するには

  • GetContextKeysForCustomPolicy

  • SimulateCustomPolicy

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

次のアクションを実行するアクセス権限を付与するには

  • GetContextKeysForPrincipalPolicy

  • SimulatePrincipalPolicy

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

ポリシーのシミュレートをユーザーに許可する API ポリシーの例については、「ユーザーによる Policy Simulator API へのアクセスの許可」を参照してください。

IAM Policy Simulator の使用方法 (AWS マネジメントコンソール)

IAM Policy Simulator を使用するのに必要なアクセス権限が付与されると、シミュレーターを使用して IAM ユーザー、グループ、ロール、またはリソースポリシーをテストできます。

ポリシーシミュレーターを使用するには

  1. IAM Policy Simulator を https://policysim.aws.amazon.com/ で開きます。(AWS にまだサインインしていない場合は、サインインするように求められます)。

    注記

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

    Policy Simulator が [Existing Policies] モードで開き、[Users, Groups, and Roles] にアカウントの IAM ユーザーのリストが表示されます。

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

    これをテストするには: 処理:
    ユーザーにアタッチされているポリシー [Users, Groups, and Roles] リストで、[Users] を選択します。その後、ユーザーを選択します。
    グループにアタッチされているポリシー [Users, Groups, and Roles] リストで、[Groups] を選択します。その後、グループを選択します。
    ロールにアタッチされているポリシー [Users, Groups, and Roles] リストで、[Roles] を選択します。その後、ロールを選択します。
    リソースにアタッチされているポリシー ステップ 8」を参照してください。
    カスタムポリシー 上部のモードリストより [New Policy] を選択します。次に、左側の [Policy Sandbox] ペインで、[Create New Policy] を選択して、ポリシーを入力するか貼り付けたら、[Apply] を選択します。

    ヒント

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

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

  3. (オプション) アカウントが AWS 組織のメンバーである場合、シミュレーションされたユーザーのアカウントに影響する組織の管理ポリシー (OCP) が、[IAM policies] および [Resource policies] と共に [Policies] ペインに表示されます。基本的に、これらのポリシーは、影響を受けるアカウントのユーザー、グループ、またはロールで使用できるアクセス権限を制限するフィルタです。OCP がサービスまたはアクションをブロックする場合、管理者が IAM またはリソースポリシーを使用してそのサービスまたはアクションに明示的にアクセス権限を付与したとしても、そのアカウントのエンティティはそのサービスにアクセスしたり、そのアクションを実行したりできません。OCP 名の横にあるチェックボックスをオフにして、シミュレーションから OCP を削除できます。OCP の内容を表示するには、OCP の名前を選択します。

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

  4. (任意) ユーザー、グループ、またはロールにアタッチされたポリシーのサブセットのみをテストする場合、除外する各ポリシーの横にあるチェックボックスをオフにします。

  5. [Policy Simulator] の下で、[Select service] を選択して、テストするサービスを選択します。その後、[Select actions] を選択し、テストするアクションを 1 つ以上選択します。メニューでは、サービスごとに使用できる選択肢しか表示されませんが、[Action Setttings and Results] では選択したすべてのサービスとアクションが表示されます。選択したアクションに戻った場合でも、[Select actions] メニューでは選択肢が引き続き表示されます。

  6. (任意) ステップ 2 および ステップ 4 で選択したポリシーが Condition 要素のグローバル AWS コンテキストキーの値をテストする場合、キー名が [Global Settings] セクションに表示されます。それらのキーの値を提供するには、[Global Settings] セクションを展開して、そこに表示されるキー名に値を入力します。

    警告

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

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

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

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

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

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

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

    各 EC2 シナリオでは、instanceimage、および security-group リソースを指定する必要があります。シナリオに EBS ボリュームが含まれる場合、その volume をリソースとして指定する必要があります。EC2 シナリオに VPC が含まれる場合、network-interface リソースを提供する必要があります。IP サブネットが含まれる場合、subnet リソースを指定する必要があります。EC2 シナリオオプションの詳細については、『AWS EC2 ユーザーガイド』の「Supported Platforms」を参照してください。

    • 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

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

  9. 右上の [Run Simulation] を選択します。

    [Action Settings and Results] の各行の [Permission] 列では、指定したリソースにおけるアクションのシミュレーションの結果を表示します。

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

    注記

    アクションが暗黙的に拒否されている場合 (つまり、アクションが明示的に許可されていないために拒否されている場合) は、[List] および [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.

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

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

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

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

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

  • [Simulation Settings] ペインのボックスから ARN を削除する。

  • [Simulation Settings] で指定した ARN に一致するサービスを選択します。

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

対処は必要ありません。

これは通知メッセージです。現在のバージョンでは、シミュレーターはユーザーおよびグループにアタッチされたポリシーを評価し、Amazon S3、Amazon SQS、Amazon SNS、および Amazon 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 ポリシーの文法に準拠しないポリシーがある場合、このメッセージがポリシーのリストの先頭に表示されます。これらのポリシーをシミュレートするには、「Policy Validator の使用」の手順に従って、これらのポリシーを特定して修正します。

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

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

Policy Simulator の使用方法(IAM、AWS CLI、Tools for Windows PowerShell、および AWS API)

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

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

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

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

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

コンテキストキーのリストを取得するには

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

IAM ポリシーをシミュレートするには

これらのコマンドは IAM ポリシーをシミュレートして、ユーザーの有効なアクセス権限を特定します。