はじめに
Control Tower と BLEA を用いたゲストアカウントのセットアップについて、BLEA 公式のGitHubのREADME
から概要をまとめました
前提
- AWS CDKや Control Tower の基礎知識
BLEAとは
- Baseline-Environment-on-AWS の略です
- スタンドアロン又は Control Tower ベースのマルチアカウントAWS環境において、安全なベースラインを確立するためのCDKテンプレートです
- aws-samples / baseline-environment-on-aws上にコードが公開されています
Governance baselines
Control Tower のゲストアカウントに対して、以下3つの導入方法が提供されています
- 手元からの直接展開(
blea-gov-base-ct.ts
)(デフォルト) - cdkPipelinesを使用した展開(
blea-gov-base-ct-via-cdk-pipelines.ts
) - ControlTowerのAFCを使用した展開(
blea-giv-base-ct-via-cdk-pipelines.ts
)
各テンプレートはリポジトリ内のusecases/blea-gov-base-ct配下にあり、CDKの別スタックとして用意があります
2,3の方法はアカウント払い出しの自動化の際は有用かと思いますが、1の方法が最初は試しやすそうです
参考:https://github.com/aws-samples/baseline-environment-on-aws?tab=readme-ov-file#governance-baselines
cdkPipelinesは、AWS CDK のスタックを複数環境に展開する為に利用可能なパイプラインです
詳しくはユーザーガイドのCDK Pipelinesを使用した継続的な統合と配信(CI/CDK)を参照ください
AFC(Account Factory Customization)は Control Tower 上から新規及び既存の AWS アカウントをカスタマイズ可能です
詳しくはユーザーガイドのAccount Factory Customization (AFC) を使用したアカウントのカスタマイズを参照ください
Deployment flow
- ランタイムや導入手順が紹介されていますが、CDK を使える状態(ex. Node.jsのインストールやawscliの認証設定)が最低限必要です
- また
git secrets --scan
がコミット前に実行されるよう設定されているため、コミットをする場合はこちらのセットアップが必要です - プロジェクトルートのREAME.mdにはスタンドアロンの場合の導入方法が記載されており、ControlTowerへの導入手順はdoc/DeployToControlTower.mdを参照してください
参考:https://github.com/aws-samples/baseline-environment-on-aws?tab=readme-ov-file#deployment-flow
git-secretsを利用する事で、Gitリポジトリにシークレットが追加されるのを防ぐ設定が可能です
詳しくはawslabs / git-secretsを参照ください
DeployToControlTower
- ありがたいことに英語版と日本語版のREADMEが存在します
- また、HowTo_ja.mdにはVSCodeのセットアップの他、CloudShellによるデプロイについての解説もあります
Control Tower 配下への導入手順
- 手順1: Control Tower の追加のサービス設定手順
- 手順2:ゲストアカウントの Control Tower での作成手順
- 手順3~6: パッケージインストール、認証情報の設定、ゲストアカウントへのデプロイ、アプリケーションサンプルのデプロイの手順
手順4のゲストアカウントのガバナンスベースのデプロイにより以下設定がされます
- デフォルトセキュリティグループの閉塞 (逸脱した場合自動修復)
- AWS Health イベントの通知
- セキュリティに影響する変更操作の通知(一部)
- セキュリティイベントを通知する SNS トピック (SecurityAlarmTopic) の作成
- 上記 SNS トピックを経由した、メールの送信と Slack のセキュリティチャネルへの通知
おわりに
- 今回は実際に設定する所までは試しませんでしたが、 Control Towerを用いて払い出したアカウントに対して、BLEA を用いる事でよりセキュアな環境の実現が可能という事が分かりました
- また、CDK の実装例・コミット時の
git-secrets
の設定・プルリクチェックの仕組み等、CDK を用いた開発全般のリポジトリ設定の手本としても、 BLEA のリポジトリは参考になりそうです