AWS

Control Tower経験者向け:LZAでLanding Zoneをどう拡張するか

yoshi
  • シリーズ: Control Tower経験者のためのLZA入門(第1回)
  • 対象読者: AWS Control Towerを触ったことがあり、LZAはまだ使ったことがないAWSエンジニア
  • この記事のゴール: Control Towerだけでは対応しきれない領域と、LZA(Landing Zone Accelerator on AWS)で拡張できるポイントを理解する

1. はじめに ― Landing Zoneとは何か

AWSでマルチアカウント環境を構築するとき、まず整えるべき土台が Landing Zone(ランディングゾーン) です。

Landing Zoneとは、AWSのベストプラクティスに基づいた、安全でスケーラブルなマルチアカウント環境です。

参考:AWS Prescriptive Guidance「ランディングゾーンとは何ですか?」
https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/migration-aws-environment/understanding-landing-zones.html

アカウント構成、ネットワーク、セキュリティ、アクセス管理、ログ管理などの共通基盤を整備し、組織として統制の取れたAWS利用を可能にします。

AWSでこのLanding Zoneを手早く整える代表的なサービスが AWS Control Tower です。

Control Towerを使うと、AWS Organizationsを利用したマルチアカウント環境、Security OU、Auditアカウント、Log Archiveアカウント、Account Factory、各種コントロールなどを比較的短期間で構成できます。

では、Control Towerを導入すればLanding Zoneとして十分なのでしょうか。

結論から言うと、Control Towerはマルチアカウント環境の優れた出発点ですが、組織要件に合わせた本番運用レベルのLanding Zoneを整えるには、追加の設計・実装が必要になる場面があります。

そこで登場するのが Landing Zone Accelerator on AWS(LZA) です。

2. Control Towerでできること・難しいこと

Control Towerでできること

AWS Control Towerは、マルチアカウント環境のガバナンスベースラインを素早く整えるためのマネージドサービスです。

主に以下を提供します。

  • Security OU、Auditアカウント、Log Archiveアカウントなどを含むLanding Zoneの初期構成
  • Account Factoryによる標準化されたアカウント払い出し
  • SCPによる予防的コントロールと、AWS Configによる発見的コントロール
  • アカウントやコントロール状況を確認するダッシュボード
  • 一部のリージョン設定やコントロール設定などのカスタマイズ、およびCfCT・AFTなどによる拡張

参考:AWS Control Tower ユーザーガイド
https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html

つまりControl Towerは、AWS Organizationsを使ったマルチアカウント環境を、AWSのベストプラクティスに沿って素早く立ち上げるためのサービスです。

Control Towerだけでは難しいこと

一方で、環境が本番運用レベルになるにつれ、Control Towerだけでは対応しきれない領域が出てきます。

代表的なのは、以下のような領域です。

領域Control Towerだけでは難しいこと
セキュリティ組織固有のSCP、GuardDuty、Security Hub、AWS Configなどの詳細設定
ネットワークVPC、Transit Gateway、Network Firewall、マルチリージョン構成
運用アカウント追加後の共通設定、自動適用、設定漏れ・アカウント間の差分の抑制
IaC管理Landing Zone全体の設定をコードとして一元管理すること

Control Towerは、マルチアカウント環境のベースラインを整えるには非常に有効です。

しかし、実際の大規模案件では次のような要件が出てきます。

  • 新しいアカウントにも同じセキュリティ設定を自動適用したい
  • OUごとに異なるSCPを適用したい
  • Security Hub、GuardDuty、Macie、AWS Configなどを全アカウントで有効化したい
  • Transit GatewayやNetwork Firewallを含む標準ネットワークを展開したい
  • 設定を手作業ではなく、Gitで管理したい
  • マルチアカウント・マルチリージョンに同じ設計を継続的に適用したい

このような要件に対応するには、Control Towerの外側で追加の仕組みを設計・実装する必要があります。

3. LZAとは何か

Landing Zone Accelerator on AWS(LZA) は、AWS上でインフラストラクチャ基盤の構築と技術的なセキュリティコントロールの実装を支援する、オープンソースのソフトウェアソリューションです。

参考:Landing Zone Accelerator on AWS - 公式ドキュメント
https://docs.aws.amazon.com/solutions/latest/landing-zone-accelerator-on-aws/solution-overview.html
参考:Landing Zone Accelerator on AWS - GitHub
https://github.com/awslabs/landing-zone-accelerator-on-aws

LZAの特徴は、Landing Zone全体の設定を YAML設定ファイルで定義し、パイプラインを通じてマルチアカウント・マルチリージョンに展開できる ことです。

Control Towerがマルチアカウント環境のベースラインを作るサービスだとすると、LZAはその上に、より実践的なセキュリティ、ネットワーク、ログ、ガバナンスの設定をコードとして重ねていく仕組みです。

Control TowerとLZAの関係を示す図
Control TowerとLZAの関係を示す図

出所:AWS Summit Washington, D.C. 2022「SEC201 - Session Presentation」
https://d1.awsstatic.com/events/Summits/amer2021/maysummitonline/aws-summit-washington-d-c--2022/SEC201-144055-Session-Presentation.pdf

LZAはControl Towerなしでも利用できます。ただし、Control Towerがサポートされているリージョンでは、Control Towerを基盤として組み合わせる構成が推奨されています。

この構成では、役割を次のように整理できます。

役割担うもの
Control Towerマルチアカウント環境のベースライン、ガードレール、アカウント払い出し
LZASCP、セキュリティサービス、ネットワーク、ログ、IAMなどの追加設定をIaCで管理・適用

