ASoC 和 GitLab

将 AppScan on Cloud 与 GitLab 配合使用,针对每个合并请求上存储库中的文件运行静态分析安全测试 (SAST),从而防止漏洞到达主分支。结果存储在 AppScan on Cloud 中。

注册

如果您没有帐户,请在 HCL AppScan on Cloud (ASoC) 上注册,以生成 API 密钥和 API 密码。

设置

  1. 在 API 页面上生成 ASoC API 密钥和 API 密码。

    API 密钥和 API 密码映射到此操作的 ASOC_KEY 和 ASOC_SECRET 参数。记下密钥和密码。

  2. 在 ASoC 中创建应用程序。

    应用程序充当存储与同一项目相关的所有扫描的容器。

  3. 复制应用程序标识。选择应用程序 > <您的应用程序>,然后单击应用程序详细信息下方应用程序标识旁边的复制。

    ASoC 中的应用程序标识将映射到此集成的 APP_ID。

  4. 在 GitLab 中创建三个变量。选择设置 > CI/CD > 变量,然后按以下方式设置变量:
    变量 值
    APP_ID 来自 ASoC 的应用程序标识
    ASOC_KEY 来自 ASoC 的 API 密钥
    ASOC_SECRET 来自 ASoC 的 API 密码

  5. 将 .gitlab-ci.yaml 和 Dockerfile 复制到您的 GitLab 存储库根中。
  6. 构建您自己的运行程序。选择设置 > CI/CD > 运行程序,然后按照特定运行程序下的步骤执行操作。
  7. 在您正在设置 GitLab 运行程序的系统上,登录并克隆您的 GitLab 存储库(如果尚未存在)。确保该计算机上安装了 Docker 引擎。
  8. 从 Dockerfile 创建一个名为 saclient 的新 Docker 映像。将目录更改为存储库的根目录,然后运行以下命令,以构建 Docker 映像:
     docker build -t saclient . 
    重要: 末尾的句点表示当前目录。
  9. 在 GitLab 中,要防止扫描失败时合并,在设置 > 合并请求 > 合并检查中启用管道必须成功。
  10. 在设置 > CI/CD > 管道中创建新的合并请求时,验证是否启动了新的扫描作业。

示例

如果要在 CentOS 上安装 GitLab 运行器,请按如下方式构建运行器:
  1. 下载系统的二进制文件:
    sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
  2. 设置执行许可权:
    sudo chmod +x /usr/local/bin/gitlab-runner
  3. 创建 GitLab 运行器用户:
    sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
  4. 安装并作为服务运行:
    sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner 
    sudo gitlab-runner start
  5. 注册运行程序:
    sudo gitlab-runner register --url https://gitlab.com/ --registration-token $REGISTRATION_TOKEN

其他信息

当前 yaml 脚本包含安全策略检查的样本,如果允许的安全性问题数量超过特定阈值,则扫描将失败。样本已将 maxIssuesAllowed 设置为 200。