如何在AWS上落地Terraform黄金法则,仅允许通过terraform apply变更基础设施?
AWS 平台落地 Terraform 黄金法则的可落地方案
核心管控逻辑其实很简单:默认拒绝所有账号对生产资源的修改权限,只给Terraform专用的身份开唯一的变更通道,从权限入口、规则兜底、审计溯源、流程约束四个层面把手动修改的路径全部堵死
权限层从源头切断手动变更通道
- 清理所有日常运维、开发账号的IAM权限,彻底移除受Terraform管控资源对应的变更类API权限(如
ec2:RunInstances、s3:PutBucketPolicy、iam:CreateRole等),坚决杜绝带通配符*的宽限权限配置 - 为Terraform配置独立的专属IAM身份:优先采用CI/CD流水线通过OIDC联邦获取的临时角色,避免使用长期固定密钥的服务账号,该身份是整个云账号范围内唯一具备受管控资源变更权限的主体
- 关闭所有非必要账号的控制台密码登录权限,即使保留控制台查看能力,也只开放只读权限,从入口上封死通过控制台手动修改资源的路径
配置规则层做兜底拦截
- 开启AWS Config服务,全区域采集受管控资源的配置快照,自定义合规规则:只要检测到任何未通过Terraform身份发起的资源变更,立刻触发告警并自动回滚到最近的合规状态
- 给所有Terraform管控的资源打统一标识标签(如
managed-by=terraform),配置规则自动识别没有该标签的新建资源,触发自动删除流程,杜绝手动创建“影子资源”的空间
审计监控层实现变更全溯源
- 开启全区域CloudTrail日志,将所有API调用日志存储到开启对象锁保护的独立S3存储桶,任何主体都无法修改、删除操作日志
- 配置CloudWatch告警规则:只要检测到非Terraform专属身份发起的变更类API调用,立刻触发高优先级告警同步到值班渠道
- 定期执行Terraform状态与实际云资源的差异比对,只要发现状态和实际资源不一致,立刻溯源排查绕过管控的操作,及时补全规则缺口
流程层做硬约束
- 把Terraform状态文件存储到独立的、仅Terraform专属身份有读写权限的S3桶,开启状态文件的版本锁和操作锁,避免任何人绕过流程修改状态台账、篡改资源对应关系
- 所有基础设施变更必须提交对应的Terraform代码修改PR,经过评审合并到主干分支后,由流水线自动执行
terraform plan校验变更范围,确认无误后自动触发terraform apply,完全不开放个人本地直连生产环境执行变更的通道 - 若特殊场景临时需要开放手动排查权限,必须走带明确过期时间的审批流程,操作完成后立刻回收权限,全程操作日志单独留存,事后完成资源状态核对
内容的提问来源于stack exchange,提问作者Hyphen
相关产品推荐
相关产品推荐

