Qraft(クラフト) 資格・学習クイズアプリ

AWS Certified Solutions Architect Associate(SAA-C03) 練習問題 11:クロスアカウントのS3アクセス設定と最小権限原則

企業が複数のAWSアカウントを運用している場合、アカウントAのEC2インスタンス上で実行されるアプリケーションが、アカウントBのS3バケットにファイルをアップロードする必要があります。最も安全にアクセス権を付与するアーキテクチャはどれか。

  1. アカウントAのEC2インスタンスに、アカウントBのIAMユーザーのアクセスキーを環境変数として設定する。
  2. アカウントBのIAMユーザーを作成し、Amazon Cognitoを使用してEC2インスタンスに一時的な認証情報を提供する。
  3. アカウントBのS3バケットをパブリックにし、アクセス元IPをEC2インスタンスのElastic IPに制限する。
  4. アカウントBでS3バケットポリシーを設定し、アカウントAのEC2インスタンスに割り当てられたIAMロールのARNをプリンシパルとして許可する。
  5. アカウントAのIAMロールにアカウントBのS3バケットの完全なAccess権限を付与し、アカウント間の権限委譲を設定する。

Qraftユーザーの成績:正答率 77%(10/13回正解)

正解と解説を見る
正解:アカウントBでS3バケットポリシーを設定し、アカウントAのEC2インスタンスに割り当てられたIAMロールのARNをプリンシパルとして許可する。

複数の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権限」を付与することは最小権限原則に反します。

← 前の問題問題一覧次の問題 →
アプリで解いてレーティングを上げる(無料・登録不要)