こんにちは、ネクストモード株式会社の平林です。
今回は、IAMロールを最適化する自動のパイプラインをテーマにしたワークショップ
「IAM Analytics: Automate & Visualize [REPEAT] (NTA302-R1)」に参加してきました。
データ収集から、分析・異常時のメール通知・ダッシュボードへの反映までが自動連携されており、非常に運用効率の高い構成でした。
セッション概要
まずはセッションの基本情報です。
- セッションID:NTA302-R1
- セッション名:IAM Analytics: Automate & Visualize
- 形式:Workshop(ハンズオン)
- レベル:300 – Advanced
- スピーカー:Kyle Ebertin、Sonar Patel
ワークショップの内容
今回のワークショップは、下記の構成で進みました。
- 環境の確認
- ラボ1:データの集中化とリスクスコアリング
- ラボ2:Quick Suiteセットアップ
今回の構成は下記です。
アーキテクチャの概要は下記のとおりです。
- DynamoDB:権限分析とAI生成kの脅威スコアを保存する
- Bedrock:AIを活用したリスクを評価する
- SES:自動メールを通知する
- Lambda:付与された権限と使用された権限を比較し、脅威スコアを生成する
- EventBridge:定期的な分析実行をスケジュールする
各サービスに用意されたIAMロールには下記3種類(適切なスコープ、過度に許可、非常に危険)あります。
- reinv-Read-***-Role:各サービスの特定のスコープに対して特定のアクション許可を含むポリシーを付与
- reinv-Full-***-Role:各サービスに対して全てのアクション許可を含むポリシーを付与
- reinv-Admin-***-Role:全てのAWSサービスに対して完全なアクセス許可を付与
ラボ1:データの集中化とリスクスコアリング
- DynamoDBテーブルの作成
- IAMロール分析テーブルの作成
- テーブル名:IAMAnalysis
- パーティションキー:RoleArn(文字列)
- ソートキー:Timestamp(文字列)
- その他:デフォルト
- IAMPermission分析テーブルも同様に作成
- テーブル名:IAMPermissionAnalysis
- パーティションキー:RoleArn(文字列)
- ソートキー:PermissionTimestamp(文字列)
- その他:デフォルト
- SESの設定
- CloudTrail Data Lakeの確認
- 後段のLambdaに設定するため、イベントデータストアのARNをコピーする
- Lambda関数の作成
- 指定のコードで関数を作成する
- 環境変数に下記を設定する
- VERIFIED_EMAIL:承認済みのSESメールアドレス
- EVENT_DATA_STORE_ID:コピーしたイベントデータストアのARN(eventdatastore/ の後ろの部分)
- 下記ポリシーを付与する
- AmazonDynamoDBFullAccess
- AmazonSESFullAccess
- IAMReadOnlyAccess
- AmazonBedrockFullAccess
- AmazonS3FullAccess
- AWSCloudTrail_ReadOnlyAccess
- 関数をテストし、正常に動作することを確認する
- EventBridgeでスケジューリング
- 検証
- DynamoDBのテーブルに新しい項目が追加されていることを確認する
- メールが届いていることを確認する
- CloudWatchログでエラーを確認する
- 完成した構成
- 実際の権限と付与された権限を1時間ごとに分析します
- 実際の使用パターンをCloudTrail Lakeでクエリします
- 過剰な権限を持つ役割に対して、AIを活用した脅威スコアを生成します
- DynamoDBに履歴データを保存します
- 高リスクを発見するとアラートを送信します。
- 初期設定
- データソースのセットアップ
- IAM-Role-Analysis:IAMロール分析用のデータソースを作成し、S3をデータソースに指定する
- IAM-Permission-Analysis:IAMPermission分析用のデータソースを作成し、S3をデータソースに指定する
- ダッシュボード構築
- IAM-Permission-Analysisのデータセットを指定し、新しい分析を作成する
- 手動で項目からビジュアルタイプを選択し、ビジュアルを作成する
- GenBIに対して、自然言語で質問し、ビジュアルを作成する
- データセットの編集アイコンからIAM-Role-Analysisのデータセットを追加する
- 分析対象に応じて使用するデータセットを切り替える
- Amazon Qへの質問でAIによる洞察や傾向の要約を取得する
- 公開ダッシュボードとQuickSuiteチャット
- 「共有」→「ダッシュボードの公開」によりダッシュボードを公開する
- 「共有」→「メールレポート」→「スケジュール」にてレポートの通知設定を行う
- 「構築」メニューから「エグゼクティブサマリー」を追加し、重要な傾向や異常を自動で文章化する
- Amazon Qの活用によりセキュリティリスクや特定ロールに関する質問を自然言語で行う
やってみて分かったこと
Bedrockによるリスク評価
IAM Access Analyzerなどでも「使用されていない権限」の抽出は可能ですが、
今回の構成ではLambdaからBedrockを呼び出し、「その権限がなぜ、どの程度危険なのか」というスコアリングまで自動化している点が画期的でした。
単に「 AdministratorAccess が付与されている」という事実だけでなく、AIがポリシーの中身を解釈して「高リスク」と判定し、数値化することで、
セキュリティ担当者が優先すべき対応が一目でわかるようになります。
定性的な評価を自動化のパイプラインに組み込めるのは生成AIならではの強みだと感じました。
CloudTrail Lakeによるクエリの効率化
バックエンドの処理において、Lambdaが直接S3の生ログを見に行くのではなく、
CloudTrail Lakeに対してSQLクエリを投げてデータを取得している点も実用的でした。
IAMの権限棚卸しは長期間のログを調査する必要がありますが、CloudTrail Lakeを利用することで、
大量のイベントデータに対する集計処理を高速かつシンプルに実装できています。
データレイクの構築・管理コストを下げつつ、必要なデータに即座にアクセスできる構成は、実際の案件でも参考にしたいポイントです。
Quick Suiteがもたらす分析の最適化
今回、Quick Suiteでのダッシュボード構築において、自然言語で入力するだけでビジュアルが生成される体験は感動でした。
SQLやBIツールの操作に詳しくないセキュリティ担当者やマネージャー層でも、チャット感覚で深掘り分析が可能になります。
「ダッシュボードを作って終わり」ではなく、「対話型でインサイトを得る」という新しい運用スタイルが確立されていることを実感しました。
まとめ
AWSにおけるセキュリティの基本である「最小権限の原則」を、最新のテクノロジーを用いて効率的に実現するための実践的なセッションでした。
手動でのIAM棚卸しは多くのエンジニアにとって頭の痛い作業ですが、以下の流れをサーバーレスで自動化できたことは大きな収穫です。
- CloudTrail Lakeでの実績収集
- Bedrockによるインテリジェントなリスク評価
- Quick Suiteによる可視化と自然言語分析
特に生成AIをチャットボットとして使うだけでなく、評価エンジンとしてバックエンドの処理パイプラインに組み込むアーキテクチャは、
今後のシステム開発において標準的なパターンになっていくでしょう。
今回の構成をベースにすれば、組織ごとのセキュリティポリシーに合わせた柔軟な監視基盤が構築できそうです。
IAMの運用負荷に課題を感じている方は、ぜひQuick SuiteやCloudTrail Lakeの活用を検討してみてはいかがでしょうか。
このブログが、IAM権限の運用における自動化および最適化の参考になれば幸いです!