Files
nexus/knowledgebase/DevOps & SRE/03_Terraform/ctp-topic-16-cross-account-terraform-modules.md

3.9 KiB
Raw Blame History

title, type, source-type, category, tags, date-added, video-source, audio-source, status
title type source-type category tags date-added video-source audio-source status
CTP Topic 16 Cross-account Terraform modules cloud-learning video DevOps & SRE/03_Terraform
Terraform
Cross-Account
Modules
CTP
2026-04-14 nas:///volume2/work/Public Cloud Learning Sessions/CTP _ Topic 16_ Cross-account Terraform modules.mp4 summarized (Gemini 摘要)

CTP Topic 16 Cross-account Terraform modules

Source: NAS /volume2/work/Public Cloud Learning Sessions/CTP _ Topic 16_ Cross-account Terraform modules.mp4

Type: VIDEO | Category: 03_Terraform

Status: 已完成Gemini 摘要)


摘要

本次会议由 Fibos 主讲,重点探讨了在多账号 AWS 环境中如何实现和管理 Cross-account Terraform Modules跨账号 Terraform 模块)。在复杂的云架构中,经常需要在一个模块内跨多个账号创建资源(例如在 InfoBlocks 账号配置 DNS同时在 Workload 账号部署应用)。然而,原有的 Gruntwork 流水线主要针对单账号设计,且直接赋予账号间互访权限存在巨大的安全风险(如某一账号被攻破可能波及全局)。

为了解决这一问题,团队设计了一套基于 Shared Account共享账号 的中心化部署方案。核心思路是利用托管 Jenkins 的 Shared Account 作为中转站。当 Jenkins 检测到模块目录中存在 cross-account.json 标记文件时,会触发 Shared Account 中的 ECS Deploy Runner。该 Runner 被授予特殊权限,能够通过 Assume Role 方式访问目标账号的两个关键角色:一是用于读取状态文件的 TF state bucket accessor,二是用于执行资源部署的 cross-account ECS deploy runner role

这种架构实现了三大目标:首先是安全性,避免了 Workload 账号之间的直接信任,将权限控制集中在受严格审计的 Shared Account其次是自动化,通过 Jenkins 自动识别模块类型并选择正确的部署路径;最后是可复用性模块代码中不再硬编码特定账号的角色提高了代码的灵活性。Fibos 还详细演示了如何通过修改根目录的 terragrunt.hcl 配置文件来支持这种全局性的角色切换逻辑,并简要介绍了本地开发与 Jenkins 自动部署在角色处理上的差异。


关键概念

  • Cross-account Modules: 指在一个 Terraform 模块中通过配置多个 Provider实现在多个 AWS 账号中同时创建或管理资源的功能。
  • Shared Account: 整个落地分区Landing Zone中的核心管理账号托管 Jenkins、镜像仓库等公共服务并作为跨账号部署的信任源。
  • ECS Deploy Runner (EDR): 运行在 ECS 上的 Docker 容器,负责执行具体的 Terraform plan 和 apply 命令,是流水线中的实际执行单元。
  • TF state bucket accessor: 一种专门定义的 IAM 角色,仅允许部署工具访问存储在目标账号 S3 桶中的 Terraform 状态文件。
  • Cross-account ECS deploy runner role: 部署在目标账号中的角色,允许 Shared Account 的执行器通过切换角色来获取在该账号内创建资源的权限。
  • cross-account.json: 一个约定俗成的标记文件,放置在模块目录中,用于告知 Jenkins 该模块需要调用跨账号部署逻辑。
  • Root Terragrunt HCL: 全局 Terragrunt 配置文件用于定义所有模块通用的远程状态存储Remote State和角色切换逻辑。

相关视频

[!info]+ 交叉引用 Gruntwork Pipeline Deep Dive — 了解基础的单账号 Gruntwork 流水线工作原理。 AWS Multi-account Security Best Practices — 探讨为何要限制账号间的直接访问权限Blast Radius 控制)。 Terragrunt Advanced Configuration — 深入学习如何利用 Terragrunt 的继承机制管理复杂环境。

相关视频

配对视频笔记链接(生成后填入)


最后更新: 2026-04-14