Checkov扫描结果中的硬性失败与软性失败机制解析

Checkov扫描结果中的硬性失败与软性失败机制解析

checkov checkov能对 Terraform、CloudFormation、Kubernetes 等多种IaC模板进行自动化的安全性和合规性审查,有助于在部署阶段就发现并修复基础设施相关的安全风险。 checkov 项目地址: https://gitcode.com/gh_mirrors/ch/checkov

概述

在基础设施即代码(IaC)安全扫描工具Checkov中,扫描结果的判定机制是保障CI/CD流程顺畅运行的关键。本文将深入探讨Checkov中的硬性失败(hard fail)和软性失败(soft fail)机制,帮助开发者根据实际需求灵活配置扫描策略。

基本概念

退出代码含义

Checkov扫描结束后会返回以下两种退出代码:

  • 0:表示扫描通过(可能是所有检查都通过,或者存在软性失败)
  • 1:表示扫描失败(存在硬性失败)

失败类型定义

  1. 硬性失败:当检查发现问题且配置为必须修复时,Checkov会返回退出代码1,通常会导致CI/CD流程中断。

  2. 软性失败:虽然检查发现了问题,但被标记为可容忍的,Checkov仍返回退出代码0,不会中断CI/CD流程。

核心配置参数

全局软性失败参数

--soft-fail(简写-s):

  • 作用:强制所有检查结果都视为软性失败
  • 使用场景:在开发环境或测试阶段,希望发现问题但不中断流程

精细化控制参数

  1. --soft-fail-on

    • 功能:指定哪些检查ID或严重级别应被视为软性失败
    • 匹配规则:当检查的严重级别小于等于指定级别时视为匹配
    • 多级别处理:若指定多个级别,取最高级别作为阈值
  2. --hard-fail-on

    • 功能:指定哪些检查ID或严重级别必须视为硬性失败
    • 匹配规则:当检查的严重级别大于等于指定级别时视为匹配
    • 多级别处理:若指定多个级别,取最低级别作为阈值

组合逻辑与优先级

当同时使用多个参数时,Checkov会按照以下优先级顺序评估每个失败的检查:

  1. 检查ID是否明确匹配--hard-fail-on列表(支持通配符)
  2. 检查ID是否明确匹配--soft-fail-on列表(支持通配符)
  3. 检查严重级别是否达到--hard-fail-on设定的阈值
  4. 检查严重级别是否低于--soft-fail-on设定的阈值
  5. 以上都不匹配时,回退到--soft-fail的全局设置

最终结果判定

  • 只要有一个失败检查被判定为硬性失败,整个扫描就会返回硬性失败
  • 所有失败检查都是软性失败时,才会返回软性失败

实践示例

假设扫描发现两个问题:

| 策略ID | 严重级别 | |---------|----------| | CKV_123 | 低 | | CKV_789 | 高 |

不同参数组合下的结果:

  1. --soft-fail true

    • 结果:0(软性失败)
    • 说明:强制所有失败转为软性
  2. --soft-fail-on CKV_123

    • 结果:1(硬性失败)
    • 说明:CKV_789未匹配任何软性条件
  3. --hard-fail-on HIGH

    • 结果:1(硬性失败)
    • 说明:CKV_789达到硬性阈值
  4. --soft-fail-on LOW --hard-fail-on CKV_123

    • 结果:1(硬性失败)
    • 说明:显式硬性匹配优先

平台级强制执行规则

Checkov支持从安全平台下载预定义的强制执行规则,实现集中化管理:

  • 启用方式:使用--use-enforcement-rules参数配合平台API密钥
  • 优势:可按扫描类型(IaC、密钥、SCA等)分别设置不同的硬性失败阈值
  • 与本地参数的关系:
    • --soft-fail会覆盖所有强制执行规则
    • 仅含检查ID的参数会与规则合并
    • 含严重级别的参数会覆盖对应规则

最佳实践建议

  1. 开发环境:使用--soft-fail确保流程不被阻断,同时收集问题
  2. 预发布环境:结合--hard-fail-on HIGH确保关键问题必须修复
  3. 生产环境:配置严格的强制执行规则,并配合精细化的检查ID控制
  4. 渐进式严格:随着环境接近生产,逐步提高硬性失败的严重级别阈值

通过合理配置硬性失败和软性失败机制,团队可以在安全性和开发效率之间取得平衡,实现安全左移的同时不影响开发体验。

checkov checkov能对 Terraform、CloudFormation、Kubernetes 等多种IaC模板进行自动化的安全性和合规性审查,有助于在部署阶段就发现并修复基础设施相关的安全风险。 checkov 项目地址: https://gitcode.com/gh_mirrors/ch/checkov

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余达殉Lambert

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值