[レポート]IAM アクセス アナライザーの未使用アクセスのパワーを解き放つ #IAM373 #AWSreInforce

re:Inforce 2024で行われた「IAM373-R | Unleash the power of IAM Access Analyzer unused access」のレポートです。いいセキュリティ自動化のヒントになります!
2024.06.11

こんにちは、臼田です。

みなさん、IAMのセキュリティ意識してますか?(挨拶

今回はAWS re:Inforce 2024で行われた下記ワークショップセッションのレポートです。リスクの高くなったIAMリソースを自動で無効化していくパワフルなセキュリティ運用の実装ヒントをつかめるワークショップでした。

IAM373-R | IAM アクセス アナライザーの未使用アクセスのパワーを解き放つ

AWS Identity and Access Management Access Analyzer の未使用アクセスの検出結果に基づいて、最小権限のジャーニーをサポートする方法を学びます。IAM Access Analyzer は、環境を継続的に監視し、リソースへの適切なアクセス制御を維持するために注意が必要な点に関する洞察を提供します。未使用アクセス分析は定期的に検出結果を生成し、通知ワークフローのために Amazon EventBridge および Amazon SNS と統合されています。これらの通知は、CI/CD パイプラインをトリガーして検出結果を評価し、プルリクエストでレビュー対象の修正を提案し、プルリクエストが承認されると、自動デプロイをトリガーします。このワークショップでは、ポリシー内の未使用のロール、ユーザー、および権限をデプロイ、監視、および修正する方法を学びます。参加するには、ラップトップを持参する必要があります。

IAM373-R | Unleash the power of IAM Access Analyzer unused access

Learn how to support your least-privilege journey by acting on AWS Identity and Access Management Access Analyzer unused access findings. IAM Access Analyzer continuously monitors your environment and provides insights on what needs attention to maintain proper access control to resources. Unused access analysis generates findings periodically and is integrated with Amazon EventBridge and Amazon SNS for notification workflows. These notifications can trigger a CI/CD pipeline to evaluate findings and propose remediations in a pull request to be reviewed, and once the pull request is approved, it triggers automated deployment. In this workshop, discover how to deploy, monitor, and rectify unused roles, users, and entitlements in policies. You must bring your laptop to participate.

レポート

本ワークショップはIAM Access Analyzerの比較的最近実装された未使用のIAMリソースを特定する機能を利用して、未使用のまま放置されたIAMリソースを無効化したり削除したりするフローを組む内容です。

全体像としては以下のような形で、IAM Access Analyzerでの検出(Findings)をLambdaが受け取って通知し、人が対応するか例外としての登録を申請します。

Lambdaは受け取った未使用の内容が許容範囲内の期間(例えば180日など)かどうかを判断し、許容の限界を超えていたら、強制的に未使用のパスワード・アクセスキーなどを無効化します。

利用者は許容範囲内に受け取った通知をベースにgitで抑制対象のIAMをARNのリストとしてプルリクエストし、セキュリティチームの承認を得られたら抑制対象となります。

実際のワークショップの画面は以下のような感じです。この内容はaws-samples/aws-iam-unused-access-workshopとして公開されているため、(私は未確認ですが)試してみてはいかがでしょうか?

以降は実行した内容をかいつまんで紹介します。

環境を展開すると以下のようなEventBridgeでIAM Access AnalyzerのFindingsをLambdaに転送しています。

抑制対象のリストはgit上で(今回はCodeCommit上で)以下のようにファイル管理されています。

PRがマージされると、このリストを更新して処理系に組み込まれます。

許容範囲を超えたIAMリソースが検出されると、以下のメールと共に無効化されました。

実際に無効化された画面です。

感想

IAM Access Analyzerの未使用のIAMリソースを検出する機能を使って自動アクションするワークショップでした。

今回は期限を切ってアクションを分けたり、通知をSNS -> emailという形式でしたが、アレンジのやりようがいくらでもあって、Slackに飛ばしたり期間を変えたりいきなり無効化したり、自分たちのポリシーにあった使い方ができそうだと感じました。

セキュリティ運用を自動化するための参考になると思いますので、ぜひ皆さんチャレンジしてみてください!