[アップデート] IAM Access Analyzer で許可しているにも関わらず未使用なアクションや未使用のIAMロールを簡単に検出できるようになりました #AWSreInvent

最小権限の付与の徹底やIAMロールの棚卸しに
2023.11.27

このIAMロールに権限与えている権限で不要なものを精査したい

こんにちは、のんピ(@non____97)です。

皆さんIAMロールに権限与えている権限で不要なものを精査したいしたいなと思ったことはありますか? 私はあります。

IAM Access Analyzerを用いることでIAMユーザー/IAMロールの実際の操作履歴からIAMポリシーを生成することは可能です。

ただし、IAMポリシーを生成する前に、各IAMユーザー/IAMロールでどのアクションが使われていないのか一覧で把握したい時があります。

今回のアップデートでIAM Access Analyzer で許可しているにも関わらず未使用なアクションや未使用のIAMロールを簡単に検出できるようになりました、

AWS Blogsにも公開されています。

これにより、不要なアクションやIAMロールを一覧で確認できるようになりました。

実際に触ってみたので紹介します。

やってみた

アナライザーの作成

まず、IAM Access AnalyzerのAnalyzerを作成します。

S3のバケットポリシーやIAMロールの信頼ポリシーなど、従来の外部アクセス許可をチェックするアナライザーとは別になります。

従来のAnalyzerは検出結果タイプ外部アクセスのAnalyzerです。

Access Analyzer の設定

そのため、左メニューから未使用のアクセスをクリックしてもアナライザーは設定されていませんと表示されます。

未使用のアクセスに関する検出結果

Analyzerを作成する際は検出結果タイプで未使用のアクセス分析を選択します。

未使用のアクセス分析

パラメーターらしいパラメーターは追跡期間程度です。ここで指定した日数を超えて使用されていないアクションやIAMロールが検出されます。こちらの追跡期間はAnalyzer作成後に変更することはできません。また、各検出結果タイプ毎のAnalyzerはリージョン毎に1個までです。追跡期間を変更したい場合は既存のAnalyzerを一度削除した上で作り直すことになります。

アナライザーの詳細

Analyzerを作成して、数分ほど待つと検出結果が表示されました。

未使用のアクセスに関する検出結果の確認

未使用の許可の確認

検出結果のタイプが未使用の許可で検出されているIAMロールを選択します。

下の画像のIAMロールにはAdministratorAccessを付与しています。そのため、未使用の許可が345件も検出さえています。

未使用の許可

各行を選択すると、具体的にどのアクションが未使用なのか確認することが可能です。

未使用の許可の詳細

未使用のロールの確認

検出結果のタイプが未使用のロールで検出されているIAMロールを選択します。

未使用のIAMロール

最終使用日が決してしないとなっていますが、1年前に使用しているIAMロールです。その他検出されたIAMロールも同じくでした。そのため、追跡期間を超過したIAMロールについては一律で最終使用日は決してしないになるように思えます。

料金

料金は以下のとおりです。

$0.20 /毎月分析される IAM ロールとユーザーの数

IAM アクセス アナライザーの価格

ざっと確認したところ、全リージョン同じ料金でした。

IAMロールやIAMユーザーが大量にあるとそれだけで料金が嵩んでしまいそうです。

こちらの機能で検出した不要なIAMロールやIAMユーザーは削除してしまいましょう。

2023/11/29 追記ここから

実際に翌日弊社のポータルから料金を確認すると、USE1-AccessFinding-Monitored-IAM-Resourcesとして料金が計上されていました。

検証で使っていたIAMロールが130個以上あったため、設定をしただけで26.80 USDかかっています。

USE1-AccessFinding-Monitored-IAM-Resources

ちなみに裏では何回かAnalyzerを作り直しています。そのため、「IAMロールとIAMユーザーの数 × スキャンした回数」ではないようです。

また、今回は料金が怖くて試せていないですが、外部アクセスのAnalyzerを複数のリージョンに作成すると、「IAMロールとIAMユーザーの数 × 外部アクセスがあるAnalyzerのリージョン数」になるのではないかと予想します。

料金表にわざわざ全リージョンの場合の料金を載せているということは、外部アクセスのAnalyzerによるIAMロールやIAMユーザーのスキャンはいずれのリージョンでも動作するのだと考えます。

無理して全リージョンで動作させても結果はリージョン間で同じすし、料金が無駄に高くなる可能性があるという点から、基本は1リージョンのみで作成するのが良いでしょう。

2023/11/29 追記ここまで

最小権限の付与の徹底やIAMロールの棚卸しに

IAM Access Analyzer で許可しているにも関わらず未使用なアクションや未使用のIAMロールを簡単に検出できるようになったアップデートを紹介しました。

検出結果タイプ外部アクセスのAnalyzerでもOrganizations連携やアーカイブルールを用意することが可能です。

また、Security Hub経由で管理アカウントに集約することで、簡単に全アカウント、全リージョンのFindingsを確認が可能です。EventBridge Schedulerと組み合わせて各アカウント毎の定期レポートを通知するといったことも可能だと思うので、活用していきたいですね。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!