透過 Azure 和儲存器配置掃描自動化

HCL Harbor 和 HCL FlexNet Operations 入口網站 (FNO) 顯示的 HCL®AppScan® 來源 指令行介面 (CLI) 儲存器可搭配 Azure 自動化靜態分析掃描,無須安裝 AppScan® 來源 的完整執行個體。

使用儲存器進行掃描的主要步驟如下:
  1. 準備應用程式。
  2. 準備 Azure DevOps 管線環境。
  3. 從儲存器映像檔啟動掃描。

必備項目

開始之前,請確定您的環境符合下列需求:
  • Azure 環境,包括另一個已安裝 Docker 的 Linux 代理程式/主機。

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

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

  • AppScan® 來源 CLI 儲存器映像檔

    HCL HarborHCL FNO 下載 AppScan® 來源 CLI 儲存器映像檔。取得有效的授權後,您的 HCL ID 會將存取權授與這些位置。

  • AppScan® 來源 CLI script

    在 Jenkins 管線中使用儲存器進行掃描時,需要 Script。

  • 從儲存器存取 Azure 主機/代理程式上的內容:

    要掃描的應用程式必須可從執行掃描的 Azure 主機存取。

    註: 在掃描實例化期間,磁區對映(儲存器主機上的路徑對映到儲存器中的路徑)會用於此用途。

準備要掃描的應用程式

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

    請確定 pafppf 檔案位於要掃描的應用程式根目錄。

  2. 請確定可以從 Jenkins 主機/代理程式存取應用程式檔案和 paf/ppf 檔案。

    例如,如果應用程式可在 Jenkins 主機/代理程式的根路徑 /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. 請確定可以從 Jenkins 主機/代理程式存取應用程式檔案。

    例如,可在 Jenkins 主機/代理程式的路徑 / usr/user1/SampleApp 中存取應用程式。

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

準備 Azure DevOps 管線環境

準備環境的方法有三種:
  • 透過使用典型編輯器的 HCL FlexNet Operations 使用儲存器映像檔。
  • 透過使用典型編輯器的 HCL Harbor 使用儲存器映像檔。
  • 透過使用 YAML 配置檔的 HCL Harbor 使用儲存器映像檔。
透過使用典型編輯器的 HCL FlexNet Operations 使用儲存器映像檔,以準備 Azure DevOps 管線:
  1. 從 HCL FlexNet Operations (FNO) 將 AppScan® 來源 CLI 儲存器下載至 Azure VM。
  2. 使用 docker load 指令載入 CLI 儲存器映像檔。
  3. 在 Azure DevOps 組織內,使用典型編輯器建立新的管線。按一下使用典型編輯器
  4. 選取要掃描專案及儲存 CLI script 所在的存放庫和分支,然後按一下繼續
    1. 選取 Azure Repos Git 作為來源。
    2. 選取團隊專案
    3. 選取存放庫
  5. 選取 Azure 代理程式儲存區,其中有透過 AppScan® 來源 CLI 儲存器配置的 Azure VM。
  6. 新增 Docker 作業以載入映像檔。包含以下規格:
    • 作業版本:0
    • 顯示名稱:指定名稱或使用預設值。
    • 儲存器登錄類型:指定登錄類型或使用預設值。
    • Docker 登錄服務連線:指定連線或使用預設值。
    • 動作:執行 Docker 指令
    • 指令:load -i /usr/user1/appscan-src-cli-10.2.0.tar.gz
  7. 新增 Docker 作業來執行具有下列規格的映像檔:
    • 作業版本:1
    • 顯示名稱:指定名稱或使用預設值。
    • 儲存器登錄類型:指定登錄類型或使用預設值。
    • Docker 登錄服務連線:指定連線或使用預設值。
    • 指令:執行
    • 引數:--rm
    • 影像名稱:appscan/appscan-src-cli:10.2.0
    • 磁區:/usr/user1:/wa
    • 環境變數:
      • AS_INSTALL_MODE=standalone
      • AS_LICENSE_TYPE=CLS
      • AS_LICENSE_SERVER_ID=<the license server ID>
      • AS_LICENSE_SERVER=hclsoftware
    • 儲存器指令:script /wa/cli.script
  8. 使用下列規格新增要清除的 Docker 作業:
    • 作業版本:0
    • 顯示名稱:指定名稱或使用預設值。
    • 儲存器登錄類型:指定登錄類型或使用預設值。
    • Docker 登錄服務連線:指定連線或使用預設值。
    • 動作:執行 Docker 指令
    • 指令:rmi appscan/appscan-src-cli:10.2.0
