2.7 KiB
2.7 KiB
title, type, tags, source, last_updated
| title | type | tags | source | last_updated | |||||
|---|---|---|---|---|---|---|---|---|---|
| CTP Topic 16 Cross-account Terraform modules | source |
|
2026-04-20 |
Source File
Summary
- 核心主题:在多账号 AWS 环境中实现和管理跨账号 Terraform 模块
- 问题域:如何在不授予直接互访权限的情况下,在一个模块中跨多个账号创建资源
- 方法/机制:基于 Shared Account 的中心化部署方案,通过 cross-account.json 标记文件触发 ECS Deploy Runner,Assume Role 访问目标账号
- 结论/价值:实现安全性(集中权限控制)、自动化(自动识别模块类型)、可复用性(代码不硬编码账号角色)
Key Claims
- Cross-account Modules 通过配置多个 Provider 实现在多个 AWS 账号中同时创建或管理资源
- Shared Account 作为信任源,通过 Assume Role 方式访问目标账号,避免直接授予互访权限
- cross-account.json 标记文件告知 Jenkins 该模块需要调用跨账号部署逻辑
Key Quotes
"在多账号 AWS 环境中,经常需要在一个模块内跨多个账号创建资源,但直接赋予账号间互访权限存在巨大的安全风险" — Fibos
"利用托管 Jenkins 的 Shared Account 作为中转站,实现中心化的跨账号部署" — Fibos
Key Concepts
- Cross-account Modules:在一个 Terraform 模块中通过配置多个 Provider,实现在多个 AWS 账号中同时创建或管理资源的功能
- Shared Account:整个 Landing Zone 中的核心管理账号,托管 Jenkins、镜像仓库等公共服务,并作为跨账号部署的信任源
- ECS Deploy Runner:运行在 ECS 上的 Docker 容器,负责执行 Terraform plan 和 apply 命令
- Cross-account.json:约定俗成的标记文件,放置在模块目录中,用于告知 Jenkins 该模块需要调用跨账号部署逻辑
Key Entities
- Fibos:本次会议讲师
- Gruntwork Pipeline:原有的单账号部署流水线
Connections
- Gruntwork Pipeline Deep Dive ← depends_on ← CTP Topic 16 Cross-account Terraform modules
- AWS Multi-account Security Best Practices ← informs ← CTP Topic 16 Cross-account Terraform modules
- Terragrunt Advanced Configuration ← used_by ← CTP Topic 16 Cross-account Terraform modules
Contradictions
- 与直接授予 Workload 账号间互访权限的方案冲突:
- 冲突点:直接授予互访权限存在 Blast Radius 安全风险
- 当前观点:通过 Shared Account 集中控制权限,Assume Role 访问
- 对方观点:直接授予账号间互访权限简化配置