ポリシーをシミュレートする方法
シミュレーションは、IAM コンソールまたは AWS CLI および AWS API を使用して実行できます。シミュレーターが評価する内容、2 つのモード、および結果を取得する方法の概要については、「IAM ポリシーシミュレーターを使用した IAM ポリシーのテスト」を参照してください。必要なアクセス許可については、「ポリシーシミュレーターの使用に必要なアクセス許可」を参照してください。
ポリシーをシミュレートする (コンソール)
IAM コンソール
注記
https://policysim.aws.amazon.com/
プリンシパルモード
ID を選択する
まず、何らかの ID を選択します。そのアカウントの IAM ユーザー、ロール、またはグループを選択できます。選択すると、これらの ID にアタッチされたポリシーがサイドパネルに表示されます。
ポリシーを含める、または除外する
サイドパネルには、インラインポリシー、AWS マネージドポリシー、カスタマー管理ポリシー、アクセス許可の境界など、シミュレーションの対象となるポリシーが一覧表示されます。ポリシーをいったん除外して、ポリシーなしで結果がどのように変化するかを確認したうえで、再度含めることができます。アクセスを許可するポリシーを除外すると、結果として暗黙的な拒否が生じます。
アクションとリソースを追加する
左側のパネルで ID とポリシーを選択したら、テストするアクションを追加します。リソース選択をサポートするアクションは、すべてのリソースに対してテストするか、もしくは 1 つまたは複数の特定のリソース ARN を入力してテストできます。複数のアクションが同じリソースタイプを使用している場合、一度にすべてのアクションに 1 つのリソースを適用するか、もしくは 1 つのアクションに対象を絞ることができます。
一部のアクションでは、シミュレーターによる評価の前に、関連する複数のリソースタイプのグループが必要です。たとえば、ec2:RunInstances をシミュレーションしようとすると、イメージ、インスタンス、およびセキュリティグループを一緒に指定して、シナリオに応じてサブネットまたはボリュームを指定するよう求めるプロンプトがコンソールに表示されます。
条件キー値を指定する
テストするポリシーに条件キーが含まれている場合、シミュレーターに関連するキーが一覧表示されるので、シミュレーション実行前にユーザーが値を設定できます。表示されるキーには、現在選択されているポリシーが反映されているため、ポリシーを選択またはクリアすると、そのキーが追加または削除されます。値が条件を満たさない場合、そのアクションは拒否されます。
シミュレーターは、2 つの場所で条件キーの値を提供します。グローバルリクエスト条件は、シミュレーションされたリクエスト全体に適用されます。これらは、aws: で始まるキー (aws:MultiFactorAuthPresent や aws:PrincipalServiceNamesList など) で、ユーザーはグローバル条件領域でそれらの値を一度設定します。ポリシーを選択またはクリアするとグローバルキーは追加または削除されますが、ユーザーが入力した値は、対象となるポリシーを調整する際にも保持されます。サービス固有の条件は、1 つのアクションに適用されます。各アクション行には参照する条件の数が表示され、ユーザーは行を開いて、cloudwatch:PutMetricData の cloudwatch:namespace や ram:ListPermissionAssociations の ram:PermissionResourceType など、そのアクションのサービス固有のキーを設定できます。アクション行には、グローバルキーとサービス固有のキーの両方を含めることができ、いずれかの値が条件を満たさない場合、そのアクションは拒否されます。
IAM ポリシーシミュレーターがいくつかのプリンシパルと組織のコンテキストキーを自動入力し、残りの値はユーザーが指定します。自動的に入力されるキーのリストと、条件キーの評価方法の詳細については、「IAM ポリシーシミュレーターでの条件キー評価の仕組み」を参照してください。
条件キーの使用方法については、「AWS グローバル条件コンテキストキー」を参照してください。
アクセス許可の境界をテストする
ID にアクセス許可の境界がある場合、サイドパネルにアクセス許可の境界が表示され、デフォルトで含まれます。境界がアクションの拒否の原因であるかどうかを調べる場合は、境界を除外してシミュレーションを再度実行することもできます。
たとえば、境界で許可されていない ID について iam:DeleteRole をシミュレーションしたとします。シミュレーション結果は、アクセス許可の境界に起因する拒否となります。次に、アクションを許可し、境界を除外するポリシーを追加すると、結果は許可に変わります。これにより、その境界がアクションをブロックしている唯一のコントロールであることを確認できます。
サービスコントロールポリシーを含める
お使いのアカウントが組織のメンバーである場合は、シミュレーションにサイドパネルからのサービスコントロールポリシー (SCP) を含めることができます。シミュレーターは、結果を決定するときに SCP で自動入力された条件キーとリソース範囲を評価します。SCP がアクションを明示的に拒否する場合、結果は AWS Organizations に起因する明示的な拒否となり、別のポリシーによる許可によりそれをオーバーライドすることはできません。コントロールをオフにしてシミュレーションを再度実行し、組織のコントロールなしでどのような結果が得られるかを確認します。自動入力される条件キーのリストについては、「IAM ポリシーシミュレーターでの条件キー評価の仕組み」を参照してください。
注記
セキュリティ上の理由から、シミュレーターは SCP 評価の詳細を表示しません。SCP によってのみ参照される条件キーは、ユーザーが値を設定する際には一覧表示されません。結果に対して返される一致ステートメントには、SCP からのステートメントは含まれません。キーと一致ステートメントは、ID にアタッチされた ID ベースのポリシーと、ユーザーが指定したポリシーからのみ取得されます。
リソースベースのポリシーをテストする
コンソールシミュレーションにリソースベースのポリシーを含めるには、特定のリソース ARN を入力し、そのリソースのポリシーを含めるオプションを選択します。リソースベースのポリシーがサイドパネルに表示され、結果内で評価されます。コンソールでは、この機能は Amazon S3 バケット、Amazon SQS キュー、Amazon SNS トピック、Amazon Glacier ボールトで使用できます。
注記
リソースベースのポリシーに関するシミュレーションでは、IAM ロールはサポートされていません。
結果の読み取り
結果テーブルの各行には、アクションを許可するか、暗黙的に拒否するか、あるいは明示的に拒否するかが、結果の簡単な説明とともに表示されます。説明を確認することで、明示的な許可、一致するステートメントの欠落、アクセス許可の境界、組織コントロールなど、その結果の理由となったポリシーまたはコントロールを特定できます。
カスタムモード
IAM ポリシーエディタを使用して、アイデンティティベースのポリシーとアクセス許可の境界をカスタムモードで書き込みまたは貼り付けることができます。これらのポリシーは ID にアタッチされず、適用する前に評価できます。複数のアイデンティティベースのポリシーを含めることができますが、シミュレーションできるアクセス許可の境界は 1 つだけです。
注記
カスタムモードでは、コンソールはカスタム SCP の受け渡しやリソースベースのポリシーのシミュレーションをサポートしていません。カスタム SCP またはリソースベースのポリシーをシミュレーションするには、AWS CLI または AWS API を使用してください。
ポリシーをシミュレートする (AWS CLI および AWS API)
AWS CLI または AWS API を使用してポリシーをシミュレーションするには、通常、次の 2 つのステップを実行します。
-
ポリシーを評価し、ポリシーが参照するコンテキストキーのリストを返します。これにより、指定するコンテキストキーの値を把握できます。この手順は省略可能です。
-
シミュレーションで使用するアクション、リソース、コンテキストキーの値を指定して、ポリシーをシミュレーションします。
各アクションはそれぞれのリソースと組み合わせられており、シミュレーションを実行することで、ポリシーがそのリソースのアクションを許可するか、または拒否するかを確認できます。ポリシーが参照するコンテキストキーの値を指定することができます。コンテキストキーの値を指定しない場合、シミュレーションは引き続き実行されて暗黙的な拒否を返します。この時、欠落しているキーは missingContextValues で返されるので、追加すべき値がわかります。欠落しているコンテキストキーが SCP によってのみ参照されている場合、そのキーはセキュリティ上の理由から返されませんが、それでも許可か拒否かの結果を受け取ることはできます。
API アクションは 2 つのグループに分類できます。
-
文字列として API に直接渡されるポリシーのみをシミュレーションするアクション: GetContextKeysForCustomPolicy および SimulateCustomPolicy。
-
指定された IAM ユーザー、ユーザーグループ、ロール、またはリソースにアタッチされたポリシーをシミュレーションするアクション: GetContextKeysForPrincipalPolicy および SimulatePrincipalPolicy。これらのアクションは、他の IAM エンティティに割り当てられたアクセス許可を明示する場合があるため、これらのアクションについてはアクセス制限を検討してください。
これらのアクションは以下もサポートしています。
-
SimulateCustomPolicy の
OrderedOrganizationPolicyInputListでは、ライブプリンシパルを使用せずに組織の SCP 階層の影響をシミュレーションできます。 -
SimulatePrincipalPolicy の
PolicyExclusionListでは、「このポリシーを削除したらどうなるか」をテストできます。プリンシパルにアタッチされるポリシーを変更しないシナリオ。 -
レスポンスは、1 アクションごとに 1 つの
EvaluationResultを返し、最上位レベルで決定を集約するとともに、ResourceSpecificResultsでリソースごとの詳細を返します。
AWS CLI および AWS の API リファレンス
ポリシーをシミュレーションする AWS CLI コマンドの例については、以下を参照してください。