此示例使用特定的扫描器镜像,其内置漏洞数据库位于卡巴斯基容器安全制造商的镜像仓库中。
要在 GitLab CI/CD 过程中使用镜像扫描功能,您应该启用 GitLab 容器仓库。
集成配置包括以下步骤:
printf "login:password" | openssl base64 -A
其中 login 和 password 是卡巴斯基容器安全制造商的镜像仓库中账户的用户名和密码。
{
"auths": {
"repo.cloud.example.com": {
"auth": "base64hash"
}
}
}
其中 base64hash 是步骤 1a 中获得的字符串。
要将扫描添加到 CI/CD 管道,您应该将以下行添加到 .gitlab-ci.yml 文件中:
scan_image:
stage: scanner
image:
name: repo.cloud.example.com/repository/company/scanner:v1.2-with-db
entrypoint: [""]
pull_policy: always
我们建议始终指定 pull_policy
参数,以便在每次扫描时接收包含更新的漏洞和其他恶意对象数据库的相关构建。
SCAN_TARGET: ${CI_REGISTRY_IMAGE}:master
BUILD_NUMBER: ${CI_JOB_ID}
BUILD_PIPELINE: ${CI_PIPELINE_ID}
API_TOKEN: <API 令牌值>
下面的示例包含master
(主)标签,您还可以指定其他标签。
COMPANY_EXT_REGISTRY_USERNAME: ${COMPANY_EXT_REGISTRY_USERNAME}
COMPANY_EXT_REGISTRY_PASSWORD: ${COMPANY_EXT_REGISTRY_PASSWORD}
API_CA_CERT:${KCS_CA_CERT}
入口控制器的 CA 证书在文本字段中指定为 .PEM 格式的字符串:
----- BEGIN CERTIFICATE ----- \n... <certificate details>
...\n ----- END CERTIFICATE -----
如果未设置 API_CA_CERT
变量,则扫描将会开始但不会结束。
使用入口控制器的 CA 证书,可以让在 CI/CD 中运行的扫描器验证数据接收服务器的真实性。
如果您使用自签名证书,或者想要跳过使用入口控制器的 CA 证书检查数据接收服务器这一步骤,请指定变量的值以跳过检查,如下所示:
SKIP_API_SERVER_VALIDATION: 'true'
API_BASE_URL:
<网址>
variables:
API_BASE_URL: ${API_BASE_URL}
script:
- /bin/sh /entrypoint.sh $SCAN_TARGET --stdout > artifact-result.json
artifacts:
paths:
- artifact-result.json
配置与外部仓库的集成后,您可以在 CI/CD 过程中扫描镜像,包括在 SBOM 模式下扫描。扫描结果可以在“资源 → CI/CD”中查看,或以 .SPDX、.JSON 和 .HTML 格式下载。
页首