ある企業が、複数の AWS アカウントにわたるリソースへのアクセスを Lambda 関数から行う必要がある。Lambda 関数はアカウント A に存在し、アカウント B の S3 バケットと DynamoDB テーブルにアクセスしたい。最小権限かつ安全にクロスアカウントアクセスを実現する最も適切な方法はどれか。
- A. アカウント B の IAM ユーザーのアクセスキーを Lambda 関数の環境変数に設定する。
- B. アカウント B に IAM ロール(クロスアカウントロール)を作成し、アカウント A の Lambda 実行ロールから AssumeRole できるよう信頼ポリシーを設定する。Lambda 関数実行時に STS AssumeRole で一時認証情報を取得してアカウント B のリソースにアクセスする。
- C. アカウント A と B を AWS Organizations で管理し、SCP で自動的にクロスアカウントアクセスを設定する。
- D. アカウント B の S3 バケットとDynamoDB をアカウント A の VPC に移動する。
解答と解説を見る
正解: B
クロスアカウントアクセスのベストプラクティスは、対象アカウント(アカウント B)に専用の IAM ロールを作成し、Lambda の実行ロール ARN を信頼ポリシーの Principal に設定することである。Lambda 関数が AWS STS の AssumeRole を呼び出すことで一時認証情報を取得し、その認証情報でアカウント B のリソースに最小権限でアクセスできる。一時認証情報は自動ローテーションされるため安全。選択肢Aのアクセスキーを環境変数に設定する方法は静的な認証情報を使用しており、キーの漏洩リスクやローテーションの手間が発生する。選択肢CのSCP はアカウント内の IAM エンティティの権限制限に使うものであり、クロスアカウントアクセスの設定手段ではない。選択肢DはS3 バケットや DynamoDB をアカウント間で移動するという操作は AWS のサービスの仕組みとして存在しない(テーブルやバケットはアカウントに紐づく)。
📚 関連サービスの解説: AWS IAM ・ AWS Lambda