やりつくされた IAM アクセスアドバイザーの紹介をあえてやる

これは エキサイトホールディングス Advent Calendar 2022 の21日目の記事です。

みなさん、AWS を利用していて IAM の最小権限を割り当てるって難しくない?と思ったことはありませんか。そんな時は IAM アクセスアドバイザーが便利ですよね。ネット上に IAM アクセスアドバイザーについての説明はごろごろありますが、あまり目立たない機能なのであえて紹介してみたいと思います。

目次

IAM アクセスアドバイザーとは

IAM アクセスアドバイザーとは、IAM リソースがアクセス可能なサービスや IAM リソースの過去のアクセス履歴などの情報を提供してくれる IAM の機能です。この機能はマネージメントコンソール上で利用したり、API が提供されているので CLI で利用したりすることができます。

どんな時に役に立つか

権限を整理し最小権限に近づけることができます。例えば、高権限な IAM ポリシーを持った IAM ロールが存在しているが、その IAM ロールが利用しているサービスが限定されていることが分かれば、割り当てているポリシーを見直すきっかけになるでしょう。

他にも、簡易的な監査に利用できます。例えば、意図していない AWS サービスにアクセス可能となっていないか確認できたり、過去一定期間でアクセスした AWS サービスの履歴の表示をできたりします。なおサービスの追跡期間は過去 400 日間です。十分すぎますね。

実例

マネージメントコンソール上での見え方を紹介します。まず、IAM サービスに移動して適当に IAM ユーザや IAM ロールを1つ選択します。そうすると画面中央あたりに「アクセスアドバイザー」というタブがあるので押下すると下記のような画面が出るかと思います。

アクセスアドバイザータブ押下後の画面

ここでは、選択した IAM エンティティが過去に利用したサービス一覧と日付が表示されています。ここを見れば、普段から使用している・使用していないサービスを把握することができます。つまり、使用していないサービスが見つかれば、そのサービスに対する権限を剥奪することにより、最小権限な IAM ポリシーを作成することができます。

さらに、EC2, IAM, S3, Lambda サービスについてはリンクになっており、飛び先でより詳細な情報を確認できます。今回は EC2 の画面を見てみます。EC2 を押下した画面が下記となっています。

アクションレベルで使用サービスを確認する画面

EC2, IAM, S3, Lambda サービスについてはアクションごとにアクセス時間とアクセスリージョンを表示してくれます。ここではサービスのどのアクションを普段から使用している・使用していないかを確認できます。つまり、使用していないアクションが見つかれば、そのアクションの権限を剥奪することで、より最小権限な IAM ポリシーを作成することができます

どうしても適切な IAM ポリシーの作成に困ったら少しだけ緩めに権限を作成し、数日後に実際に IAM エンティティが利用しているサービス(EC2, IAM, S3, Lambdaに限る)のアクションが分かるのでそのタイミングで最小権限な IAM ポリシーを設定するといった方法もとれますね。

まとめ

簡単ではありますが、今回は IAM アクセスアドバイザーを紹介しました。
あまり目立たない機能ですが、権限整理にはもってこいの機能ですし追加料金もかからないので、ぜひ使ってみてはいかがでしょうか。