こんにちは、技術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は利用料金がかかりません。
使ってみよう
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バケットポリシーと組み合わせて検証したい!等は難しそうですね。
最後までご覧頂きありがとうございました;)