使用 GitHub 操作和容器配置扫描自动化

HCL®AppScan® 命令行界面 (CLI) 容器可从 HCL Harbour 和 HCL FlexNet Operations 门户网站 (FNO) 中获得,可用于使用 GitHub 自动执行静态分析扫描,而无需安装 AppScan® 的完整实例。

使用容器扫描的主要步骤包括:
  1. 准备应用程序。
  2. 使用来自 HCL FNO 的容器映像准备 GitHub 操作。
  3. 使用 GitHub 操作启动扫描。

先决条件

开始之前,确保您的环境符合以下需求:
  • GitHub 操作环境:安装了 Docker 的一个或多个基于 Linux RHEL 7.9 的 GitHub 操作运行程序。

    这是旨在使用 CLI 容器运行静态分析扫描的系统。

  • AppScan® Source for Automation 的有效许可证和相关许可证服务器信息。

  • AppScan® CLI 容器映像

    HCL HarborHCL FNO 下载 AppScan® CLI 容器映像。使用有效的许可证,您的 HCL 标识将授予对这些位置的访问权。

  • AppScan® CLI 脚本

    使用 GitHub 操作通过容器进行扫描时需要脚本。

  • AppScan® 项目 (.ppf) 和应用程序 (.paf) 文件:使用 AppScan® for Analysis 生成配置文件(需要在可访问扫描目标的 Linux 系统上安装 AppScan®)。
  • 从容器访问 GitHub 操作相关内容:
    • 要扫描的应用程序应位于 GitHub 中,并且可从运行扫描的 GitHub 操作访问。
    • .paf/.ppf 文件
    注: 卷映射(将容器主机上的路径映射到容器中的路径)在扫描实例化期间用于此目的。

准备要扫描的应用程序

使用以下任一方法准备用于扫描的应用程序:
  • .paf/.ppf 文件
  • 文件夹扫描
准备要使用 paf/ppf 文件扫描的应用程序
  1. 在安装了 AppScan® 的 Linux 系统上使用 HCL®AppScan® Source for Analysis 客户机生成 .paf/.ppf 文件。

    确保 .paf.ppf 文件位于要扫描的应用程序的根目录。

  2. 确保可以从 GitHub 操作运行程序访问应用程序文件和 paf/ppf 文件。

    例如,如果应用程序可从根路径 /usr/user1/SampleApp 访问,则 .paf/.ppf 文件位于 /usr/user1/SampleApp/SampleApp.paf/usr/user1/SampleApp/SampleApp.ppf

  3. 要允许容器访问主机/代理程序系统上的应用程序文件,需要卷映射。确定容器所看到的卷的名称。
    例如,将主机上的 /usr/user1 映射到容器中的 cvol
    注: 在容器中运行 CLI 时指定了卷映射。
  4. 创建 CLI 脚本。例如,SampleApp.script 位于 /usr/user1/SampleApp
    在本示例中,脚本指示容器使用 cvol 路径访问应用程序内容。列出的命令是与 AppScan® CLI 结合使用的命令(在没有手动干预的情况下扫描)。
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout
准备用于文件夹扫描的应用程序
  1. 确保可以从 GitHub 操作运行程序访问应用程序文件。

    例如,应用程序可从 GitHub 操作运行程序上的路径 /usr/user1/SampleApp 访问。

  2. 确定容器所看到的卷的名称。
    例如,将主机上的 /usr/user1 映射到容器中的 cvol
    注: 在容器中运行 CLI 时指定了卷映射。
  3. 创建 CLI 脚本。例如,SampleApp.script 位于 /usr/user1/SampleApp
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout

使用 CLI 容器映像准备 GitHub 操作

要在 GitHub 操作上准备运行时环境
  1. HCL FNOAppScan® CLI 容器下载到 GitHub 主机,或者直接从 HCL Harbor 访问。

    如果已从 HCL FNO 下载,使用 docker load 命令装入 CLI 容器映像。

  2. 创建 yaml 脚本文件,使用 AppScan® CLI 容器从 HCL Harbor 运行静态分析扫描,并将其放置在相应的分支中。例如:
    # This is a basic workflow to help you get started with Actions
    
    name: CI
    
    # Controls when the workflow will run
    on:
      # Triggers the workflow on push or pull request events but only for the development branch
      push:
        <name of the branch used for running SAST scan>
      pull_request:
            <name of the branch used for running SAST scan>
    
      # Allows you to run this workflow manually from the Actions tab
      workflow_dispatch:
    
    # A workflow run is made up of one or more jobs that can run sequentially or in parallel
    jobs:
      # This workflow contains a single job called "build"
      SAST_SCAN:
        # The type of runner that the job will run on , here we used a self-hosted runner
        runs-on: [ self-hosted ]
    
        # Steps represent a sequence of tasks that will be executed as part of the job
        steps:
          # Checks-out your repository under $GITHUB_WORKSPACE, so our job can access it
          - uses: actions/checkout@v2
          
           # Displays current working path
          - name: Display current workspace
            run: echo $GITHUB_WORKSPACE
            
    .
          - name: Docker cleanup
            run : docker system prune -a -f
         
          - name: Docker run
            run : docker run --rm --env-file $GITHUB_WORKSPACE/env.list -v $GITHUB_WORKSPACE/:/wa  hclcr.io/appscan/appscan-src-cli:10.1.0 script /wa/CLI.script
          - name: Docker cleanup
            run : docker system prune -a -f
          - name: Success
            run: echo Scan completed successfully.
    

使用 GitHub 操作运行程序启动静态分析扫描

要运行静态分析扫描:
  1. 确保 GitHub 操作运行程序在线。

    如果运行程序是自行托管的,请手动执行从 GitHub 下载的运行脚本。

  2. 在 GitHub 中,选择操作 > 运行工作流程,以使用分支中存在的 .yaml 脚本启动静态分析扫描。