執行 Gradle 專案的靜態分析

為了能夠起始檔案的分析,您必須產生要提交至雲端的 IRX 檔案。HCL AppScan on Cloud Gradle 外掛程式是用於讓 Gradle 中 Java 和 Java Web 專案的掃描自動化。該程式會為 Gradle 專案(已套用 "java" 外掛程式及/或 "war" 外掛程式)產生 IRX 檔案,還可以將已產生的 IRX 檔案提交至 ASoC 服務以自動進行分析。如需套用外掛程式及判斷最新外掛程式版本的相關資訊,請參閱 Gradle 外掛程式

程序

產生 Gradle 專案的 IRX 檔案
  1. 在命令提示中發出指令,將目錄切換至包含您 Gradle 專案的位置。
  2. 設定 APPSCAN_OPTS 環境變數以在執行掃描前指定廣域選項。
    使用 APPSCAN_OPTS 設定掃描速度、啟用密碼掃描、啟用除錯記載等等。
  3. 發出下列其中一個指令:
    • 若只要產生 IRX 檔案,請發出 appscan-prepare

      這個指令會針對建置中的所有 Java 和 War 專案產生 IRX 檔案。IRX 檔案預設會在根專案的建置目錄中產生。您可以稍後將 IRX 檔案提交至 ASoC。

    • 若要產生 IRX 檔案並且將其傳送至 ASoC 服務以進行分析,請發出 appscan-analyze

      這個指令會產生 IRX 檔案,並且將它提交至 ASoC 服務以進行分析。這個作業需要 API 金鑰、密碼和應用程式 ID。

    可配置選項

    下列選項可以使用語法 -Doption=value 在指令行上透過 JVM 參數,或透過建置 Script 中的 appscanSettings 區塊來設定。

    1. Gradle 外掛程式的可配置選項
    選項 預設值 說明
    irxName 根專案的名稱。 已產生 .irx 檔案的名稱。
    irxDir 根專案的建置目錄。 已產生 .irx 檔案的位置。
    appId 空值。appscan-analyze 的必要項目 ASoC 服務中應用程式的 ID。
    appscanKey 空值。appscan-analyze 的必要項目 用於鑑別的使用者 API 金鑰。
    appscanSecret 空值。appscan-analyze 的必要項目 用於鑑別的使用者 API 金鑰密碼。
    namespaces 空值。 覆寫自動名稱空間偵測。設為 "" 以停用名稱空間偵測。
    範例 1:在指令行指定選項:
    gradle appscan-prepare -DirxName=MyApp
    範例 2:在建置 Script 中指定選項:
    appscanSettings {
    	irxName="MyApp"
    	irxDir="/myApplication/sample"
    }
    
    註: appscan 金鑰和 appscan 密碼選項可以在使用者的 gradle.properties 檔案中指定。這樣可避免必須在建置 Script 或指令行中指定鑑別資訊。例如,將下列行新增至 ~/.gradle/gradle.properties(如果檔案不存在則加以建立):
    appscanKey="2358cd02-3fs3-322c-62c9-b5cc63c61f2a"
    appscanSecret="qU939siTXgF7csk3jSig+Vza7ilWLu/Uy/ReWye5E/c="
    
    您可以在這裡建立 API 金鑰/密碼。請參閱產生 API 金鑰,以取得其他資訊。
    註: 若要覆寫預設的名稱空間行為,請使用 -Dnamespaces="<semi-colon delimited list of namespaces to scan>" 指令行選項。依預設,ASoC 會偵測給定專案的原始檔名稱空間,並且將掃描的類別新增至允許的清單,以僅包含存在於相同名稱空間中的類別。將該內容設為空字串 ("") 會完全停用白名單。
    註: 如果您想要自行修改外掛程式,可以在這裡找到來源。

使用 Gradle 外掛程式加密 appscanSecret

執行這項作業的原因和時機

如果要加密 API 密碼,請使用 Gradle 認證外掛程式搭配 appscan-gradle-plugin
註: 最新版本認證外掛程式需要 Gradle 5.0 或更新版本。如需外掛程式的相關資訊,請參閱 gradle-credentials-plugin

程序

  1. 在您的專案中套用認證外掛程式與 appscan-gradle-plugin
    plugins {
    	id 'nu.studer.credentials' version '2.1'
    	id ' com.hcl.security.appscan' version '1.0.2'
    }
  2. 執行下列指令來加密 API 密碼:
    gradle addCredentials --key appscanSecret --value Yq9M+iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1
    依預設,將會儲存加密值並從 ~/.gradle/ gradle.encrypted.properites 擷取。使用 credentialsLocation 內容來指定不同的位置。
    gradle addCredentials --key appscanSecret --value Yq9M+iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1 -PcredentialsLocation=/some/directory
  3. 使用建置 Script 中的 appscanSettings 區塊來設定 appscanKey 值和加密的 appscanSecret 值:
    appscanSettings {
    	appscanKey=22iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1
    	appscanSecret=credentials.appscanSecret
    appId=95e69f47-9547-4378-ab93-f5d48ada52cc1
    }
    您也可以在這裡設定 ASoC appId
  4. 執行 appscan-analyze
    gradle appscan-analyze
    如果您未在建置 Script 中指定 appId,請在執行時期於指令行上設定它:
    gradle appscan-analyze -DappId=95e69f47-9547-4378-ab93-f5d48ada52cc1
    如果您在加密 appscanSecret 值時使用 credentialsLocation 內容,請也在執行時期指定該內容:
    gradle appscan-analyze -PcredentialsLocation=/some/directory