
checkov v3.3.9
基础设施即代码的静态分析工具,可在构建时检测跨Terraform、Kubernetes、CloudFormation和容器镜像的云配置错误、漏洞和机密信息。
Checkov 是一个用于基础设施即代码(IaC)的静态代码分析工具,同时也是用于镜像和开源包的软件组成分析(SCA)工具。
它扫描使用 Terraform、Terraform 计划、Cloudformation、AWS SAM、Kubernetes、Helm charts、Kustomize、Dockerfile、Serverless、Bicep、OpenAPI、ARM 模板 或 OpenTofu 配置的云基础设施,并使用基于图的扫描检测安全与合规配置错误。
它执行 软件组成分析(SCA)扫描,即对开源包和镜像进行常见漏洞与暴露(CVE)扫描。
Checkov 还为 Prisma Cloud 应用程序安全 提供支持,这是一个以开发者优先的平台,在整个开发生命周期中将云安全编码化并简化流程。Prisma Cloud 能够在云资源和基础设施即代码文件中识别、修复并防止配置错误。
目录
功能特性
- 超过 1000 条内置策略,涵盖 AWS、Azure 和 Google Cloud 的安全与合规最佳实践。
- 扫描 Terraform、Terraform 计划、Terraform JSON、CloudFormation、AWS SAM、Kubernetes、Helm、Kustomize、Dockerfile、Serverless 框架、Ansible、Bicep、ARM 和 OpenTofu 模板文件。
- 扫描 Argo Workflows、Azure Pipelines、BitBucket Pipelines、Circle CI Pipelines、GitHub Actions 和 GitLab CI 工作流文件。
- 支持基于内存中图扫描的上下文感知策略。
- 支持属性策略的 Python 格式以及属性和复合策略的 YAML 格式。
- 检测 EC2 用户数据、Lambda 环境变量和 Terraform provider 中的 AWS 凭据。
- 使用正则表达式、关键词和基于熵的检测 识别密钥。
- 评估 Terraform Provider 设置,以规范通过 Terraform 管理的 IaaS、PaaS 或 SaaS 的创建、管理和更新。
- 策略支持将变量评估为可选的默认值。
- 支持内联抑制已接受的风险或误报,以减少重复扫描失败。同时支持通过 CLI 进行全局跳过。
- 输出当前支持 CLI、CycloneDX、JSON、JUnit XML、CSV、SARIF 和 GitHub Markdown 格式,并提供修复指南链接。
截图
CLI 中的扫描结果

Jenkins 中的定时扫描结果

快速入门
系统要求
- Python >= 3.9, <=3.12
- Terraform >= 0.12
安装
要安装 pip,请遵循官方文档```sh pip3 install checkov
某些环境(例如Debian 12)可能要求您在虚拟环境中安装Checkov```sh
# Create and activate a virtual environment
python3 -m venv /path/to/venv/checkov
cd /path/to/venv/checkov
source ./bin/activate
# Install Checkov with pip
pip install checkov
# Optional: Create a symlink for easy access
sudo ln -s /path/to/venv/checkov/bin/checkov /usr/local/bin/checkov
或者使用 Homebrew (macOS或Linux)```sh brew install checkov
### 启用 bash 自动补全```sh
source <(register-python-argcomplete checkov)
升级
如果你通过 pip3 安装了 checkov```sh pip3 install -U checkov
或通过 Homebrew```sh
brew upgrade checkov
配置输入文件夹或文件```sh
checkov --directory /user/path/to/iac/code
或者一个特定的文件或多个文件```sh
checkov --file /user/tf/example.tf
或者```sh checkov -f /user/cloudformation/example1.yml -f /user/cloudformation/example2.yml
或者一个 terraform plan 文件的 json 格式```sh
terraform init
terraform plan -out tf.plan
terraform show -json tf.plan > tf.json
checkov -f tf.json
Note: terraform show output file tf.json will be a single line.
For that reason all findings will be reported line number 0 by Checkov```sh
check: CKV_AWS_21: "Ensure all data stored in the S3 bucket have versioning enabled"
FAILED for resource: aws_s3_bucket.customer
File: /tf/tf.json:0-0
Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning
如果你已经安装了 `jq`,你可以使用以下命令将 JSON 文件转换为多行格式:```sh
terraform show -json tf.plan | jq '.' > tf.json
扫描结果会更加用户友好。```sh checkov -f tf.json Check: CKV_AWS_21: "Ensure all data stored in the S3 bucket have versioning enabled" FAILED for resource: aws_s3_bucket.customer File: /tf/tf1.json:224-268 Guide: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/s3-policies/s3-16-enable-versioning
