IaC Guard
Overview
面向 DevOps 与平台工程的基础设施即代码(IaC)安全审查工具。对 Terraform(.tf / .tfvars)与 Kubernetes / 通用 YAML(.yaml / .yml)做行级启发式扫描,按严重度输出风险与修复建议,并补充"漂移检测"的落地思路。
When to Use
- 用户说:"审查 terraform"、"检查 k8s yaml"、"iac 安全"、"review IaC"、"iac-guard"、"扫描基础设施代码"。
- 提交/合并 IaC 清单前的预检。
- 对既有仓库做安全巡检或合规基线核对。
How It Works
内置脚本 scripts/scan_iac.py(纯 Python 标准库,无第三方依赖):
- 递归扫描目标目录下所有
.tf/.tfvars/.yaml/.yml(自动跳过.git、node_modules、vendor、.terraform)。 - 行级启发式(正则 + 缩进感知)检测风险,详见
references/iac-rules.md。 - 输出
文件:行 [等级] 规则+ 问题描述 + 修复建议;支持--json机器可读输出。 - 退出码:
0=无 High;1=存在 High;2=用法/IO 错误。便于接入 CI 门禁。
Procedure
- 确认用户要审查的目标目录或文件集合;若给定单文件,先放到临时目录再整体扫描。
- 运行扫描器:
- 文本报告:
python scripts/scan_iac.py <dir> - CI/集成:
python scripts/scan_iac.py <dir> --json
- 文本报告:
- 按严重度汇总(High 优先,其次 Medium),不要只罗列原始行号——给出"风险 → 影响 → 修复"三段式结论。
- 对每条 High/Medium 给出可操作的修复建议(引用
references/iac-rules.md中的对应规则)。 - 提示用户运行"漂移检测"(见下),把"代码态"与"运行态"的差异纳入闭环。
- 明确说明本工具是启发式预检,不能替代 OPA/Kyverno/Checkov/Trivy 等策略引擎的完整覆盖。
Drift Detection(漂移检测)
扫描器只审查"代码态"。已部署资源可能因手动变更而偏离声明,需另做比对:
- Terraform:
terraform plan -detailed-exitcode(0=无变更,1=有变更,2=错误),接入定时 CI。 - Kubernetes:
kubectl diff -f <manifest>或kubectl get -o jsonpath关键字段断言。 - 云厂商:AWS Config / Azure Policy / GCP Asset Inventory 等托管合规检测。 扫描器不自动执行上述命令(需凭据与网络),请由用户在目标环境自行运行。
Bundled Resources
scripts/scan_iac.py— 启发式扫描器(标准库,可直接运行)。references/iac-rules.md— 规则目录:名称、匹配模式、严重度、修复建议,以及漂移检测与手动复核项。
Limitations
- 行级启发式,存在误报(如合法的
0.0.0.0/0用于公开 CDN)与漏报(如变量拼接生成的密钥)。 - 不解析完整 YAML/ Terraform AST,不评估跨文件引用与模块上下文。
- 不连接云 API、不执行
plan/diff,不解决实际凭据轮换。 - 结果需人工复核;高危项建议再用策略引擎二次确认。