配置与 GitLab CI/CD 的集成
此示例使用特定的扫描器镜像,其内置漏洞数据库位于卡巴斯基容器安全制造商的镜像仓库中。
要在 GitLab CI/CD 过程中使用镜像扫描功能,您应该启用 GitLab 容器仓库。
集成配置包括以下步骤:
- 对卡巴斯基容器安全制造商的镜像仓库中的 GitLab CI/CD 授权。
- 在集群操作员的工作站上,运行以下命令准备授权数据的 Base64 哈希:
printf "login:password" | openssl base64 -A
其中 login 和 password 是卡巴斯基容器安全制造商的镜像仓库中账户的用户名和密码。
- 在 GitLab CI/CD 环境变量中,创建 DOCKER_AUTH_CONFIG 变量(在 GitLab 存储库中选择“设置 → CI/CD”,单击“展开”按钮展开变量 ,然后单击“添加变量”按钮)。
- 按以下形式指定变量:
{
"auths": {
"repo.cloud.example.com": {
"auth": "base64hash"
}
}
}
其中 base64hash 是步骤 1a 中获得的字符串。
- 在集群操作员的工作站上,运行以下命令准备授权数据的 Base64 哈希:
- 将数据发送到卡巴斯基容器安全时对来自 GitLab CI/CD 的请求进行授权。
- 复制“我的个人资料”页面上的 API 令牌。
- 在 .gitlab-ci.yml 配置文件的 API_TOKEN 变量中指定复制的 API 令牌值。
- 将镜像扫描阶段添加到 CI/CD 过程中。
要将扫描添加到 CI/CD 管道,您应该将以下行添加到 .gitlab-ci.yml 文件中:
- 在代码构建阶段后,按以下形式添加有关包含漏洞和其他恶意对象数据库的扫描器镜像的信息:
scan_image:
stage: scanner
image:
name: repo.cloud.example.com/repository/company/scanner:v2.0-with-db
entrypoint: [""]
pull_policy: always
我们建议始终指定
pull_policy
参数,以便在每次扫描时接收包含更新的漏洞和其他恶意对象数据库的相关构建。 - 指定用于对卡巴斯基容器安全的 CI/CD 扫描器请求进行授权的标签、内部版本 ID、管道 ID 和 API 令牌,如下所示:
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}
- 要使用证书与注册表建立安全连接,请将
COMPANY_EXT_REGISTRY_TLS_CERT
环境变量中的证书数据指定为 .PEM 格式的字符串:-----BEGIN CERTIFICATE-----\n... <
证书详细信息
> ...\n-----END CERTIFICATE-----
. - 指定以下用于通过代理服务器进行通信的参数:
HTTP_PROXY
–<用于 HTTP 请求的代理服务器>
HTTPS_PROXY
–<用于 HTTPS 请求的代理服务器>
NO_PROXY
–<要从代理范围排除的域或合适的域掩码>
- 如需要,请指定一个变量,以使用入口控制器的 CA 证书检查 CI/CD 中的数据接收服务器:
API_CA_CERT: ${KCS_CA_CERT}
Ingress 控制器的 CA 证书在文本字段中指定为 .PEM 格式的字符串:
----- BEGIN CERTIFICATE ----- \n...
<certificate details>
...\n ----- END CERTIFICATE -----如果未设置
API_CA_CERT
变量,则扫描将会开始但无法完成。使用入口控制器的 CA 证书,可以让在 CI/CD 中运行的扫描器验证数据接收服务器的真实性。
如果您使用自签名证书,或者想要跳过使用入口控制器的 CA 证书检查数据接收服务器这一步骤,请指定变量的值以跳过检查,如下所示:
SKIP_API_SERVER_VALIDATION: 'true'
- 指定卡巴斯基容器安全的 API 主机服务器的网址:
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 格式下载。