卡巴斯基容器安全

配置与 Jenkins CI/CD 的集成

配置与 Jenkins CI / CD 的集成包括以下步骤:

  1. 对卡巴斯基容器安全制造商镜像仓库中的 Jenkins CI/CD 授权。为此,在集群操作员的工作站上,运行以下命令以准备授权数据的 Base64 哈希:

    printf "login:password" | openssl base64 -A

    其中 login 和 password 是卡巴斯基容器安全制造商的镜像仓库中账户的用户名和密码。

  2. 卡巴斯基容器安全 API 授权。要执行授权,请完成以下步骤:
    1. 复制“我的个人资料”页面上的 API 令牌。
    2. 在 Jenkinsfile 配置文件的 API_TOKEN 变量中指定复制的 API 令牌值。
  3. 使用 Ingress 控制器的 CA 证书对 CI/CD 中的数据接收服务器进行身份验证。要执行身份验证,请在 Jenkinsfile 配置文件中指定以下变量之一:
    1. -e API_CA_CERT=${KCS_CA_CERT}表示身份验证已执行,并且在 CI/CD 中启动的扫描器可以确保接收服务器是真实的。
    2. -e SKIP_API_SERVER_VALIDATION=true表示不使用 Ingress 控制器的 CA 证书对接收服务器进行身份验证。
  4. 创建 Jenkins 环境变量。

    要创建环境变量,请将以下行添加到 Jenkinsfile:

    1. 添加扫描器所在容器仓库的信息,如下所示:

      LOGIN:扫描器仓库中的账户名称

      PASS:扫描器仓库的密码

    2. 如果为私有存储库配置扫描,请指定以下授权数据,以确保扫描器能够访问镜像:

      COMPANY_EXT_REGISTRY_USERNAME:扫描镜像仓库的账户名称

      COMPANY_EXT_REGISTRY_PASSWORD:扫描镜像仓库的密码

    3. 要使用证书与注册表建立安全连接,请将COMPANY_EXT_REGISTRY_TLS_CERT环境变量中的证书数据指定为 .PEM 格式的字符串:

      -----BEGIN CERTIFICATE-----\n... <证书详细信息> ...\n-----END CERTIFICATE-----.

    4. 指定以下用于通过代理服务器进行通信的变量:

      HTTP_PROXY<用于 HTTP 请求的代理服务器>

      HTTPS_PROXY<用于 HTTPS 请求的代理服务器>

      NO_PROXY<要从代理范围排除的域或合适的域掩码>

  5. 添加信息以启动扫描器。对于有关启动包含漏洞和其他恶意对象数据库的扫描器的信息,请以声明式或脚本式管道的形式将其添加到 Jenkinsfile 配置文件中。

    以声明式管道形式添加有关启动扫描器的信息的示例

    以脚本式管道形式启动扫描器的数据的示例

  6. 生成用于下载的构件。

    您可以生成 .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”部分查看。