checkov 是一個開源的靜態分析工具,掃描 Terraform / CloudFormation / Kubernetes 等 IaC 程式碼,比對內建的規則庫找出安全漏洞與合規違規。它在 plan 之前或之後執行、不建立任何雲端資源,所以是 CI pipeline 裡最便宜的安全檢查之一。

概念位置

checkov 在 infra PR 流程裡的位置是 fmtvalidatecheckov / tfsecplan。前兩步檢查語法正確,checkov 檢查語意安全,plan 檢查實際差異。checkov 補的是 reviewer 肉眼容易漏的盲區——一條 security group 規則寫成 0.0.0.0/0 在 HCL 裡只是一行字串,人會看漏,規則不會。

三個常見的 IaC 掃描工具各有側重:

工具側重維護方
checkov安全 + 合規Prisma Cloud (Palo Alto)
tfsec安全Aqua Security
tflintprovider 正確性社群

checkov 的規則庫最廣(涵蓋 CIS Benchmark、SOC 2、PCI DSS 等合規框架),tfsec 的規則更聚焦安全面,tflint 偏向「這個 instance type 在這個 region 存不存在」的 provider 正確性。三者可疊加使用。

可觀察訊號

需要引入 checkov 的訊號是 PR review 開始漏掉安全問題——S3 bucket 缺 public access block、RDS 沒開加密、IAM policy 過寬。這些問題的 pattern 是固定的、可以用規則比對,不應該靠人記憶來擋。

checkov 命中後要區分「真漏洞」和「情境合理的例外」。ALB 的 HTTPS listener 在 port 443 開 0.0.0.0/0 是設計本意,不是漏洞。豁免用行內註解標記並寫理由:#checkov:skip=CKV_AWS_260:ALB public HTTPS listener。詳細的規則配置與豁免管理見 checkov 與 tfsec 規則配置

設計責任

引入 checkov 時要決定兩件事:啟用哪些規則(全部 vs 漸進啟用),以及命中時 CI 要不要擋(hard fail vs warning)。常見的漸進策略是先從高嚴重度規則開始、設為 hard fail,中低嚴重度設為 warning,隨團隊習慣逐步收緊。

鄰卡

  • IaC — checkov 掃描的對象
  • Security Group — checkov 最常攔截的 0.0.0.0/0 全開規則