您应该了解的7大Terraform扫描工具
Source: Dev.to
IaC 扫描对 Terraform 有何意义?
IaC 扫描 指的是对 Terraform 代码进行自动化分析,以在部署前检测安全、合规和配置问题。它帮助识别基础设施即代码文件中的错误配置、硬编码密钥或策略违规。
IaC 扫描工具 会分析 .tf 文件,确保 IAM 角色、安全组或 S3 桶等资源遵循安全和合规的最佳实践。
IaC 扫描通常集成在 CI/CD 流水线或 Git 工作流中,以防止有风险的基础设施被部署。它通过在开发生命周期的早期捕获问题,实现左移安全。
最佳 Terraform 扫描工具
Terrascan
Terrascan 是由 Tenable 维护的开源 IaC 安全扫描器,可在部署前分析 Terraform 代码,依据 policy‑as‑code 规则捕获错误配置,支持多云目标,并可通过机器可读的输出和远程仓库扫描接入开发者工作流和 CI/CD。
# Scan Terraform in the current directory (default IaC provider) and target AWS policies
terrascan scan -t aws -d .
# CI‑friendly example: Terraform scan with SARIF output
terrascan scan -i terraform -o sarif -d .
关键特性
- 基于 OPA/Rego 的 policy‑as‑code:使用 Rego 编写或扩展规则,通过规则 JSON 管理元数据,使用
terrascan init更新本地/捆绑策略,并在需要时选择性跳过规则。 - 广泛的 Terraform 与多云覆盖:扫描 Terraform (HCL2) 并使用特定提供商的策略(例如
-t aws),在需要时也支持其他 IaC 类型。 - 为流水线和开发者而建:可集成 GitHub/GitLab 与 pre‑commit,输出 JSON/YAML/JUnit‑XML/SARIF 供自动化门禁使用,并可从主要容器注册表获取漏洞结果。
官方文档:
阅读更多: What is Terrascan? Features, Use Cases & Custom Policies
Checkov
Checkov 是一款开源的 IaC 静态分析工具,可在交付流水线的早期检查模板(Terraform、CloudFormation、Kubernetes、Helm、ARM、Serverless 等),以在部署前发现错误配置、策略违规和安全漏洞。
# Run Checkov against a Terraform directory
checkov -d ./infrastructure/terraform
# Example: scan a Terraform plan (JSON) with SARIF output
terraform plan -out tfplan
terraform show -json tfplan > tfplan.json
checkov -f tfplan.json --output sarif
关键特性
- 庞大的内置策略库:提供数百(750+)预定义检查,覆盖主要云平台和模板,包括 CIS、PCI‑DSS 等合规框架。
- 基于图的资源关系分析:构建 IaC 资源图并分析依赖关系,以捕获更深层的配置问题。
- 灵活的 CI/CD 与工作流集成:可接入 GitHub、GitLab、pre‑commit 钩子、IDE,并支持 JSON、JUnit‑XML、SARIF 等输出格式。
官方文档:
阅读更多: What is Checkov? Features, Use Cases & Examples
tfsec
tfsec 是 Aqua Security 推出的开源 Terraform 安全扫描器,对 HCL 进行静态分析,在 apply 前标记风险或不合规的配置。其扫描引擎也可通过 Aqua 的 Trivy 使用。
# Scan the current Terraform project and emit SARIF for CI code scanning
tfsec . --format sarif
关键特性
- 以 Terraform 为中心的分析:使用官方 HCL 解析器,快速且本地运行,无需云凭证或状态文件,针对主要提供商的错误配置进行检测。
- 多样的输出与 CI 钩子:可导出 JSON、CSV、Checkstyle、JUnit 和 SARIF 等格式,并提供即用型的 GitHub Action 用于流水线门禁。
- 通过简易的 JSON/YAML 定义自定义规则:在
.tfsec/目录下放置*_tfchecks.json|yaml,或使用--custom-check-dir/--custom-check-url加载规则。
官方文档:
阅读更多: What is tfsec? How to Install, Config, Ignore Checks
注意:tfsec 现已成为 Trivy 的一部分。
KICS
KICS 是一款免费、开源的 IaC 静态分析引擎,能够在部署前检查配置文件(Terraform、Kubernetes 清单、CloudFormation、Ansible、Pulumi、Helm Chart 等),检测错误配置、合规问题和安全风险,覆盖多种平台。
# Scan a directory of Terraform / IaC files with KICS (Docker)
docker run -v "$(pwd)":/path checkmarx/kics:latest scan -p /path -o /path/results
# CLI‑only example
kics scan -p ./infrastructure/terraform -o ./scan-output.json --report-formats json
关键特性
- 广泛的平台支持与丰富的规则库:兼容 Terraform、CloudFormation、Kubernetes、Pulumi、Dockerfile、Ansible 等,内置约 1900+ 查询。
- 可扩展的查询引擎:每个检查都以查询形式定义,可编辑、添加或禁用,实现自定义策略和专门的合规框架。
- CI/CD 与开发者友好的集成:易于嵌入流水线(Docker、CLI、GitHub Actions、VS Code),生成 JSON/SARIF/HTML 输出,将 IaC 安全左移到开发和 PR 工作流中。
官方文档:
TFLint
TFLint 是一款可插件化的 Terraform Linter,静态分析 HCL,捕获提供商特定的问题、已废弃的语法以及最佳实践违规。它拥有丰富的插件生态,支持 AWS、Azure、Google Cloud 等以及自定义规则。
# Basic usage: lint the current directory
tflint
# With a specific configuration file
tflint --config .tflint.hcl
关键特性
- 了解提供商的 Lint:内置针对 AWS、Azure、Google Cloud 的规则,并可通过社区插件扩展。
- 支持自定义规则:可使用 Go 编写自定义检查,或通过
--enable-rule标志细化分析。 - CI/CD 集成:可输出 JSON 供流水线轻松消费,并支持 pre‑commit 钩子。
官方文档: