AWS Certified Solutions Architect Associate(SAA-C03) 練習問題 11:クロスアカウントのS3アクセス設定と最小権限原則
企業が複数のAWSアカウントを運用している場合、アカウントAのEC2インスタンス上で実行されるアプリケーションが、アカウントBのS3バケットにファイルをアップロードする必要があります。最も安全にアクセス権を付与するアーキテクチャはどれか。
- アカウントAのEC2インスタンスに、アカウントBのIAMユーザーのアクセスキーを環境変数として設定する。
- アカウントBのIAMユーザーを作成し、Amazon Cognitoを使用してEC2インスタンスに一時的な認証情報を提供する。
- アカウントBのS3バケットをパブリックにし、アクセス元IPをEC2インスタンスのElastic IPに制限する。
- アカウントBでS3バケットポリシーを設定し、アカウントAのEC2インスタンスに割り当てられたIAMロールのARNをプリンシパルとして許可する。
- アカウントAのIAMロールにアカウントBのS3バケットの完全なAccess権限を付与し、アカウント間の権限委譲を設定する。
Qraftユーザーの成績:正答率 77%(10/13回正解)
正解と解説を見る
複数のAWSアカウント間でのリソースアクセスは、クロスアカウントアクセス(Cross-Account Access)と呼ばれる一般的なシナリオです。正しいのは「アカウントBのS3バケットポリシーに、アカウントAのEC2ロールのARNをプリンシパルとして設定する」という方法です。
実装はアカウントAのEC2インスタンスにIAMロールをアタッチし、このロールにアカウントBのS3バケットへのアクセス許可(s3:GetObject、s3:PutObject等)をアイデンティティベースポリシーで付与します。同時にアカウントBのS3バケットポリシー(リソースベースポリシー)のPrincipal要素に、アカウントAのEC2ロールのARN(例:arn:aws:iam::123456789012:role/EC2-Role)を指定して許可します。この双方向設定により、IAMユーザーの長期的なアクセスキーをコードに埋め込まず、EC2インスタンスメタデータ経由で自動更新される一時的な認証情報を使用でき、権限を最小限に絞ることができます。長期的なアクセスキーの埋め込みはセキュリティベストプラクティス違反です。Cognitoは個人認証向けであり、サービス間の認証に用いません。S3をパブリック化するのはセキュリティリスク増加であり、Elastic IPの固定化も脆弱性の原因となります。「完全なAccess権限」を付与することは最小権限原則に反します。