Terraform State 是基础设施真实资源与代码之间的映射,丢失或泄露都会带来严重风险。它不能当作普通构建产物处理。
使用远程后端与锁
选择支持版本、加密、访问审计和状态锁的后端。每个环境使用独立 state,限制 CI 和个人账号只访问负责范围。
terraform {
backend "s3" {
bucket = "infra-state-prod"
key = "network/terraform.tfstate"
encrypt = true
dynamodb_table = "terraform-locks"
}
}
保护敏感信息
sensitive = true 只隐藏终端输出,敏感值仍可能写入 state。优先引用密钥管理服务,避免把真实 secret 作为资源属性保存。
不要手工编辑
使用 terraform state mv、rm 和 import 调整映射,并在操作前备份。强制解锁前确认没有仍在运行的 apply。
恢复演练
定期从历史版本恢复到隔离环境,执行 plan 检查差异。备份只有经过恢复验证才算有效。