執行 Gradle 專案的靜態分析
為了能夠起始檔案的分析,您必須產生要提交至雲端的 IRX 檔案。HCL AppScan on Cloud Gradle 外掛程式是用於讓 Gradle 中 Java 和 Java Web 專案的掃描自動化。該程式會為 Gradle 專案(已套用 "java" 外掛程式及/或 "war" 外掛程式)產生 IRX 檔案,還可以將已產生的 IRX 檔案提交至 ASoC 服務以自動進行分析。如需套用外掛程式及判斷最新外掛程式版本的相關資訊,請參閱 Gradle 外掛程式。
程序
產生 Gradle 專案的 IRX 檔案
- 在命令提示中發出指令,將目錄切換至包含您 Gradle 專案的位置。
-
設定
APPSCAN_OPTS
環境變數以在執行掃描前指定廣域選項。使用APPSCAN_OPTS
設定掃描速度、啟用密碼掃描、啟用除錯記載等等。 -
發出下列其中一個指令:
- 若只要產生 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"
您可以在這裡建立 API 金鑰/密碼。請參閱產生 API 金鑰,以取得其他資訊。appscanSecret="qU939siTXgF7csk3jSig+Vza7ilWLu/Uy/ReWye5E/c="
註: 若要覆寫預設的名稱空間行為,請使用-Dnamespaces="<semi-colon delimited list of namespaces to scan>"
指令行選項。依預設,ASoC 會偵測給定專案的原始檔名稱空間,並且將掃描的類別新增至允許的清單,以僅包含存在於相同名稱空間中的類別。將該內容設為空字串 (""
) 會完全停用白名單。註: 如果您想要自行修改外掛程式,可以在這裡找到來源。 - 若只要產生 IRX 檔案,請發出
使用 Gradle 外掛程式加密 appscanSecret
執行這項作業的原因和時機
appscan-gradle-plugin
。註: 最新版本認證外掛程式需要 Gradle 5.0 或更新版本。如需外掛程式的相關資訊,請參閱
gradle-credentials-plugin
。程序
-
在您的專案中套用認證外掛程式與
appscan-gradle-plugin
:plugins { id 'nu.studer.credentials' version '2.1' id ' com.hcl.security.appscan' version '1.0.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
-
使用建置 Script 中的
appscanSettings
區塊來設定appscanKey
值和加密的appscanSecret
值:
您也可以在這裡設定 ASoCappscanSettings { appscanKey=22iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1 appscanSecret=credentials.appscanSecret appId=95e69f47-9547-4378-ab93-f5d48ada52cc1 }
appId
。 -
執行
appscan-analyze
:gradle appscan-analyze
如果您未在建置 Script 中指定appId
,請在執行時期於指令行上設定它:
如果您在加密gradle appscan-analyze -DappId=95e69f47-9547-4378-ab93-f5d48ada52cc1
appscanSecret
值時使用credentialsLocation
內容,請也在執行時期指定該內容:gradle appscan-analyze -PcredentialsLocation=/some/directory