マルチアカウントCI・CDパイプライン CodePipelineのクロスアカウントデプロイとCDK Pipelines
本記事はDOP試験対策として、開発・検証・本番などアカウントを分離した環境へ安全にデプロイするマルチアカウントCI・CDパイプラインの設計を解説します。試験では、アカウント間の権限委譲とパイプラインの構造化が問われます。
覚え方のフレームは3つの観点です。分離(環境ごとにアカウントを分ける)・委譲(デプロイ権限を安全に渡す)・構造化(パイプライン定義をコード化する)。
分離 環境ごとのアカウント分離とクロスアカウントデプロイ
開発・検証・本番を別々のAWSアカウントに分離すると、権限の誤設定やリソースの混在によるインシデントのリスクを下げられます。CodePipelineはクロスアカウントのCodeDeployやCloudFormationアクションを使い、パイプライン自体は共有サービスアカウントに置きつつ各ステージで対象アカウントのロールへ切り替えてデプロイしたい要件に対応できます。
委譲 IAMロールによる権限の受け渡し
クロスアカウントデプロイでは、パイプラインアカウントが対象アカウントのデプロイ用ロールをAssumeRoleで引き受け、対象アカウント側は信頼ポリシーで許可します。本番アカウントの管理者が、パイプラインからのデプロイ操作だけを明示的に許可したい要件ではこのロール委譲を最小権限で設計します。
構造化 CDK Pipelinesによるパイプライン定義のコード化
AWS CDK PipelinesはCI・CDパイプライン自体をCDKコードとして定義し、新しいステージ(アカウント)の追加もコードの変更としてレビュー・バージョン管理できます。環境の数が増えるたびに手作業でパイプラインを複製する運用を避けたい要件ではCDK Pipelinesを選びます。
| 構成 | 環境分離 | 選ぶ要件 |
|---|---|---|
| 単一アカウントパイプライン | なし | 小規模でシンプルに始めたい |
| クロスアカウントCodePipeline | IAMロール委譲で実現 | 既存パイプラインに環境分離を追加したい |
| CDK Pipelines | コードで定義 | 環境数が多く追加・変更を頻繁に行いたい |
チェックリスト
- 環境ごとのアカウント分離のメリットを説明できる
- クロスアカウントデプロイでのAssumeRoleによる権限委譲を説明できる
- CDK Pipelinesでパイプライン定義をコード化するメリットを説明できる
- クロスアカウント時のKMSキーポリシー設定の注意点を理解している
まとめ
マルチアカウントCI・CDは「分離・委譲・構造化」の3観点で設計し、クロスアカウントロール委譲とCDK Pipelinesの組み合わせで安全かつスケーラブルなパイプラインを構築するのが定石です。この記事の理解度はクイズで確認し、最新の試験範囲はAWS認定 公式ページで確認しましょう。
DOP(DevOpsエンジニア) におすすめの教材
AWS認定 DevOpsエンジニア − プロフェッショナル DOP-C02 出題予想問題集 第2版
AWS認定 DevOpsエンジニア − プロフェッショナル DOP-C02 練習問題集
AWS認定DOP(DOP-C02)実践問題集(全範囲・225問)
AWS認定DOP 演習テスト(日本語)
本セクションにはAmazonアソシエイト・Udemyアフィリエイトのリンクが含まれます。