在精简版 SBOM 模式下运行扫描器
2024年7月4日
ID 276521
卡巴斯基容器安全可在精简版 SBOM 模式下启动扫描器来检查镜像中是否存在漏洞。在这种情况下,解决方案会扫描专门创建的 SBOM 文件,并且该扫描结果在 CI/CD 阶段可用。
通过监听和拦截网络流量获得的数据必须在 CI/CD 环境和解决方案之间安全传输。
您可以生成 .SPDX、.HTML 或 .JSON 格式的下载构件来接收结果。
在 GitLab 中运行扫描器
要在 GitLab 中精简版 SBOM 模式下启动扫描器,需在 CI/CD 进程中配置镜像扫描时编辑 .gitlab-ci.yml 配置文件,如下所示:
- 添加在 CI/CD 中启动用于镜像扫描的扫描器的镜像相关信息,如下所示:
scan_image:
stage: scanner
image:
name:repo.cloud.example.com/repository/company/scanner:v.1.2-lite
entrypoint: [""]
pull_policy: always
- 指定编排平台标签,如下所示:
k8s
在提供的示例中,为 Kubernetes 指定了
k8s
标签,您也可以为其他受支持的编排平台指定标签。 - 指定用于对卡巴斯基容器安全的 CI/CD 扫描器请求进行授权的变量,如构建 ID、私有存储库详情、管道 ID 以及 API 令牌,如下所示:
SCAN_TARGET: ${CI_REGISTRY_IMAGE}:master
COMPANY_EXT_REGISTRY_USERNAME: ${COMPANY_EXT_REGISTRY_USERNAME}
COMPANY_EXT_REGISTRY_PASSWORD: ${COMPANY_EXT_REGISTRY_PASSWORD}
BUILD_NUMBER: ${CI_JOB_ID}
BUILD_PIPELINE: ${CI_PIPELINE_ID}
API_TOKEN:
<API 令牌值>
- 如需要,请指定一个变量,以使用入口控制器的 CA 证书检查 CI/CD 中的数据接收服务器:
API_CA_CERT:${KCS_CA_CERT}
如果未设置
API_CA_CERT
变量,则扫描将会开始但不会结束。 - 指定卡巴斯基容器安全的 API 主机服务器的网址:
API_BASE_URL:
<网址>
- 指定扫描仪启动时创建 SBOM 文件的命令,支持以下格式之一:
- 要生成 .JSON 格式的构件:
script:
- /bin/sh /entrypoint.sh $SCAN_TARGET --stdout > artifact-result.json
artifacts:
paths:
- artifact-result.json
- 要生成 .HTML 格式的构件:
script:
- /bin/sh /entrypoint.sh $SCAN_TARGET --html --stdout > artifact-result.html
artifacts:
paths:
- artifact-result.html
- 要生成 .SPDX 格式的构件:
script:
- /bin/sh /entrypoint.sh $SCAN_TARGET --spdx --stdout > artifact-result.spdx
artifacts:
paths:
- artifact-result.spdx
- 要生成 .JSON 格式的构件:
有关将扫描器配置为在 GitLab 中精简版 SBOM 模式下运行并以 .HTML 格式生成构件的示例
在 Docker 中运行扫描器
要在 Docker 中以精简版 SBOM 模式启动扫描器:
- 指定卡巴斯基容器安全的 API 主机服务器的网址:
-e API_BASE_URL=https://company.local
- 指定变量的值以跳过使用 Ingress 控制器的 CA 证书检查数据接收服务器:
-e SKIP_API_SERVER_VALIDATION=true
- 指定用于对卡巴斯基容器安全的 CI/CD 扫描器请求进行授权的 API 令牌,如下所示:
-e API_TOKEN=
<API 令牌值>
- 指定要启动扫描器的数据:
repo.kcs.company.com/images/scanner:
v1.2-lite
- 如果您需要生成 .SPDX、.HTML 或 .JSON 格式的下载工件,请指定以下内容:
-
<工件格式>
--stdout> result.<文件格式>
例如:
--html --stdout > result.html
- 按Enter键启动扫描器。
如果在调用扫描仪时出现域名解析错误(
Name does not resolve
(名称无法解析)),则必须在组织的内部 DNS 服务器之前指定API_BASE_URL
变量之前的地址。例如:--dns 10.0.xx.x
API_BASE_URL: https://company.local/
有关将扫描器配置为在 Docker 中精简版 SBOM 模式下运行并以 .JSON 格式生成构件的示例
扫描结果能以您指定的格式获取,也可以在"资源 → CI/CD“部分查看。