IAM Roleでのリソース操作をPolicy Simulatorでテスト出来るようになりました。
こんにちは、せーのです。今日はIAM Policy Simulatorのテスト対象にIAM Roleが加わったのでご紹介します。
権限管理は大事
AWSのようなクラウドでシステムの開発、運用を行う場合、誰がどこまでAWSリソースを触れるのか、という管理は非常に重要になってきます。例えば開発者が料金関係のリソースが参照できるのは避けたほうがよいですし、テスターが本番環境のEC2を停止させたり削除させたりできるのも好ましくありません。こういったそれぞれのユーザーに対する権限管理はIAMユーザー、IAMグループに対してポリシーを設定することで個別、またはグループ毎に管理することが可能です。
同じことはIAMロールにも言えます。EC2につけているIAMロールがIAMユーザーを削除する権限があったりすると万が一ハックされた時に大変な事になりかねませんし、フェデレーションユーザー向けのSwich用IAMロールにもそのユーザーに許すべき権限のみを許可する必要があります。 ところが最近はAWSもサービス内容が増え、できることも格段に多くなっていますので、自分の設定したポリシーがどこまで適切に設定できているのか、また最近出来た「管理ポリシー」というポリシーのテンプレートセットのようなものがあるのですが、それを使う時もこのポリシーはどんな操作まで許されているのかをきちんと把握しておくことが大事です。
そこで使うのが[Policy Simulator]です。これを使うことで事前にどのポリシーがどの操作を許しているのかをシミュレーションすることが出来ます。 今まではIAMユーザ、IAMグループのポリシーがシミュレート出来たのですが、今回のアップデートでIAMロールのポリシーもシミュレート出来るようになったので早速試してみましょう。
やってみた
まずはPolicy Simulatorに移動します。こちらのリンクかIAMサービスから移動して下さい。
カテゴリを見ると「Roles」が新たに追加されています。
Rolesを選択すると現在のIAMロールの一覧が出ますので試してみたいIAMロールを選択します。最近はLambdaを触ることが多いのでLambdaにて自動生成されたIAMロールを選択してみます。
次にテスト対象のサービスとアクションを選びます。今回はこのIAMロールがS3に対してどれくらい操作できる権限を持っているのか調べてみます。 サービスにS3を選択し「Select All」をクリックします。これでS3の全ての操作がシミュレート対象に追加されます。
テスト対象はどんどん追加することが出来ます。S3の操作に加えてEC2の全操作もシミュレート対象に追加してみます。
[Run Simulation]ボタンを押すとシミュレーションがスタートします。許可されている操作は「allowed」許可されていない操作は「denied」と表示されます。このポリシーではEC2系が許可されていてS3系は操作できないようです。シミュレート結果の全体は画面上部にサマリーとして表示されています。
Policy Simulatorは自分の望む権限管理がどのようなポリシーを書くことで実現できるかテストすることもできます。左ペインのポリシーを選択するとポリシー内容がJSON形式で表示されます。
ポリシーを手で直接書いたことのある方には見慣れた形だと思います。これを編集することで自分の書いたポリシーが適切に動くのかどうか、何回でもテストすることが出来ます。S3系が許可されていないので、直接許可するように書き足してみます。
もう一回シミュレーターを走らせてみます。S3系のアクションも全て「allowed」になりました。
ここで間違いやすいので覚えていて欲しいのは「ここで編集したポリシーは実際のポリシーには反映されていない」ということです。ここで編集してテストした結果意図した操作が通ると安心してしまって画面を閉じてしまうことがあるのですが、これはあくまでシミュレータなのでIAMロールから実際のポリシーを変更しないと適用はされません。逆に言うと現在絶賛使用中の本番環境のポリシーもまったく気にせずにここでガンガン変えても実際のシステムの動きには影響はない、ということです。ポリシーの上部にも注意書きがありますので気をつけましょう。
まとめ
いかがでしょうか。ポリシーの設定は特にAWSではややこしい部分の一つです。ついつい[PowerUser]や[Administrator]のように「動けばいいから全部許可」としてしまいがちですが、グッとこらえて一つ一つテストしながらポリシーを組み立てていきましょう。