Files
nexus/wiki/sources/ctp-topic-16-cross-account-terraform-modules.md
2026-04-20 07:08:14 +08:00

2.7 KiB
Raw Blame History

title, type, tags, source, last_updated
title type tags source last_updated
CTP Topic 16 Cross-account Terraform modules source
terraform
cross-account
modules
ctp
devops
2026-04-20

Source File

Summary

  • 核心主题:在多账号 AWS 环境中实现和管理跨账号 Terraform 模块
  • 问题域:如何在不授予直接互访权限的情况下,在一个模块中跨多个账号创建资源
  • 方法/机制:基于 Shared Account 的中心化部署方案,通过 cross-account.json 标记文件触发 ECS Deploy RunnerAssume 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

Connections

Contradictions

  • 与直接授予 Workload 账号间互访权限的方案冲突:
    • 冲突点:直接授予互访权限存在 Blast Radius 安全风险
    • 当前观点:通过 Shared Account 集中控制权限Assume Role 访问
    • 对方观点:直接授予账号间互访权限简化配置