つまり、Control Towerを「マルチアカウント環境の土台」、LZAを「その土台の上に本番運用向けの設定を継続的に適用する仕組み」と捉えると理解しやすいです。

なお、次回紹介する Universal Configuration(UC) では、Control Towerが前提となる点に注意が必要です。

4. LZAで何をコード化できるのか

LZAでは、Landing Zoneに関する多くの設定をYAMLファイルで管理できます。

代表的な設定ファイルは以下です。

ファイル主な役割
organization-config.yamlOU構成、SCPなどのAWS Organizations関連設定
accounts-config.yaml管理対象アカウント
security-config.yamlGuardDuty、Security Hub、AWS Configなど
network-config.yamlVPC、Transit Gateway、Network Firewallなど
iam-config.yamlIAMロール、IAM Identity Center、Permission Setなど
global-config.yaml有効リージョン、Control Tower連携など

これらの設定ファイルをリポジトリで管理し、LZAのパイプラインを通じて各アカウント・各リージョンへ展開します。

ここで重要なのは、利用者が直接CDKアプリケーションを実装するのではなく、主にYAML設定ファイルを編集してLanding Zoneの構成を定義するという点です。

LZAは、その設定ファイルをもとにCDK/CloudFormationを利用して、マルチアカウント環境へリソースを展開します。

YAML設定ファイルをもとにLZAがマルチアカウント環境へ展開する流れ
YAML設定ファイルをもとにLZAがマルチアカウント環境へ展開する流れ

出所:AWS Summit Washington, D.C. 2022「SEC201 - Session Presentation」
https://d1.awsstatic.com/events/Summits/amer2021/maysummitonline/aws-summit-washington-d-c--2022/SEC201-144055-Session-Presentation.pdf

大きな流れは以下です。

  1. YAML設定ファイルをリポジトリで管理する
  2. パイプラインが設定ファイルを読み込む
  3. CDK/CloudFormation により、各アカウント・各リージョンへ設定を展開する

この仕組みにより、たとえば以下のような設定をコードとして管理できます。

  • OU構成
  • SCP
  • アカウント定義
  • IAMロール、Permission Set
  • GuardDuty、Security Hub、Macie、AWS Config
  • 集約ログ設定
  • VPC、Transit Gateway、Network Firewall
  • 有効化するAWSリージョン

重要なのは、LZAが単に初期構築を自動化するだけではないという点です。

設定ファイルを変更し、パイプラインを実行することで、Landing Zone全体の設定を継続的に更新できます。これにより、手作業による設定漏れやアカウントごとの差分を減らしやすくなります。

5. Control Tower のみ / Control Tower + LZA の比較

Control Towerだけで構成した場合と、Control Towerを基盤にLZAを組み合わせた場合を比較すると、次のようになります。

項目Control Tower のみControl Tower + LZA
アカウント払い出し・初期設定Account Factoryでアカウント払い出しは標準化できるが、作成後の追加設定は個別対応になりやすいAccount Factoryで払い出し後、LZAのパイプラインにより共通ベースラインを適用
SCP管理Control Towerのコントロール中心。カスタムSCPは別途管理YAMLで定義し、パイプラインで適用
セキュリティサービス個別に有効化・設定が必要になりやすいGuardDuty、Security Hub、AWS Configなどを設定ファイルで管理
ネットワーク複雑な構成は別途設計・実装VPC、Transit Gateway、Network Firewallなどを設定ファイルで管理
マルチリージョンリージョンごとの追加設定が必要になりやすい有効リージョンを定義し、複数リージョンへ展開
IaC管理Control Tower外の設定は別途管理Landing Zone全体をコードとして管理しやすい

この比較から分かるように、Control Towerが初期ベースラインを整えるサービスだとすれば、LZAはその上に組織固有の設定をコードとして継続的に適用する仕組みです。

特に、大規模なマルチアカウント環境では、アカウントごとの手作業が増えるほど、設定漏れやアカウント間の差分が生じるリスクが高まります。

LZAは、そのようなリスクを減らすために、Landing Zone全体をコードとして管理する選択肢になります。

6. まとめ ― 次回UCへ

Control TowerとLZAの位置づけを整理すると、次のようになります。

  • Control Tower: マルチアカウント環境のガバナンスベースラインを整えるサービス
  • LZA: Landing Zone全体の追加設定をIaCで管理し、マルチアカウント・マルチリージョンに展開するソリューション

Control Towerを「土台」、LZAを「その上に本番運用向けの設定を設計し、継続的に適用する仕組み」と考えるとイメージしやすいと思います。

LZAを使うことで、本番運用を見据えたLanding Zoneの設定を、手作業ではなくコードとして一貫性を保ちながら管理しやすくなります。

ただし、LZAを使うには課題もあります。

それは、設定ファイルをどのように設計すべきかを自分たちで判断する必要がある という点です。

LZAでは多くの設定を柔軟に定義できますが、その分、OU・アカウント構成、SCP、セキュリティサービス、ネットワーク、ログ、IAMなどについて、どのようなベースラインにすべきかを決めなければなりません。

そこで次回は、LZAの設定ファイルにAWSのベストプラクティスをあらかじめ定義した Universal Configuration(UC:共通ベースライン構成) について紹介します。

UCを使うことで、LZAをゼロから設計するのではなく、共通ベースラインを出発点としてLanding Zoneを構築できるようになります。

参考リンク

AUTHOR
yoshi
yoshi
記事URLをコピーしました