Organizationsのメンバーアカウントに、独自ベースラインのCloudFormationテンプレートをStackSetsで自動デプロイする
このブログでは、Organizations環境のメンバーアカウントに対して、ベースラインとして作成・設定したいリソースをCloudFormationStackSetsを使用して行う手順をご紹介します。
前提
- Organizationsのサービス統合にて、CloudFormationStackSets が有効になっている
- ベースラインとして作成・設定したいCloudFormationテンプレートがある
Control Tower環境の場合
本内容は、Control Tower管理下でも使用できます。
ただし、ベースラインの設定は多くのソリューションがあり、本内容で紹介する方法は簡易的な方法となります。その他充実した機能が含まれるソリューションの例としては、以下ブログをご覧ください。
Control Towerカスタマイズソリューション(CfCT)を使ってガードレールとCloudFormationを自動展開してみた | DevelopersIO
CDK で AWS のセキュリティベストプラクティスに沿ったベースラインを展開できる Baseline Environment on AWS(BLEA)を触ってみた | DevelopersIO
類似したブログ
本内容は、以下参考ブログと類似しております。差分としては主に以下となります。
- デプロイオプション: 自動デプロイが有効 かつ スタックを保持
より詳細な説明は以下をぜひご覧ください。
[アップデート]CloudFormationでOrganizationsアカウントへの自動デプロイができるようになりました | DevelopersIO
【Organizations】組織単位で CloudFormation StackSetsを簡単にデプロイしてみる | DevelopersIO
1.CloudFormationStackSetsを作成する
それでは実際にやっていきます。
今回はいくつかのIAMロールとS3バケットを作成するCloudFormationテンプレートを使用します。
まずは、マスターアカウントのCloudFormationコンソールより、StackSetsを開き、StackSetの作成を選択します。
下図の通りテンプレートをアップロードし、次に進みます。今回はテンプレートの名前を members-account-ct-setup.yml
とします。
StackSet名もファイル名と同様にします。
今回の場合パラメータでデフォルト値を設定していますが、特に変更せずに進みます。
アクセス許可では、サービスマネージドアクセス許可を選択します。これによって必要なIAMロール周りをよしなに自動作成してくれます。
設定の肝となるのがこのデプロイオプションですが、今回は以下の通り設定します。
- デプロイターゲット: 組織単位(OU)へのデプロイを選択します。
- AWS OU ID: ベースラインを対象とする全てのAWSアカウントが属するOUを指定します。今回は例として1つのOUのみ指定しています。(注意:Control Towerの場合、OUはネスト構造がサポートされていないため、いわゆる親OU1つだけ指定すれば良いということができないので、対象のAWSアカウントが属する全てのOUを指定することになります)
- 自動デプロイ: 今後AWSアカウントが追加された際に、自動的に適用したい場合は有効を選択します。
- アカウント削除の動作: AWSアカウントがOUやOrganizations配下から抜ける場合、スタック及びリソースを保持したい場合はスタックを保持を選択します。
ちなみに、OU ID は別タブでOrganizationsコンソールのAWSアカウント画面を開くと、一覧で確認することができます。
対象のリージョンを指定します。ベースラインで作成するリソースがリージョナルサービスであ利、かつ全てのリージョンに対して配置する必要がある場合は、対象のリージョンを全て指定します。今回はグローバルサービスであるIAMロールと、メインリージョンにのみS3バケットを作成したいので、東京リージョンのみを指定します。
最後に、IAMリソースを作成するときは、お決まりの承認にチェックを入れて、実行します。
2.正しく作成されたかどうか確認する
上記実行後、オペレーションが進行していることが確認できます。
しばらく待つと、オペレーションが成功したことがわかりました。
スタックインスタンスタブを開くと、対象のAWSアカウントに適用されたことがわかります。AWSアカウントが複数ある場合、こちらに対象分だけ並ぶことになります。
あとは実際にメンバーアカウント側のコンソールに切り替えて、対象リソースが作成されていることが確認できればOKとなります。
確認は以上です。
参考URL
AWS CloudFormation StackSets と AWS Organizations - AWS Organizations