IAM Policy Simulator の使い方

記事タイトルとURLをコピーする

こんにちは、技術2課の加藤ゆです。
最近ようやく気温が10度代になりましたね、涼しい~薄着で寝たら鼻かぜを引きました。

今回は、IAM Policy Simulator のご紹介記事です。

皆さんご存じでしょうか。
私は知りませんでした。へぇ~こんなのあるんだと思ったのでご紹介してみます。

IAM Policy Simulator とは?

マネジメントコンソール上で、アクションが意図通りであるか確認が出来る機能です。

IAM Policy Simulator を使用すると、アイデンティティベースのポリシーおよび IAM アクセス許可の境界をテストして、トラブルシューティングが行えます。
Policy Simulator は、AWS での実際の環境とは異なる結果を出力することがあります。Policy Simulator によるテスト後は、実際の AWS 環境とポリシーを照合して、得られた結果が目的にあっているか確認することをお勧めします。

IAM Policy Simulator を使用した IAM ポリシーのテスト - AWS Identity and Access Management

ポリシー書いてみたけど、これでイケるのかは分からないからとりあえずやってみよう!
という経験はありませんか?

検証環境で同一のリソースを用意してアクションを実行するのも手ですが、あくまで机上で動作確認をすることが出来るのが「IAM Policy Simulator」です。 ただし、公式にもある通り「実際の環境とは異なる結果を出力することがあります」との事なので最終動作確認は必要でしょう。

何が出来る?

公式ドキュメントの記載を見ると以下のように記載があります

Policy Simulator で可能ないくつかの一般的な処理
IAM ユーザー、ユーザーグループ、またはロールにアタッチされている、アイデンティティベースのポリシーの動作テスト
IAM エンティティに対するアクセス許可の境界の効果のテスト
AWS リソースにアタッチされている IAM ユーザーのリソースベースポリシーの効果のテスト
アイデンティティベースのポリシーに対するサービスコントロールポリシー (SCP) の影響のテスト
新規作成するアイデンティティベースのポリシーの動作テスト
アイデンティティベースのポリシーで、アクセスを許可または拒否しているのは、どのステートメントなのかを特定

まとめると

  • IAMポリシーについて、どのアクションが許可または拒否されているかをテスト出来る
  • アクセス許可の境界が機能しているか確認が出来る
  • SCPの影響を確認できる
  • ポリシーのJSONステートメントと照らし合わせてテストが出来る

ポイント

  • 1.シミュレーターでは、実際にAWS サービスリクエストの生成はしません
  • 2.シミュレートしたリクエストに対するレスポンスは出力しません
  • 3.Policy Simulator 内でポリシーを編集しても、その変更はAWS アカウント 内のポリシーには適用されません
  • 4.クロスアカウントアクセスのシミュレーションはサポート外

AWSアカウント上のリソースとは、完全に切り離して考えましょう。

あくまでテストですので、アカウント上のリソースには何の影響も与えませんし、
見ているのは「許可」されたのか、「拒否」されたのかだけです。

ちなみにIAMは利用料金がかかりません。

使ってみよう

docs.aws.amazon.com

IAM ポリシーシミュレーターコンソールへアクセス

コンソール上だとココ↓ にあります。
URLからもアクセス可能です。 https://policysim.aws.amazon.com/

ちなみに2023年10月時点では、IAMロールの画面からも遷移可能でした。

使い方

一見分かりにくいと思いますが、設定箇所は以下のようになっています。

1.IAM Policy Simulator のモード

コンソール上部にある「Mode:」にてテストするタイプを選択します。

  • Existing Policies
    • IAMリソースに既にアタッチされているポリシーをテストする場合に利用
  • New Policy
    • IAMリソースにアタッチされていないポリシーをテストする場合に利用

2.シミュレーション対象の選択

アカウントの IAMリソースが [Users, Groups, and Roles] (ユーザー、グループ、およびロール) の下に一覧表示されます。
リストの中で、検証したいポリシーがアタッチされている対象を選択します。

SCPの動作検証をしたい場合は?
※シミュレーターを実行しているアカウントが、Organizations組織のメンバーである必要があります。
「AWS Organizations SCP」 のチェックボックスを有効にして、シミュレートされた評価に SCP を含めます。
利用しているAWSアカウントがOrganizations組織メンバーでない場合、そもそもチェックボックスは表示されません。

3.テストするアクションの選択

  • 「Select service (サービスの選択)」にてテストするサービスを選択
  • 「Select actions(アクションの選択)」 を選択し、テストするアクションを 1 つ以上選択

選択したすべてのサービスとアクションが表示されます。

4.シミュレーションの実行

「Run Simulation (シミュレーションの実行)」を押下する。

「Action Settings and Results」の「Permission」列に、指定したリソースでのそのアクションのシミュレーション結果が表示されています。
アクションが実行できる場合は「allowed」、出来ない場合は「denied」です。

おまけ

「allowed」のものに限りますが、該当するステートメントの協調表示が出来ます。
個人的にはdenyの方に欲しい機能なようにも思いますが・・・

①「allowed」行を選択>②「 Show statement」を押下>③左のPolicyペインに強調表示されます。

おわり

マイナーですが知っとくと使えるときがあるかも?というサービスでした。
認知度は高くないと思いますが、IAMポリシーを本番適応する前にポリシーだけ検証出来るのはメリットかなと思います。

一方でリソースベースのポリシーはシミュレーション出来ないのでS3バケットポリシーと組み合わせて検証したい!等は難しそうですね。

最後までご覧頂きありがとうございました;)

加藤 由有希 エンジニアブログの記事一覧はコチラ

エンタープライズクラウド部 所属

2020年4月に新卒入社