1. IaC 安全扫描与策略即代码(tfsec/checkov/OPA conftest)
如何用 IaC 安全扫描与策略即代码(tfsec/checkov/OPA conftest)保障基础设施安全?
- 静态扫描工具(tfsec、checkov、tflint)的作用
- 策略即代码(OPA conftest、checkov policy)的落地
- 在 CI/CD 流水线中的门禁集成
IaC 安全扫描在代码进入 apply 之前拦截不安全配置,是"安全左移"的核心实践。静态扫描工具包括:tfsec(针对 Terraform 的安全扫描,检查开放端口、明文密钥、过宽权限等)、checkov(支持 Terraform/CloudFormation/K8s 等,内置大量合规检查与自定义策略)、tflint(语法与最佳实践 lint)。策略即代码(Policy as Code)用规则表达安全与合规要求:OPA(Open Policy Agent)+ conftest 用 Rego 语言对 IaC 配置做断言;checkov 也支持自定义策略。落地上,把扫描作为 CI 流水线的门禁(如 pipeline 中先跑 tfsec/checkov,失败即阻断 plan/apply),并配合策略即代码把"安全基线"(如禁止 SSH 0.0.0.0/0、必须启用加密、必须打标签)写进统一策略库,随 IaC 一起版本化、评审、审计。
安全扫描的价值在于把"人工评审才能发现的问题"变成"自动拦截"。策略即代码进一步把安全要求从口头规范升级为可执行的、可审计的规则,并与 IaC 的版本化、评审流程天然契合,是规模化安全治理的关键。
# OPA conftest 规则:禁止开放 SSH 到任意地址
package main
deny[msg] {
input.resource.aws_security_group[_].ingress[_].cidr_blocks[_] == "0.0.0.0/0"
input.resource.aws_security_group[_].ingress[_].from_port == 22
msg = "SSH 不应开放到 0.0.0.0/0"
}