こんにちは佐々木です。 シンプルだが有用なサービスがリリースされました。CloudTrailとIAM Access Analyzerのあわせ技で、AWSの実際の利用履歴を元にIAMポリシーを生成する機能がリリースされました。これ機能のアプローチとしてとても良いので、IAMに一家言がある人間として紹介させて頂きます。
IAMポリシーと最小権限の原則
IAMのセキュリティのベストプラクティスの一つに、最小の権限のみを与えるというものがあります。大きな権限を与えるのではなく、実際に使う必要な権限のみを与えましょうねという原則です。
この最小権限の原則について、意義を唱える人はいないと思います。しかし、実践は非常に難しいです。なぜならば、最小権限を実現するためには、事前に権限を与える人/プログラムの担当範囲がはっきりしていて、かつそれを実現するために必要なIAMの権限を理解している必要があるからです。つまり、機能設計が完了して、かつIAM(AWS)をマスターしていないといけないということですね。この条件を満たせる自信ありますか?私は無いです。
人類に最小権限の原則は早すぎたのではないかと懸念されている中で登場したのが、今回のIAM Access Analyzerの新機能です。この機能は、CloudTrailに記録された実際の操作履歴(利用した権限)を元に、IAMポリシーを作るという機能です。AWSやIAMのことが解っていなくても、利用した範囲の権限のみを許可するIAMポリシーを作ることができます。現実的なアプローチですよね。
アクセス履歴を元にしたIAMポリシーの作成機能
前置きが長くなりましたが、ここから新機能の説明です。AWSからのアナウンスは、次の2つです。
アクセスアクティビティに基づく IAM ポリシー生成を通して最低権限の実装を IAM Access Analyzer で容易に Generate policies based on access activity - AWS Identity and Access Management
機能の理解は、実際に画面をみてもらう方がイメージ付きやすいと思います。画面とともに紹介しています。履歴からのIAMポリシーの生成は、IAMユーザーもしくはIAMロールで利用可能です。対象のユーザー/ロールを選択の上で、アクセス制限タブを選びます。画面下部の方に、「CloudTrail イベントに基づいてポリシーを生成」から利用可能です。
使い方は簡単で、ほぼ生成の対象となる日付を選ぶだけで、何日前という指定もしくはカレンダーからの指定ができます。最長90日間の履歴から生成できますが、当然ながらリソース生成前は指定できません。
「ポリシーの生成」ボタンを押すと、10分弱でポリシーが生成されます。
生成されたポリシーは、こんな感じですね。管理用のユーザーを対象にしていたので、見事にIAMに関する権限のみになっています。上手く動いていそうですね。
利用上の注意点
利用上の注意点は幾つかあります。並行して複数のポリシーの生成ができないということや、月辺りの実行回数の制限があります。この辺りは、大きな問題ではないと思います。それより問題となりやすいのが、IAMロールの場合です。IAMユーザーは、基本的に利用されるのは単一の人間が使うことになると思います。(そうでない場合は、運用を見直しましょう。)しかし、IAMロールはAWS内部/外部のIdPで認証された利用者に対して、IAMロールを割り振ることになります。結果として、複数の人間が同一のIAMロールを利用することになります。ここは意識しておいた方がよいでしょう。AWS SSO導入済みのところについては、特に注意が必要ですね
また、全てのAWSリソースの利用履歴がCloudTrailに残る訳ではないです。履歴に基づいているのに、なぜか権限不足になるという状況も発生しうると予想されます。それ以外にも、なんか落とし穴あるんじゃないかなという気がしているので、継続的にウォッチしていきます。
どう活用すべきか?
繰り返しになりますが、「CloudTrail イベントに基づいてポリシーを生成」は、シンプルながら非常に良い機能だと思います。ただし、これを使えばIAMを理解していなくてもいいのかというと、そうとも言えません。履歴を元に生成しているので、最初は大きめの権限を与える必要があります。また、そもそも正しくない行動をしていない場合は、そのままポリシーとして反映されることになります。IAMの設計が不要になるという類のものではなく、設計のサポートという位置づけにしたほうが良いと思います。
ただ相性がよいものもあります。人間系のAWSコンソール利用は、その時の活動によってブレが生じます。一方で、プログラムからの利用は、基本的に必ず同じ権限を利用することになります。そして、プログラム用の権限こそ、最小権限を付与すべきです。今回の新機能は、プログラム利用のIAMロール/IAMユーザーのポリシー生成と非常に相性が良いです。ここに是非活用していきましょう。
まとめ
この機能をどのように使っていくか、これからドンドンでてくると思います。いい方法があれば、随時共有していきたいと思います。また、IAMの設計について、よく解らんのだよねぇという人はこの本を参考にしたらいいんじゃないかなと思います。※ステマ