このアクション、いまのポリシー設定で実行できる? IAM Policy Simulator でお手軽に確認しちゃおう

IAM ユーザー、グループ、ロールなどにアタッチされているポリシーが、アクションに必要な権限を持っているかを机上で確認することができるシミュレータのご紹介です。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンバンハ、千葉(幸)です。

IAM ポリシーを設計・設定したのちには、きちんと意図通りに動作するか確認したいものです。とはいえ、リソースに変更を加えるようなアクションはなかなかテストしづらいですよね。

テスト用のリソースを作ったり消したりして対応する場面も多いかと思いますが、それすら許容されないケースもあります。そんな時にあくまで机上での動作のシミュレートができるのが IAM Policy Simulator です。

使い方を確認していきましょう。

目次

IAM Policy Simulator の全体像

以下のようなイメージです。

IAM Policy Simulator へのアクセス方法

以下のいずれかで可能です。いずれも、マネジメントコンソールにサインインしていることが前提であることに注意してください。

  • 直接アクセス(https://policysim.aws.amazon.com/
    • サインアウトしている状態でアクセスすると、まずサインイン画面が表示されます
  • IAM コンソールダッシュボードからアクセス
  • IAM ロール もしくは ユーザーの画面からアクセス
  • IAM グループの画面からアクセス

IAM コンソールダッシュボードからアクセスする場合はここからです。

IAM ロールもしくはユーザーの場合、アタッチされているポリシーを展開することでシミュレータへの遷移ボタンが表示されます。当該ポリシーを選択した状態から始まります。

IAM グループの場合、アタッチされている IAM ポリシーの画面から遷移できます。ただ、ここで選択したポリシーはシミュレータで選択されているわけではありません。(ここから飛べる嬉しさがよく分かっていません。)

IAM Policy Simulator に必要な権限

各 IAM リソースにアタッチされているポリシーやその中身、あるいはリソースに設定されているポリシーなどをシミュレートするために、それらに対する参照権限が必要です。

実際にアクションを起こすわけではないので、「シミュレートしたいアクション」に対する権限は不要です。

詳細は以下を確認してください。

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

IAM Policy Simulator のモード

シミュレータでは以下のモードを切り替えることができます。

  • Exiting Policies(既存の IAM リソースにアタッチされているポリシーを使用)
  • New Policy(シミュレート用のポリシーを新規作成)

モードによって、シミュレートする際の各種ポリシーの設定可否が異なります。「●」が設定できること、「×」が設定できないことを表します。

項目 概要 Exiting Policies New Policy
AWS Organizations SCPs アカウントが Organizations に所属している場合、適用されている SCP ×
IAM Policies ユーザー/グループ/ロールにアタッチされているポリシー ×
Custom IAM Policies シミュレート用に作成するポリシー
Permissions Boundary Policy ユーザー/ロールにセットされているアクセス権限の境界 ×
Custom IAM Permissions Boundary Policy シミュレート用に作成するアクセス権限の境界
Resource Policies アクションの対象のリソースに適用されているポリシー

シミュレートするポリシーの設定方法

画面左側のペインでポリシーを設定する際の手順を見ていきます。

モードがExiting Policiesの場合は以下のようなイメージです。

まず、ユーザー、グループ、ロールの種別を選択し、種別ごとに表示される一覧から、確認したいものを個別に選択します。

個別に選択した IAM リソースについて、設定するポリシーが表示されるようになります。

New Policyモードを選択した場合は、上記のような選択のプロセスがなく、以下のような画面となります。

以降の説明では、 Exiting Policies モードの画面で確認していきます。

AWS Organizations SCPs

シミュレートに使用している AWS アカウントが Organizations のメンバーアカウントであり、影響する SCP が設定されている場合には、このペインに表示されます。(下記例では何も表示されていない状態です。)有効/無効を切り替えることもできます。

IAM Policies、Permissions Boundary Policy

選択した IAM リソースに設定されている IAM ポリシーアクセス権限の境界が表示されます。個々にポリシーの有効/無効が選択できるほか、個々のポリシーを編集することもできます。

ここでの編集はあくまでシミュレータ用の編集であり、実際の AWS リソースに変更を加えることはないことをご留意ください。

Custom IAM Policies、Custom IAM Permissions Boundary Policy

シミュレータ用にカスタムのポリシーを作成することができます。[ Create New Policy ]を押下します。

以下のような作成画面に遷移するため、必要な情報を入力しカスタムポリシーを作成します。あくまでシミュレータ上で有効なものになります。

作成したカスタムポリシーは以下のようにペインに表示されます。

Resource Policies

IAM に適用するポリシーではなく、リソースに適用するポリシーを選択します。 S3 のバケットポリシーや、 SNS のトピックポリシーなどが該当します。

このポリシーは、画面右側の操作で入力することになります。サービス・アクションを選択すると、アクション一覧が画面下部に表示されます。

アクションに対応しているリソースタイプがある場合、ARNを入力できる欄があります。さらにそのリソースがリソースベースポリシーに対応している場合、[ Include Resource Policy ]にチェックを入れることで、対象のリソースベースポリシーを選択したことになります。

いずれか一つのアクションで入力するだけで自動的に他のアクションにも適用されます。

左側のペインでは以下のように表示されます。 JSON で内容を確認することはできますが、シミュレータ上で編集することはできません。

グローバル条件キーの入力

上記で指定したポリシーの中にグローバル条件キーが含まれている場合、値を入力してシミュレートすることができます。

ec2:s3: といったサービス固有の条件キーはここに入力することはできません。

シミュレートの実行

ここまで見てきたような設定可能な項目として以下があります。

  • ポリシーの設定
  • 対象のアクションの選択
  • 対象のアクションに紐づくリソースの ARN の指定
  • グローバル条件キーの入力

これらを必要に応じて入力した上で[ Run Simulatuon ]を押下することで、シミュレートが実行されます。

以下のように、アクションごとに結果が表示されます。指定した条件でアクションが実行できる状態であれば allowed、権限が不足していれば denied が表示されます。

allowedの結果になったものについては、アクションの詳細画面から、どのポリシーのどのステートメントが該当するかを確認することができます。

シミュレータを動かすのはどんな場面でもワクワクしますね。

終わりに

IAMPolicy Simulator の使い方について確認しました。

タイトルで「お手軽に」と書いてしまいましたが、ある程度前提知識がないと使いこなすのは難しいかもしれません。

実際の環境で動作確認できるに越したことはないですが、それが難しいケースもあります。シミュレータで担保できる部分を見極めた上で、選択肢の一つとしてご活用ください。

以上、千葉(幸)がお送りしました。