透過使用典型編輯器的 HCL Harbor 使用儲存器映像檔,以準備 Azure DevOps 管線:
  1. 建立包含環境變數的檔案(例如 env.list),這些環境變數必須在掃描期間可供 CLI 儲存器使用。包含下列必要資訊:
    • AS_INSTALL_MODE=standalone

    • AS_LICENSE_TYPE=CLS

    • AS_LICENSE_SERVER_ID=<the license server ID>

    您可以在這裡找到完整的參數清單。

  2. 在 Azure DevOps 組織內,使用典型編輯器建立新的管線。按一下使用典型編輯器
  3. 選取要掃描專案及儲存 CLI script 所在的存放庫和分支,然後按一下繼續
    1. 選取 Azure Repos Git 作為來源。
    2. 選取團隊專案
    3. 選取存放庫
  4. 選取 Azure 代理程式儲存區,其中有透過 AppScan® 來源 CLI 儲存器配置的 Azure VM。
  5. 新增 Docker 作業來執行具有下列規格的映像檔:
    • 作業版本:2
    • 顯示名稱:指定名稱或使用預設值。
    • 儲存器登錄:指定登錄類型或使用預設值。
    • 動作:執行 Docker 指令
    • 指令:執行
    • 引數:--rm --env-file /usr/user1/env.list -v $(Agent.BuildDirectory)/s:/wa hclcr.io/appscan/appscan-src-cli:10.2.0 script /wa/cli.script
  6. 使用下列規格新增要清除的 Docker 作業:
    • 作業版本:0
    • 顯示名稱:指定名稱或使用預設值。
    • 儲存器登錄類型:指定登錄類型或使用預設值。
    • Docker 登錄服務連線:指定登錄類型或使用預設值。
    • 動作:執行 Docker 指令
    • 指令:rmi appscan/appscan-src-cli:10.2.0

透過使用 YAML 的 HCL Harbor 使用儲存器映像檔,以準備 Azure DevOps 管線

使用下列範例 Script 作為指引,使用來自 HCL Harbor 的 AppScan Source CLI 儲存器來執行靜態分析掃描。

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- main

pool:
  name: Ubuntu-VM-pool
  #vmImage: ubuntu-latest

#steps:
#- script: echo Hello, world!
#  displayName: 'Run a one-line script'

steps:
- task: CmdLine@2
  inputs:
    script: |
- task: Docker@1
  displayName: 'Run an image'
  inputs:
    containerregistrytype: 'Container Registry'
    dockerRegistryEndpoint: 'MyConnection’
    command: 'Run an image'
    arguments: '--rm'
    imageName: 'hclcr.io/appscan/appscan-src-cli:10.2.0 '
    volumes: '$(Agent.WorkFolder)<path to downloaded source files>:/wa'
    envVars: |
     AS_INSTALL_MODE=standalone
     AS_LICENSE_TYPE=CLS
     AS_LICENSE_SERVER_ID=<specify the license server ID>
     AS_LICENSE_SERVER=<specify the license server name>
    containerCommand: 'script /wa/cli.script'
    runInBackground: false
- task: Docker@0
  displayName: Clean
  inputs:
    containerregistrytype: 'Container Registry'
    dockerRegistryConnection: 'MyConnection'
    action: 'Run a Docker command'
    customCommand: ' rmi hclcr.io/appscan/appscan-src-cli:10.2.0'

使用儲存器映像檔啟動靜態分析掃描

如果要使用管線來啟動掃描,請執行下列動作:

  1. 在 Azure 中,確保 Azure 代理程式儲存區中的 Azure VM 已連線。
  2. 從「管線」頁面中,選取要執行的管線。
  3. 選取執行管線來啟動靜態分析掃描。