アカウント作成から Terraform で ! Account Factory for Terraform を使ってみよう

2023-07-03
ビジネス x クラウド

桂井 俊朗

こんにちは。ソリューションアーキテクトの桂井です。

みなさま、Infrastructure as Code (IaC) は取り組んでますか ? 既に IaC を導入されている方もこれから導入しようと考えている方もいらっしゃると思います。効率の良い運用のために IaC は有効なアプローチですが、多くの場合その対象は AWS アカウント内の AWS サービスの構築と管理だと考えています。

本記事では Terraform を使って AWS アカウントプロビジョニングを実現する Account Factory for Terraform (AFT) を紹介します。AFT を使うことによって AWS アカウント内における AWS サービスの構築だけでなく AWS アカウントそのものの作成も Terraform で実現できるようになります。

この記事では AFT の構成要素である Terraform と AWS Control Tower について紹介した後、AFT について説明します。Terraform をご利用されている方や統制の効いたアカウント作成について知りたい方にとって参考になれば幸いです。


Terraform とは

Terraform は AWS パートナーの HashiCorp が提供している IaC のサービスです。AWS マネジメントコンソールから GUI で AWS サービスを作成するのではなく、コードで AWS サービスを作成および管理することができます。Terraform の特徴として、設定ファイルが人にとって読みやすく素早くコードを書くことができる点や、ステートファイルでリソースの状況を追いやすい点があります。

AWS Control Tower とは

AWS Control Tower は安全なマルチアカウント AWS 環境のセットアップと管理を実現するマネージドサービスです。AWS Control Tower は、AWS アカウント内の API 使用状況を記録できる AWS CloudTrail や AWS リソースの評価ができる AWS Config を含むいくつかの AWS サービスを使って、統制の効いた AWS 環境を構築します。加えて、AWS Control Tower の機能の 1 つである Account Factory を使うことで、事前設定された AWS アカウントのプロビジョニングを自動化することができます。

Account Factory for Terraform (AFT) とは

Terraform で AWS Control Tower Account Factory を利用するために作成された方法が Account Factory for Terraform (AFT) です。AFT によって Terraform のファイルを作成することで AWS アカウントをプロビジョニング、管理することができるようになります。AFT の コードは公開されている ので内容を確認することが可能です。Terraform Open Source、Terraform Cloud、Terraform Enterprise に対応しています。

AFT 詳細

AFT の構成要素である Terraform や AWS Control Tower ならびに AFT の概要をご紹介したので、ここからは AFT のアーキテクチャや使い方についてお伝えします。まず AFT を利用するためのデプロイについてお話します。

AFT を使うにあたり、Control Tower 管理アカウントとは別に AFT 管理アカウントが必要です。AFT 管理アカウントは新しく作成した Organizations Unit (OU) に作ることを推奨しています。AFT 管理アカウントに AFT をデプロイする と以下のアーキテクチャでリソースが作成されます。作図の都合、AFT Management Account (AFT 管理アカウント) の中に Control Tower Management Account (Control Tower 管理アカウント) が入っていますが、実際には別の AWS アカウントです。 AFT 管理アカウントには点線で囲まれた AWS リソースが作成されるとお考えください。

AFT における AWS アカウント作成の処理フローについても確認しましょう。

AFT は Terraform で管理するため、下図左上の New Account Request は具体的には Terraform ファイル作成ならびに追加となります。ファイルがリポジトリに追加されるとパイプラインが実行され、途中で Control Tower 管理アカウントに対しての処理を実行しながら AWS アカウントが作成されます。処理フローの中にキューが入っていることからわかるように AFT は複数の AWS アカウント作成をハンドリングすることができます。

記事執筆時点では AWS Control Tower は 同時に 5 アカウントまでのプロビジョニング に対応していますが、それを上回る数の AWS アカウントを作成したい場合であっても、Terraform ファイルへの追加を AWS アカウント作成完了まで待つ必要はありません。

AFT は AWS アカウント 作成後のカスタマイズ にも対応しています。AFT で作成される全ての AWS アカウントを対象とするグローバルカスタマイズ、個別の AWS アカウントを対象とするアカウントカスタマイズが存在し、前者は Python と bash による実装が可能で、後者は Python、bash、Terraform を用いて実装することができます。

他にも オプションの有効化 によって追加の Terraform ファイルを作成することなく追加設定を施すことができます。一例として AWS CloudTrail のデータイベントを取得する設定があります。

AFT のメリット

AFT は Terraform を使って AWS 環境を一元管理できるのが大きな魅力です。従来は AWS アカウント作成は手動で実施し、作成された AWS アカウントに対して Terraform でリソース作成されていたケースもあったと考えていますが、AFT を使うことでアカウントのプロビジョニングの段階から Terraform で実施することができます。

AWS アカウント作成時に Terraform を使って AWS サービスを構築することも AFT であれば容易に実現できます。例えば前述のカスタマイズを使うことで AWS Security Hub の各種スタンダードを Terraform を使って有効化するといったことも可能です。

また、公開されている Terraform モジュール は AWS が開発しています。記事執筆時点では月に 1 回ほどのペースでマイナーバージョンの更新が行われており、開発は活発です。モジュールに関するご不明点は AWS サポートにお問合せいただくことも可能なので安心です。


まとめ

Terraform で AWS マルチアカウント管理ができる Account Factory for Terraform (AFT) を紹介しました。
AFT によって AWS アカウント内の AWS サービスの構築のみならず AWS アカウントの作成も Terraform で実現できるようになります。AFT は AWS Control Tower と Terraform を使っているので、両方の良さを活かして IaC によって運用負荷を高めることなくガバナンスの効いた AWS 環境を構築いただければと幸いです。

次回は実際に AFT を使って運用をしているお客様の声をお届けする予定です。


builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者プロフィール

桂井 俊朗
アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト

普段は主に ISV / SaaS のお客様に向けて技術支援を行っています。AWS を使ったサービスを運用していた経験から AWS Cloud Operations 領域の関心が強いです。好きな AWS サービスは AWS Control Tower です。

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する