ある企業が AWS 上で稼働する Lambda 関数が Amazon S3 の特定バケットにアクセスするための IAM ロールを持っています。セキュリティ審査で「この Lambda 関数の IAM ロールは必要以上に広い権限を持っている(S3 の全操作が許可されている)」との指摘を受けました。実際に Lambda が使用している S3 API アクションのみに権限を絞り込みたいと考えています。最もデータドリブンなアプローチはどれですか?
- A. Lambda のコードを手動でレビューして使用している S3 API を特定し、そのアクションのみを許可する IAM ポリシーを作成する
- B. S3 の一般的なベストプラクティスポリシーを検索してそのまま適用する
- C. AWS IAM Access Analyzer の「未使用アクセス」分析機能を使って Lambda のロールが過去 90 日間に実際に使用した API アクションを確認し、未使用のアクションを削除して最小権限ポリシーを生成する。Access Analyzer のポリシー生成機能(Generate policy based on access activity)でアクティビティに基づく最小権限ポリシーを自動生成する
- D. S3 バケットに対して GetObject と PutObject のみを許可するポリシーをすべての Lambda に一律適用する
解答と解説を見る
正解: C
IAM Access Analyzer のポリシー生成機能は CloudTrail ログを分析し、ロールが実際に使用した API アクションと条件を基にした最小権限ポリシーを自動生成します。手動レビューより正確で、Lambda が実際に呼び出している S3 API のみを反映したポリシーが得られます。これがデータドリブンな最小権限実現の AWS 推奨アプローチです。 B: 一般的なベストプラクティスポリシーは過剰な権限を含む可能性があり、特定の Lambda の実際の使用パターンを反映していません。 A: コードの手動レビューは有効ですが、ライブラリや SDK が内部で呼び出す API コールが漏れるリスクがあります。Access Analyzer の実際のアクティビティ分析の方が正確です。 D: 一律の GetObject と PutObject 適用は、他の S3 アクション(ListBucket など)が必要な Lambda で機能障害を引き起こす可能性があります。
📚 関連サービスの解説: AWS IAM ・ AWS Lambda