关于Checkov
Checkov是一款针对基础设施即代码(IaC)的静态代码安全分析工具,在该工具的帮助下,广大研究人员可以在在Terraform、CloudFormation、Kubernetes、Serverless Framework和其他基础设施的构建期间,轻松检测出云端代码安全问题。
Checkov使用了基于图表的扫描技术来扫描那些使用了Terraform、Terraform plan、Cloudformation、AWS SAM、Kubernetes、Helm charts、Kustomize、Dockerfile、Serverless、Bicep或ARM模板配置的云基础设施,并尝试检测出潜在的安全性问题或合规性错误配置。
功能介绍
1、内置了超过1000种针对AWS、Azure和Google Cloud的安全和合规性最佳实践策略。 2、支持扫描Terraform、Terraform Plan、CloudFormation、AWS SAM、Kubernetes、Dockerfile、Serverless Framework、Bicep和ARM模板文件。 3、支持基于内存扫描的上下文感知策略。 4、属性策略支持Python格式,属性和混合策略支持YAML格式。 5、支持检测EC2用户数据、Lambda环境变量和Terraform中的AWS凭据。 6、使用正则表达式、关键字和基于熵的检测来识别敏感数据。 7、评估Terraform提供商设置,以规范那些通过Terraform管理的IaaS、PaaS或SaaS的创建、管理和更新行为。 8、支持以CLI、CycloneDX、JSON、JUnit XML、SARIF和Github Markdown等形式输出结果。
工具要求
1、Python >= 3.7 2、Terraform >= 0.12
工具安装
代码语言:javascript复制pip3 install checkov
Alpine安装
代码语言:javascript复制pip3 install --upgrade pip && pip3 install --upgrade setuptools
pip3 install checkov
Ubuntu 18.04安装
代码语言:javascript复制sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.7
sudo apt install python3-pip
sudo python3.7 -m pip install -U checkov #to install or upgrade checkov)
Homebrew安装(macOS)
代码语言:javascript复制brew install checkov
或
代码语言:javascript复制brew upgrade checkov
工具使用样例
执行两种特定的安全检测:
代码语言:javascript复制checkov --directory . --check CKV_AWS_20,CKV_AWS_57
运行所有的检测(排除一个):
代码语言:javascript复制checkov -d . --skip-check CKV_AWS_20
运行所有中危或高危问题检测(需要API密钥):
代码语言:javascript复制checkov -d . --check MEDIUM --bc-api-key ...
运行所有中危或高危问题检测,并检测CKV_123:
代码语言:javascript复制checkov -d . --check MEDIUM,CKV_123 --bc-api-key ...
跳过所有的中危或低危问题检测:
代码语言:javascript复制checkov -d . --skip-check MEDIUM --bc-api-key ...
跳过所有的中危或低危问题,以及CKV_789的检测:
代码语言:javascript复制checkov -d . --skip-check MEDIUM,CKV_789 --bc-api-key ...
工具配置
工具的配置文件config.yaml样例如下:
代码语言:javascript复制branch: develop
check:
- CKV_DOCKER_1
compact: true
directory:
- test-dir
docker-image: sample-image
dockerfile-path: Dockerfile
download-external-modules: true
evaluate-variables: true
external-checks-dir:
- sample-dir
external-modules-download-path: .external_modules
framework:
- all
no-guide: true
output: cli
quiet: true
repo-id: bridgecrew/sample-repo
skip-check:
- CKV_DOCKER_3
- CKV_DOCKER_2
skip-fixes: true
skip-framework:
- dockerfile
- secrets
skip-suppressions: true
soft-fail: true
我们可以通过命令行参数传递一个config配置文件的路径:
代码语言:javascript复制checkov --config-file path/to/config.yaml
或者使用“--create-config”命令来创建一个配置文件:
代码语言:javascript复制checkov --compact --directory test-dir --docker-image sample-image --dockerfile-path Dockerfile --download-external-modules True --external-checks-dir sample-dir --no-guide --quiet --repo-id bridgecrew/sample-repo --skip-check CKV_DOCKER_3,CKV_DOCKER_2 --skip-fixes --skip-framework dockerfile secrets --skip-suppressions --soft-fail --branch develop --check CKV_DOCKER_1 --create-config /Users/sample/config.yml
工具运行截图
许可证协议
本项目的开发与发布遵循Apache-2.0开源许可证协议。
项目地址
https://github.com/bridgecrewio/checkov
参考资料
https://docs.bridgecrew.io/docs/aws-policy-index
https://github.com/bridgecrewio/checkov/blob/master/docs/1.Welcome/Quick Start.md
https://bridgecrew.io/?utm_source=github&utm_medium=organic_oss&utm_campaign=checkov