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
130
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
54
開発を止めない 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
今さら理解するウェブフォントver.2026
takanorip
3
520
Loop Engineering これくらいでいい
mikanichinose
0
170
SREでアラート疲れを 解決しよう!
kairim0
1
220
OpenSharing について熱く語る〜AI アセットの共有について〜
kameitomohiro
0
240
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
220
OR学会2026年秋期大会_機械学習と数理最適化の融合による、配合レシピ最適化システム開発事例
brainpadpr
0
110
Kiro Crewをはじめよう
kizawa2020
1
120
会社説明資料
persolserverworks
0
9.6k
Deep Data Security 機能解説
oracle4engineer
PRO
2
740
自作バイナリを動かす「入口」8選
puhitaku
1
1.2k
予測不能な実行エージェントを安全にサクッと試せるサンドボックス環境の話
sansantech
PRO
0
140
AI時代のPRレビューにどう向き合うか?
kairim0
1
120
Featured
See All Featured
So, you think you're a good person
axbom
PRO
2
2.2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
520
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Building an army of robots
kneath
307
47k
Utilizing Notion as your number one productivity tool
mfonobong
4
610
Joys of Absence: A Defence of Solitary Play
codingconduct
1
540
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Product Roadmaps are Hard
iamctodd
55
13k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
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