Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
Search
Ryosuke Tsuruda
September 26, 2026
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
Presentation from JAWS-UG KYUSHU QUEST 2026 in Fukuoka
Ryosuke Tsuruda
September 26, 2026
More Decks by Ryosuke Tsuruda
See All by Ryosuke Tsuruda
200アカウント規模を見据えた開発・検証・本番の環境分離を成立させる、AWS Transit Gatewayによるネットワーク設計と実践
pensuke628
0
55
開発を止めない CI/CD ~CI Visibilityによる継続的最適化~
pensuke628
0
520
200アカウント規模を見据えた開発・検証・本番の環境分離を成立させる、AWS Transit Gatewayによるネットワーク設計と実践
pensuke628
0
270
独学でFusicのエンジニアへ! 入社から2年間の軌跡
pensuke628
0
140
Other Decks in Technology
See All in Technology
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
220
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
0
300
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
540
Refining Active Record
shugo
0
140
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
7
2.8k
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
690
Rust で関数型ドメインモデリング
takonda
0
120
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
100
今さら理解するウェブフォントver.2026
takanorip
3
710
分析AIエージェントを育てる、動く環境を育てる
codatum
1
1.1k
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
Classmethod Company Deck
satoshi7
1
580
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Unsuck your backbone
ammeep
672
58k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
620
Are puppies a ranking factor?
jonoalderson
2
4k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
Side Projects
sachag
456
43k
Crafting Experiences
bethany
1
380
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
260
The browser strikes back
jonoalderson
0
1.8k
Transcript
Account Factory for Terraformによる 標準化されたアカウント発行の自動化 JAWS-UG KYUSHU QUEST 2026 in
Fukuoka 2026.09.26 株式会社Fusic 鶴田 諒輔 (@pensuke628) ©Fusic Co., Ltd. 0
自己紹介 株式会社Fusic エンジニア 鶴田 諒輔 R y o s u
k e Ts u r u d a 表彰 ➢ 20 26 Japa n A WS To p Eng inee rs ➢ 20 25 -20 26 Japa n A ll A WS Ce rtific atio ns Engineer s 関心 S R E、Ob se rva b i li t y 、P la t fo rm E n gi ne eri n g ©Fusic Co., Ltd. 1
1 マルチアカウント環境の課題 ©Fusic Co., Ltd. 2
マルチアカウント構成ではアカウントが増え続ける 管理アカウント Organizations でアカウントを作り Control Tower で統制を入れる 開発・検証用の OU(例) 本番用の
OU(例) + サービス A サービス B サービス C 新しい アカウント + サービス A サービス B サービス C 新しい アカウント 用途や環境が増えるたびに、新しいアカウントを発行する ©Fusic Co., Ltd. 3
アカウントは作っただけでは使えない 払い出されたアカウント どの組織にも共通する土台 ガードレール・ログの集約 など AWS Organizations AWS Control Tower
アカウントを作る 統制の効いた 設定を入れる 組織ごとに決めている設定は入っていない コスト管理のためのタグ付け アラートの通知先の設定 他のアカウントや社外と通信するためのネットワーク設定 組織ごとの設定は、アカウントを作るたびに手作業で一つずつ入れる ©Fusic Co., Ltd. 4
アカウント発行は「作る」より「揃える」が難しい 揃える 作る 組織ごとの標準に揃える アカウントを1つ払い出す ここが毎回の手作業として残る ©Fusic Co., Ltd. 5
私たちが揃えたいのはこのネットワーク構成 新規追加 ©Fusic Co., Ltd. 6
手作業では6工程が2アカウントにまたがる 新しいアカウント側 1 2 3 TGW への アタッチメントの作成 VPC・サブネットの作成 4
TGW への ルートの追加 ホストゾーン・ リゾルバールールの 関連付け ネットワークアカウント側 5 6 プレフィックスリストへの VPC CIDR の追加 アカウントを作成するたびにくり返す ホストゾーンへの 関連付けの許可 接続先の TGW を一つ間違えると 環境の分離が崩れる 全アカウントが標準どおりかを 確かめ続けるのが難しい ©Fusic Co., Ltd. 7
2 Account Factory for Terraform ©Fusic Co., Ltd. 8
AFTはアカウントの発行とカスタマイズをGitOpsで行う 01 02 03 Terraform で依頼を書き Git にコミットする Account Factory
が アカウントを発行する 定義した設定が 自動で適用される 発行したいアカウントをコードとして記 述する パイプラインが動き、Control Tower の Account Factory が発行する あらかじめコードとして定義した組織ご との設定を適用する(カスタマイズ) 発行もカスタマイズも、起点は Git へのコミット ©Fusic Co., Ltd. 9
AFTのワークフロー図 出典:https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/aft-architecture.html ©Fusic Co., Ltd. 10
AFT は「依頼」と「標準の定義」でできている account-request 依頼:どんなアカウントを作るかを記述する カスタマイズの定義(3つの層・上から実行順) account-provisioning-customizations 発行の処理の中で最初に実行されるカスタマイズ global-customizations すべてのアカウントに適用されるカスタマイズ account-customizations
指定したアカウントにだけ適用されるカスタマイズ 適用される範囲やタイミングが違うので、どの設定をどの層で適用するかが重要になる ©Fusic Co., Ltd. 11
ネットワークの設定はaccount層にまとめた provisioning 使うなら:Terraform 以外で行いたい処理(例:外部システムへの通知や登録) global 使うなら:環境に関係なく全アカウントに入れたい設定(例:全アカウント共通の IAM ロール) account 私たちがネットワークに使っている層
account-customizations/ (ネットワーク関連の抜粋) ├── devstg/ 開発・検証用のカスタマイズ │ dev 用と stg 用の2つの VPC を作り、それぞれの TGW に繋ぐ └── terraform/ └── prod/ └── terraform/ 本番用のカスタマイズ VPC を1つ作り、本番用の TGW に繋ぐ ©Fusic Co., Ltd. 12
アカウント発行依頼時に記載するコード module "devstg_example" { source = "./modules/aft-account-request" control_tower_parameters = {
# 必須パラメータ AccountEmail = "
[email protected]
" AccountName = "Example-devstg" ManagedOrganizationalUnit = "ExampleOU (ou-xxxx-xxxxxxxx)" SSOUserEmail = "
[email protected]
" SSOUserFirstName = "Taro" SSOUserLastName = "Example" } # SSM パラメータストアから CIDR を読み取る data "aws_ssm_parameter" "dev_vpc_cidr" { name = "/aft/account-request/custom-fields/dev_vpc_cidr" } resource "aws_vpc" "dev" { cidr_block = data.aws_ssm_parameter.dev_vpc_cidr.value } change_management_parameters = { # DynamoDBに保存される change_requested_by = "Example Team" change_reason = "Create Example dev/stg account" } account_customizations_name = "devstg" custom_fields = { dev_vpc_cidr = "10.0.X.0/24" stg_vpc_cidr = "10.0.Y.0/24" } } custom_fields の値は、新しいアカウントの SSM パラメータストアに保存される カスタマイズに関わるのはこの3行だけ ©Fusic Co., Ltd. 13
実装の鍵はネットワークアカウントへのassume role AFT 管理アカウント カスタマイズを実行 provider "network" assume role 既定の
provider 新しいアカウント VPC の作成 TGW への接続 外部通信の経由設定 ネットワーク アカウント 新しい VPC を 受け入れるための 登録と許可 # ネットワークアカウント用のprovider provider "aws" { alias = "network" assume_role { role_arn = "arn:aws:iam::111111111111:role/..." } } # プレフィックスリストに新しい VPC の CIDR を登録 resource "aws_ec2_managed_prefix_list_entry" "this" { provider = aws.network prefix_list_id = "pl-xxxxxxxxxxxxxxxxx" cidr = local.dev_vpc_cidr } 2つのアカウントにまたがる作業を、1つのカスタマイズの中で完結させる ©Fusic Co., Ltd. 14
標準を満たさないアカウントは生まれない Terraform を書けない人でも発行できる 現在 質問に答えるだけで依頼のコードを生成する対話スクリプトを用意 30+ 接続先を間違えるミスが入り込まない 発行されるアカウントには例外なく同じカスタマイズが適用される のアカウントを この仕組みで発行
標準そのものをレビューできる 変更はマージリクエストでレビューし、あとから経緯を見返せる ©Fusic Co., Ltd. 15
3 まとめ ©Fusic Co., Ltd. 16
まとめ Point 01 アカウント発行は「作る」より「揃える」が難しい Point 02 組織の設定に合わせて、AFT の3つの層を使い分けられる Point 03
2つのアカウントにまたがる設定も、assume role で1つのカスタマイズの中で完結できる ©Fusic Co., Ltd. 17
OSEKKAI × TECHNOLOGY ココロと技術で、ぴったりも、びっくりも。 Thank You ご清聴いただきありがとうございました ©Fusic Co., Ltd.
18