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_KEYASOC_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.yamlDockerfile 复制到您的 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 Runner 用户:
    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