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
110
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
50
開発を止めない CI/CD ~CI Visibilityによる継続的最適化~
pensuke628
0
490
200アカウント規模を見据えた開発・検証・本番の環境分離を成立させる、AWS Transit Gatewayによるネットワーク設計と実践
pensuke628
0
260
独学でFusicのエンジニアへ! 入社から2年間の軌跡
pensuke628
0
140
Other Decks in Technology
See All in Technology
DORA_Metrics.pdf
wagnerfusca
1
110
データ_AIの事業の勝敗をわけるもの
nek0128
1
480
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
210
ボードゲームの遊び相手をFoundation Modelsで作る / iOSDC Japan 2026
genda
0
200
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
1
600
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
15
12k
Lambda MicroVMsは常駐サーバーの代わりに なるか? Kiro Crew を動かして検証してみた / Kiro Crew on Lambda MicroVMs
k_adachi_01
2
260
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
170
なぜAI任せのゲームは面白くならないのか?
hirohasuyoutube
0
180
AIに会社の文脈を理解させる技術~上流工程・非エンジニアにも広げるハーネスエンジニアリング実践~
ochtum
0
120
Hermes Agentで、AIが調べて記事を書くブログを作った話
blueb
0
110
AIエージェントの権限管理 3: Agentic RAG の Fine grained access control 編
ren8k
1
280
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
250
It's Worth the Effort
3n
188
29k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
480
Exploring anti-patterns in Rails
aemeredith
4
520
RailsConf 2023
tenderlove
30
1.6k
Site-Speed That Sticks
csswizardry
13
1.5k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
290
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
460
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
410
Into the Great Unknown - MozCon
thekraken
41
2.7k
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