DOPSDLC の自動化
ある企業は、中央の「ツールアカウント」にAWS CodePipelineを配置し、そこから「開発アカウント」や「本番アカウント」のインフラおよびアプリケーションをデプロイするクロスアカウントCI/CDパイプラインを構築しています。デプロイメントにはAWS KMSで暗号化されたS3バケットをアーティファクトストアとして使用しています。パイプラインが別のアカウントへリソースをデプロイする際に権限エラーが発生しないようにするために、必須となる設定の組み合わせはどれですか。
Aデプロイ先アカウントにクロスアカウントIAMロールを作成し、S3バケットポリシーとKMSキーポリシーでこのロールからのアクセスを許可する
✓ 正解
クロスアカウントデプロイメントのベストプラクティスです。デプロイ先で実行されるロールが、ツールアカウントの中央アーティファクトS3バケットからのオブジェクト取得と、暗号化に使用されたKMSキーの復号操作を行えるように明示的な許可が必要です。
BツールアカウントのCodePipelineロールにAdministratorAccess権限を付与し、AWS Resource Access ManagerでS3バケットを共有する
CodePipelineロールに過剰な権限(AdministratorAccess)を付与することは最小特権の原則に反します。また、S3バケットをResource Access Managerで共有することはできず(RAMは特定のリソース共有用)、クロスアカウントの正しい解決策ではありません。
Cデプロイ先アカウントのVPCにS3とKMS用のVPCエンドポイントを作成し、エンドポイントポリシーでツールアカウントからのトラフィックを許可する
VPCエンドポイントはVPC内からAWSサービスへのプライベートなネットワーク経路を提供するものであり、クロスアカウントのIAM権限やバケットポリシーの欠如によるアクセス拒否エラーを解決するための仕組みではありません。
D各デプロイ先アカウントに個別のアーティファクトストア用S3バケットを作成し、CodePipelineでアカウントごとにアーティファクトをコピーする
CodePipelineは単一のパイプライン実行において、クロスアカウントで単一のS3アーティファクトストアを共有するよう設計されています。アカウントごとにバケットを分割して手動またはカスタムでコピーする構成は、アーキテクチャの複雑さを不必要に増大させます。
解説
CodePipelineを使用したクロスアカウントデプロイメントを成功させるためには、複数の権限の連携が不可欠です。ターゲットアカウントにツールアカウントを信頼するクロスアカウントIAMロールを作成し、CodePipelineがAssumeRoleでそのロールを引き受ける設定が必要です。さらに、デプロイ先アカウントのアクション(CodeDeploy・CloudFormationなど)はツールアカウントのS3バケットからビルド成果物をダウンロードしてKMSキーで復号するため、S3バケットポリシーとKMSキーポリシーの両方でデプロイ先ロールからのアクセス(s3:GetObject・kms:Decryptなど)を明示的に許可しなければなりません。
選択肢BのAdministratorAccess付与は最小権限原則に反しセキュリティリスクになります。またAWS RAMはS3バケットの共有に対応していないため機能せず、KMSキーポリシーの権限問題も解決できません。
選択肢CのVPCエンドポイントはネットワーク経路の制御に使うものであり、IAMロールやKMSキーポリシーによるクロスアカウントアクセス権限の問題は解決できません。ネットワーク到達性があっても権限がなければ権限エラーは解消されません。
選択肢Dのアカウントごとに個別S3バケットを作成するアプローチでは、KMSキーによる暗号化・復号の問題が残ります。またCodePipelineにアーティファクトを自動コピーする組み込み機能はなく、追加のステップが必要になります。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDOPを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →