配置与 Jenkins CI/CD 的集成
配置与 Jenkins CI / CD 的集成包括以下步骤:
- 对卡巴斯基容器安全制造商镜像仓库中的 Jenkins CI/CD 授权。为此,在集群操作员的工作站上,运行以下命令以准备授权数据的 Base64 哈希:
printf "login:password" | openssl base64 -A
其中 login 和 password 是卡巴斯基容器安全制造商的镜像仓库中账户的用户名和密码。
- 卡巴斯基容器安全 API 授权。要执行授权,请完成以下步骤:
- 复制“我的个人资料”页面上的 API 令牌。
- 在 Jenkinsfile 配置文件的 API_TOKEN 变量中指定复制的 API 令牌值。
- 使用 Ingress 控制器的 CA 证书对 CI/CD 中的数据接收服务器进行身份验证。要执行身份验证,请在 Jenkinsfile 配置文件中指定以下变量之一:
-e API_CA_CERT=${KCS_CA_CERT}
表示身份验证已执行,并且在 CI/CD 中启动的扫描器可以确保接收服务器是真实的。-e SKIP_API_SERVER_VALIDATION=true
表示不使用 Ingress 控制器的 CA 证书对接收服务器进行身份验证。
- 创建 Jenkins 环境变量。
要创建环境变量,请将以下行添加到 Jenkinsfile:
- 添加扫描器所在容器仓库的信息,如下所示:
LOGIN
:扫描器仓库中的账户名称PASS
:扫描器仓库的密码 - 如果为私有存储库配置扫描,请指定以下授权数据,以确保扫描器能够访问镜像:
COMPANY_EXT_REGISTRY_USERNAME
:扫描镜像仓库的账户名称COMPANY_EXT_REGISTRY_PASSWORD
:扫描镜像仓库的密码 - 要使用证书与注册表建立安全连接,请将
COMPANY_EXT_REGISTRY_TLS_CERT
环境变量中的证书数据指定为 .PEM 格式的字符串:-----BEGIN CERTIFICATE-----\n... <
证书详细信息
> ...\n-----END CERTIFICATE-----
. - 指定以下用于通过代理服务器进行通信的变量:
HTTP_PROXY
–<用于 HTTP 请求的代理服务器>
HTTPS_PROXY
–<用于 HTTPS 请求的代理服务器>
NO_PROXY
–<要从代理范围排除的域或合适的域掩码>
- 添加扫描器所在容器仓库的信息,如下所示:
- 添加信息以启动扫描器。对于有关启动包含漏洞和其他恶意对象数据库的扫描器的信息,请以声明式或脚本式管道的形式将其添加到 Jenkinsfile 配置文件中。
- 生成用于下载的构件。
您可以生成 .HTML 或 .JSON 格式的下载构件,以接收扫描结果。您可以在
--stout
中指定构件格式,如下所示:pipeline {
agent any
stages {
stage('run scanner') {
steps {
sh 'docker login -u ${LOGIN} -p ${PASS} company.example.com'
sh 'docker run -e API_BASE_URL=https://kcs.int.company.com -e SKIP_API_SERVER_VALIDATION=true -e API_TOKEN=${API_TOKEN} -e COMPANY_EXT_REGISTRY_USERNAME=${COMPANY_EXT_REGISTRY_USERNAME} -e COMPANY_EXT_REGISTRY_PASSWORD=${COMPANY_EXT_REGISTRY_PASSWORD} company.example.com:5050/company/kcs/scanner:v2.0.1-lite jfrog.company.com/demo-kcs/bad:bad-project-test --html --stdout > result.html'
}
}
stage('archive') {
steps {
archiveArtifacts artifacts: 'result.html'
}
}
}
}
要生成 .JSON 格式的构件,请重写上方示例中的“
--html --stdout> result.html
”行,如下所示:--stdout > result.json'
并在
archiveArtifacts artifacts
行中,以定义的格式指定文件名:“result.json”。扫描结果能以您指定的格式获取,也可以在“资源 → CI/CD”部分查看。