基础设施即代码(IaC)安全
保护以代码定义和部署的基础设施:配置错误、秘密处理、策略即代码与配置漂移。
快速解答
通过扫描模板中的配置错误、在 CI 中强制执行策略即代码关卡、让秘密远离源代码(使用秘密管理器),并根据声明的状态验证实时部署来保护 IaC。
定义
IaC 安全通过在应用(apply)之前扫描基础设施定义、强制执行策略即代码并验证秘密处理,防止配置错误进入云/网络环境。
它是什么
当基础设施即代码(Terraform、CloudFormation、K8s 清单)时,配置错误会被提交到同一个仓库——这是好事:它们可以在 apply 之前被扫描并阻止。
为什么重要
配置错误是云端首要的初始访问原因之一(参见 security:misconfiguration)。IaC 让你将其作为软件缺陷来捕获,而不是在生产环境中实时发现它们。
它如何工作
- 扫描模板/清单中的不安全默认值(对全世界开放的存储桶、不受限的出站流量、权限过宽的 IAM)。
- 在 CI 中强制执行策略即代码(OPA/sentinel)关卡,使有风险的变更永远不会被部署。
- 绝不在 IaC/源代码中存储秘密;引用秘密管理器(参见
security:secrets-management)。 - 根据声明的状态验证真实状态,以捕获配置漂移。
检测
- 新 PR 上的策略/扫描发现(例如公开的 S3 存储桶、通配符 IAM)。
- 实时资源权限超出声明清单的配置漂移。
缓解
- 将 IaC 扫描和策略关卡加入流水线(参见
security:devsecops)。 - 默认应用最小权限 IAM;消除通配符授权。
- 立即轮换任何出现在源代码历史中的秘密。
调查
如果某个云资源因配置错误而暴露,追溯引入该问题的 IaC 提交、本应阻止它的策略关卡,以及任何访问日志以确定暴露范围。参见 security:cloud-native-security。