大规模保障基础设施:介绍 Pinterest 的资源供应管道(RPP)
在 Pinterest 这样的大型分布式组织中管理基础设施即代码(IaC)面临着显著的安全与后勤挑战。为此,Pinterest 开发了资源供应管道(Resource Provisioner Pipeline, RPP),一种专有的 Terraform 执行引擎。RPP 能够在多仓库架构下安全地管理关键与非关键的基础设施变更。该系统通过双重控制、集中化的 GitHub Actions 以及安全的角色链式调用,为全球 AWS 运营提供合规性与强健的安全保障。RPP 管理着数百个 Terraform 工作区,管控着数万个 AWS 资源,涵盖安全策略、网络及计算资源。RPP 的 GitHub 工作流采用集中执行模型,由拉取请求(PR)事件触发。该流程使用组合式 GitHub Actions,并通过为每个工作区独立执行计划来隔离工作区的影响。双重控制增加了必要的人工审查层,需经代码审查员批准。为贯彻最小权限原则,RPP 实施了严格的工作区 - 路径 - 角色映射,利用安全的角色链式调用。流程始于通过 GitHub OIDC 认证并假设集中化的 RPPActionsRole,随后确定工作区属性,将其映射到允许的仓库、路径及执行角色。关键的后端验证确保代码路径严格引用指定工作区对应的 S3 状态后端及 KMS 密钥。若验证通过,RPPActionsRole 将假设一个作用域受限的团队 IAM 角色,从而确保权限最小化。部署流程包括代码检查、在 PR 上输出计划结果,以及通过特定评论触发的审慎应用。该方法带来的优势包括统一审计、即时系统性补丁以及集中化的资源指标。