メニュー
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 の使用に必要なアクセス権限

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

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

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

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

ユーザー、グループ、またはロールにアタッチされたポリシーのために 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

  • s3:GetObjects

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

Copy
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetBucketPolicy", "s3:GetObjects" ], "Effect": "Allow", "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 に渡すことで、まだユーザー、グループ、ロールにアタッチされていないポリシーをユーザーがテストできるようにします。それらのポリシーはシミュレーションでのみ使用され、機密情報が公開されることはありません。AWS アカウントの IAM ユーザー、グループ、またはロールにアタッチされたポリシーのテストを API のユーザーに許可するには、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 の使用方法 (AWS マネジメントコンソール)

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

ユーザー、グループ、ロールにアタッチされていないポリシーを Policy Simulator コンソールを使用してテストするには:

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

  2. ページ上部にある [Mode:] メニューで [New Policy] を選択します。

  3. [Policy Sandbox] で [Create New Policy] を選択します。

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

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

Policy Simulator コンソールを使用するには:

  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] モードで開き、[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 Policy Simulator を 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. (任意) ユーザー、グループ、またはロールにアタッチされたポリシーのサブセットのみをテストする場合、[Policies] ペインで除外する各ポリシーの横にあるチェックボックスをオフにします。

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

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

    警告

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

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

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

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

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

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

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

    次の各 Amazon EC2 シナリオでは、instanceimage、および security-group リソースを指定する必要があります。シナリオに EBS ボリュームが含まれる場合、その volume をリソースとして指定する必要があります。Amazon EC2 シナリオに Virtual Private Cloud (VPC) が含まれる場合、network-interface リソースを提供する必要があります。IP サブネットが含まれる場合、subnet リソースを指定する必要があります。Amazon EC2 シナリオオプションの詳細については、AWS 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

  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 に直接文字列として渡されるポリシーのみをシミュレートする API アクション。このセットには、GetContextKeysForCustomPolicySimulateCustomPolicy が含まれます。

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

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

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

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

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

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