IAM ポリシーシミュレーターを使用した IAM ポリシーのテスト
IAM ポリシーシミュレーターを使用すると、アイデンティティベースのポリシー、IAM アクセス許可の境界、サービスコントロールポリシー、指定したリソースベースのポリシーをテストできます。AWS サービスに実際のリクエストを送信せずに、AWS がこれらのポリシーと照合して、リクエストを評価する方法をシミュレーションします。各シミュレーションでは、テストするアクションとリソースごとにバイナリ認可結果を返します。アクションは許可または拒否されます。結果が許可または明示的な拒否の場合、シミュレーターはその結果を招いたポリシーも表示するため、原因を理解して修正することができます。
IAM ポリシーを使用する方法と理由の詳細については、「AWS Identity and Access Management でのポリシーとアクセス許可」を参照してください。
重要
Policy Simulator は、AWS での実際の環境とは異なる結果を出力することがあります。ポリシーシミュレーターでテストを行った後、実際の AWS 環境と照合してポリシーを確認し、求めている結果を得られたかどうか確認することをお勧めします。詳細については、「IAM Policy Simulator のしくみ」を参照してください。
次のスクリーンショットでは、アイデンティティとそのポリシーを選択し、シミュレーションを実行する前にテストするアクションとリソースを選択する IAM ポリシーシミュレーターが示されています。
トピック
ポリシーシミュレーターモード
ポリシーシミュレーターには 2 つのモードがあります。既にアカウントに存在するポリシーをテストするか、まだドラフト中のポリシーをテストする場合に適したモードを選択します。
プリンシパルモード
プリンシパルモードでは、既存の IAM ユーザー、ロール、グループに既にアタッチされているポリシーをテストします。シミュレーション用に 1 つの ID を選択すると、シミュレーターはその ID にアタッチされているポリシーを評価します。カスタム ID ポリシーまたはアクセス許可の境界をシミュレーションに含めるか、除外することもできます。実際に IAM にアタッチされずに、これらの追加機能はプリンシパルにアタッチされているかのようにシミュレーションされるため、アカウントは変更されません。
カスタムモード
カスタムモードでは、書き込みまたは貼り付ける 1 つ以上のポリシーをテストします。ポリシーをアタッチする前に、確認するうえで便利です。カスタムポリシーは独自にシミュレーションされて、アカウントに保存されません。
モードの選択とシミュレーションの実行に関する詳細な一連の手順については、「ポリシーをシミュレートする方法」を参照してください。
ポリシーシミュレーターでできること
ポリシーシミュレーターの一般的な機能をいくつか紹介します。詳細な一連の手順、ならびに API とコンソールの動作の区別については、「ポリシーをシミュレートする方法」を参照してください。
-
既にアタッチされている対象が IAM ユーザー、グループ、ロール、書き込みまたは貼り付ける新しいポリシーを問わず、アイデンティティベースのポリシーをテストします。複数のポリシーを持つアタッチされた ID の場合、すべてのポリシーをまとめてテストするか、個々のポリシーを選択し、特定のリソースに対してどのアクションが許可または拒否されるか確認できます。新しいポリシーは、実際にアカウントにアタッチせずに、ID にアタッチされているかのように評価されます。シミュレーションでのみ使用されて、アカウントに保存されません。
-
アクセスの制限付き制御の影響をテストします。一度にシミュレーションできるアクセス許可の境界は 1 つです。AWS アカウント は AWS Organizations の組織のメンバーである場合、アイデンティティベースのポリシーに対するサービスコントロールポリシーの影響もテストできます。シミュレーターでは、SCP によってアクションが許可されるか、拒否されるか示されます。ただし、セキュリティ上の理由によって他のポリシータイプのように、SCP の一致したステートメントが表示されません。
-
指定したリソースベースのポリシーの効果をテストします。コンソールを除き、シミュレーターはリソースのポリシーを取得しません。シミュレーションにリソースベースのポリシーを含めるには、リソースとともにポリシーを指定します。
-
実世界の条件で特定のサービス、アクション、リソースをテストし、結果の原因を特定します。例えば、ポリシーが特定のバケットで Amazon S3 の
ListAllMyBuckets、CreateBucket、DeleteBucketのアクションを許可するかどうかテストし、テスト対象のポリシーのCondition要素で参照される IP アドレスや日付などのコンテキストキーを指定できます。結果ごとに、シミュレーターはアクセスを許可または拒否する特定のステートメントを識別します。一致したステートメントは、アイデンティティベースのポリシー、ならびに指定したリソースベースのポリシーから取得できます。
IAM Policy Simulator のしくみ
シミュレーションを実行すると、ポリシーシミュレーターによってリクエストの範囲内のポリシー、範囲内の SCP、指定した入力内容 (アクション、リソース、コンテキストキー値など) が評価されます。カスタムモードでは、ポリシーを直接指定します。プリンシパルモードでは、シミュレーターは選択した ID にアタッチされたポリシーを使用し、シミュレーションに追加のポリシーを含めるか、除外することができます。結果として、各アクションとリソースにバイナリの結果 (許可または拒否) が返されます。
Policy Simulator は、以下の点で実際の AWS 環境とは異なります。
-
ポリシーシミュレーターでは現実の AWS サービスリクエストが実行されないため、実際の AWS 環境に不要な変更を加える可能性があるリクエストを安全にテストできます。本番環境の実際のコンテキストキー値は使用されません。アクションは実際には実行されないため、サービスレスポンスは返されません。返される唯一の結果では、リクエストされた各アクションが許可されるか、拒否されるか判定します。
-
ポリシーシミュレーターでポリシーを編集した場合、変更内容はシミュレーションにのみ影響を与えます。AWS アカウント 内の対応するポリシーが変更されることはありません。
-
ポリシーシミュレーターでは、拒否ステートメントの条件キーやリソーススコーピングなどの SCP が評価されますが、リソースコントロールポリシー (RCP) はサポートされません。シミュレーション結果は一部の高度な設定のライブ動作とは依然として異なる場合があります (VPC エンドポイントポリシー、ロールチェーン、1 つのリソースにおける複数のリソースベースのポリシーなど)。
-
クロスアカウントシミュレーションは、
EvalDecisionDetailsでポリシータイプ別の判定 (アイデンティティポリシーとリソースポリシー) を返します。
IAM ポリシーシミュレーターでの条件キー評価の仕組み
多くのポリシーでは、aws:RequestedRegion や aws:MultiFactorAuthPresent などの条件キーに依存する Condition 要素が使用されます。シミュレーションを実行すると、ポリシーシミュレーターは 2 つのソースから条件キーの値を取得します。これはシミュレーターが自動的に入力する値、ならびにシミュレーション入力として指定した値です。値が条件を満たさない場合、そのアクションは拒否されます。
シミュレーターが自動的に入力するコンテキスト
シミュレーターにより、評価のために次のプリンシパルと組織のコンテキストキーが入力されます。
-
プリンシパルコンテキスト:
aws:PrincipalAccount、aws:PrincipalId、aws:PrincipalType、aws:Type、aws:UserId、aws:UserName -
組織コンテキスト:
aws:PrincipalOrgID、aws:PrincipalOrgMasterAccountId、aws:PrincipalOrgPaths
これらのキーは入力されるため、プリンシパルまたは組織の条件を使用する SCP とその他のポリシーは正しく評価されます。ポリシーが参照するそれ以外のコンテキストキーには、値を指定します。テストするポリシーの Condition 要素を確認し、上記のリストに記載されていないキーの値を指定してください。
グローバル条件キーおよびサービスサポート
アイデンティティベースのポリシーとリソースベースのポリシーの場合、シミュレーターは認証のために特定のグローバル条件キーをサポートするサービスを特定しません。例えば、あるサービスが aws:TagKeys をサポートしていないことについて、シミュレーターは識別しません。対照的に、サービスコントロールポリシーはグローバル条件キー (aws:RequestedRegion や aws:PrincipalAccount など) を含むサービス対応ロジックで評価されます。条件キーの詳細については、AWS グローバル条件コンテキストキー を参照してください。
サービスコントロールポリシーの条件キー
シミュレーターでは、SCP の条件キーとリソーススコーピングが評価されます。キーの値を指定する方法は、シミュレーションの実行方法によって異なります。
-
AWS CLI または AWS API を使用すると、SCP によって参照される条件キーの値を指定できます。
-
IAM コンソールでは、アイデンティティベースのポリシー、アクセス許可の境界、リソースベースのポリシーに表示される条件キーの値のみを設定できます。条件キーが SCP によってのみ参照される場合、コンソールでその値を設定することはできません。ただし、同じ条件キーが他のポリシーのいずれかにも表示された場合、設定した値は SCP を含む評価全体で使用されます。
セキュリティ上の理由により、SCP 評価では欠落しているコンテキスト値は返されません。リクエストの許可または拒否の決定が依然として表示されます。