ある企業が、EC2 インスタンス上でデータ処理アプリケーションを運用している。アプリケーションが使用する S3 バケット、DynamoDB テーブル、SQS キューへのアクセス権限を最小権限の原則に基づいて管理したい。新しいサービスが追加されるたびに権限の見直しも必要である。最も適切なアプローチはどれか。
- A. アプリケーションのサービスごとに別々の EC2 インスタンスを立て、それぞれのインスタンスに最小権限の IAM ロールをアタッチする。
- B. IAM ポリシーの代わりに S3 バケットポリシー、DynamoDB リソースポリシー、SQS キューポリシーをそれぞれ設定し、EC2 インスタンスの IAM ロールには権限を付与しない。
- C. 各サービスへのアクセスに必要な権限のみを含む IAM ポリシーを作成し、EC2 インスタンスにアタッチする IAM ロールに付与する。AWS IAM Access Analyzer を使って定期的に未使用の権限を特定し、ポリシーを最適化する。
- D. EC2 インスタンスにアドミニストレーター権限の IAM ロールをアタッチし、アプリケーション自身が必要なリソースにアクセスできるようにする。
解答と解説を見る
正解: C
必要な権限のみを IAM ポリシーで定義してロールにアタッチし、IAM Access Analyzer の未使用権限分析機能(Unused Access Analyzer)で実際に使用されていない権限を定期的に検出・削除することが最小権限の原則の継続的な実践になる。Access Analyzer は IAM コンソールや AWS Organizations から有効化でき、権限の棚卸しを自動化できる。選択肢Dのアドミニストレーター権限付与は最小権限の原則に根本的に反する。選択肢Aは機能分離の観点では有効だが、アプリ機能ごとにEC2を分割するのは過剰な対応でありコスト増につながる。選択肢Bはリソースポリシーのみを使ってEC2 ロールに権限を与えない構成だが、すべてのAWSサービスがリソースポリシーをサポートしているわけではなく(DynamoDB はリソースポリシーの機能が限定的)、管理も複雑になる。
📚 関連サービスの解説: AWS IAM ・ Amazon EC2