使用 GitHub Action 和儲存器配置掃描自動化

可從 HCL Harbor 和 HCL FlexNet Operations 入口網站 (FNO) 取得的 HCL®AppScan® 來源 指令行介面 (CLI) 儲存器,可用於使用 GitHub 將靜態分析掃描自動化,而無須安裝完整的 AppScan® 來源 實例。

使用儲存器掃描的主要步驟如下:
  1. 準備應用程式。
  2. 使用來自 HCL FNO 的儲存器影像準備 GitHub Action。
  3. 使用 GitHub Action 起始掃描。

必備項目

開始前,請確定您的環境符合以下要求:
  • GitHub Action 環境:一或多個安裝了 Docker 的 Linux RHEL 7.9 版 GitHub Action 執行程式。

    這是要使用 CLI 儲存器執行靜態分析掃描的目標系統。

  • AppScan® Source for Automation 的有效授權和相關授權伺服器資訊。

  • AppScan® 來源 CLI 儲存器影像

    HCL HarborHCL FNO 下載 AppScan® 來源 CLI 儲存器影像。擁有有效授權後,您的 HCL ID 可授予這些位置的存取權。

  • AppScan® 來源 CLI Script

    使用 GitHub Action 透過儲存器掃描需有 Script。

  • AppScan® 來源 專案 (.ppf) 和應用程式 (.paf) 檔案:使用 AppScan® 來源 for Analysis 產生配置檔(需要在可存取掃描目標的 Linux 系統上安裝 AppScan® 來源)。
  • 從儲存器存取 GitHub Action 上的內容:
    • 要掃描的應用程式應存在於 GitHub 中,且能從執行掃描的 GitHub Action 存取。
    • .paf/.ppf 檔案
    註: 在掃描實例化過程中,系統會將磁區對映(將儲存器主機上的路徑對映到儲存器中的路徑)用於此目的。

準備要掃描的應用程式

使用以下任一項目準備要掃描的應用程式:
  • .paf/.ppf 檔案
  • 資料夾掃描
使用 paf/ppf 檔案準備要掃描的應用程式
  1. 在已安裝 AppScan® 來源 的 Linux 系統上,使用 HCL®AppScan® Source for Analysis 用戶端產生 .paf/.ppf 檔案。

    確保 .paf.ppf 檔案位於所要掃描之應用程式的根目錄下。

  2. 確保應用程式檔案和 paf/ppf 檔案可從 GitHub 執行程式存取。

    例如,如果可在根路徑 /usr/user1/SampleApp 存取應用程式,則 .paf/.ppf 檔案會位於 /usr/user1/SampleApp/SampleApp.paf/usr/user1/SampleApp/SampleApp.ppf

  3. 需有磁區對映才能讓儲存器存取主機/代理程式系統上的應用程式檔案。確定儲存器所看到的磁區名稱。
    例如,將主機上的 /usr/user1 對映至儲存器中的 cvol
    註: 磁區對映是在儲存器中執行 CLI 時所指定的。
  4. 建立 CLI Script。例如,/usr/user1/SampleApp 中的 SampleApp.script
    就此範例而言,Script 會告訴儲存器使用 cvol 路徑存取應用程式內容。所列出的指令是 AppScan® 來源 CLI(不需手動介入的掃描)中使用的指令。
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout
準備應用程式以進行資料夾掃描:
  1. 確保應用程式檔案可從 GitHub Action 執行程式存取。

    例如,應用程式可從 GitHub Action 執行程式上的路徑 /usr/user1/SampleApp 存取。

  2. 確定儲存器所看到的磁區名稱。
    例如,將主機上的 /usr/user1 對映至儲存器中的 cvol
    註: 磁區對映是在儲存器中執行 CLI 時所指定的。
  3. 建立 CLI Script。例如,/usr/user1/SampleApp 中的 SampleApp.script
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout

使用 CLI 儲存器影像準備 GitHub Action

準備 GitHub Action 上的執行時期環境
  1. HCL FNOAppScan® 來源 CLI 儲存器下載至 GitHub 主機,或直接從 HCL Harbor 存取。

    如果是從 HCL FNO 下載,請使用 docker load 指令載入 CLI 儲存器影像。

  2. 請建立 yaml Script 檔案,以使用 HCL Harbor 的 AppScan® 來源 CLI 儲存器執行靜態分析掃描,並將其放到適當的分支中。例如:
    # 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 Action 執行程式起始靜態分析掃描

執行靜態分析掃描:
  1. 確保 GitHub Action 執行程式已上線。

    如果執行程式為自我託管,請手動執行從 GitHub 下載的執行 Script。

  2. 在 GitHub 中,選取動作 > 執行工作流程,以使用存在於分支中的 .yaml Script 啟動靜態分析掃描。