執行 Maven 專案的靜態分析
為了能夠起始檔案的分析,您必須產生要提交至雲端的 IRX 檔案。HCL AppScan on Cloud Maven 外掛程式是用來讓 Maven 中 jar、war 和 ear 專案的掃描自動化。它會為具有「jar」、「war」和「ear」包裝類型的 Maven 專案產生 IRX 檔案。還可以將已產生的 IRX 檔案提交至 ASoC 服務以自動進行分析。如果您要掃描 Maven 專案,請遵循這些指示來建立該檔案。
執行這項作業的原因和時機
程序
- 在命令提示字元中,發出指令以將目錄切換為含有 Maven 專案的位置(含有 pom.xml 檔案的資料夾)。
-
設定
APPSCAN_OPTS環境變數以在執行掃描前指定廣域選項。使用APPSCAN_OPTS設定掃描速度、啟用機密掃描、啟用除錯記載等等。 -
發出下列其中一個指令:
- 若只要產生 IRX 檔案,請發出:
這個指令會針對建置中的所有mvn com.hcl.security:appscan-maven-plugin:preparejar、war和ear專案產生單一 IRX 檔案。IRX 檔案預設會在根專案的目標目錄中產生。您可以稍後將 IRX 檔案提交至 ASoC。 - 若要產生 IRX 檔案並且將其傳送至 ASoC 服務以進行分析,請發出:
這個指令會產生 IRX 檔案,並且將它提交至 ASoC 服務以進行分析。這個作業需要應用程式 ID (mvn package com.hcl.security:appscan-maven-plugin:analyzeappId)、API 金鑰 (appscanKey) 和 API 密碼 (appscanSecret)。註: 如果 Maven 專案在相同的反應程式建置中,與另一個專案之間有編譯時期相依關係,則現有的 Maven 錯誤會導致指令失敗。若要解決這個問題,請執行package目標與prepare或analyze目標。例如:
或mvn package com.hcl.security:appscan-maven-plugin:preparemvn package com.hcl.security:appscan-maven-plugin:analyze
表 1. Maven 外掛程式的可配置選項 選項 預設值 說明 output<root project>/target/<root project name>.irx已產生 IRX 檔案的名稱及/或位置。如果選取的路徑不存在,則會套用預設路徑 (<root project>/target/<root project name>.irx) appId空值。
analyze的必要項目。雲端服務中應用程式的 ID。 appscanKey空值。
analyze的必要項目。用於識別的使用者 API 金鑰 ID。 appscanSecret空值。
analyze的必要項目。用於鑑別的使用者 API 金鑰密碼。 namespaces空值。 覆寫自動名稱空間偵測。設為 ""以停用名稱空間偵測。提示: 指令行公用程式 會包括 Tomcat JSP 編譯器。預設會在 IRX 檔案產生期間使用此 JSP 編譯器。當您在產生war或ear檔案的 IRX 檔案,而且想要使用不同的 JSP 編譯器時,請發出具有-DjspCompiler選項的指令。例如:mvn com.hcl.security:appscan-maven-plugin:prepare -DjspCompiler=<jsp_compiler>其中
<jsp_compiler>是您要使用的 JSP 編譯器的路徑(指定伺服器的根目錄)。提示: 依預設,在 IRX 檔案產生的期間,不會掃描第三方程式碼。您可以遵循管理第三方 Java 和 .NET 排除中的指示來修改第三方程式碼排除設定。若要包括第三方程式碼,請發出搭配-DthirdParty選項的指令。如果您是通常會在掃描中排除第三方程式碼的開發人員,則應使用此設定來包含第三方程式碼。
提示: 上述指令可透過下列兩種方式縮短:- 請將下列內容新增至 pom.xml 檔案的
<plugins>區段:
若使用此方法,您便可以編輯 pom.xml 檔,所有其他使用者也會自動取得變更。不過,您必須先指定版本號碼。因此,有較新的版本可用時,您必須手動編輯及更新 pom.xml 檔。<plugin> <groupId>com.hcl.security</groupId> <artifactId>appscan-maven-plugin</artifactId> <version>1.0.10</version> </plugin> - 將我們的
groupId(com.hcl.security) 新增至 Maven settings.xml 的外掛程式群組清單。例如,將下列內容新增至 ~/.m2/settings.xml 或 ${maven.home}/conf/settings.xml:
在進行此編輯之後,您可以使用<pluginGroups> <pluginGroup>com.hcl.security</pluginGroup> </pluginGroups>appscan字首來執行prepare目標。例如:mvn appscan:prepare
如需更多資訊,請參閱 配置 Maven 以搜尋外掛程式。
註: 若要覆寫預設的名稱空間行為,請使用-Dnamespaces="<semi-colon delimited list of namespaces to scan>"指令行選項。依預設,ASoC 會偵測給定專案的原始檔名稱空間,並且將掃描的類別新增至允許的清單,以僅包含存在於相同名稱空間中的類別。將該內容設為空字串 ("") 會完全停用白名單。註: 如果您想要自行修改外掛程式,可以在這裡找到來源。 - 若只要產生 IRX 檔案,請發出:
使用 Maven 外掛程式加密 appscanSecret
執行這項作業的原因和時機
appscan-maven-plugin 加密您的 API 密碼。請參閱此處的要訣和技巧,以了解如何在 Maven 中加密密碼。程序
-
執行下列指令來產生加密的主要密碼:
mvn -emp myMasterPassword -
將輸出複製到
~/.m2/settings-security.xml,並放入<master>標籤的值中:<settingsSecurity> <master>{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}</master> </settingsSecurity>註: 您可以將settings-security.xml檔儲存在不同的位置。如果您這麼做,則必須在執行時期使用選項-Dsettings.security=path/to/security-settings.xml來指定位置。 -
執行下列指令來產生加密的 API 密碼:
mvn -ep apiSecret -
將指令的輸出複製到
~/.m2/settings.xml,並放入<password>標籤的值中。<username>標籤應該包含使用者 API 金鑰的值:<settings> <servers> <server> <id>appscan</id> <username>MyapiKey</username> <password>{uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}</password> </server> </servers> ... </settings> -
使用 Maven 外掛程式來執行
analyze目標:mvn com.hcl.security:appscan-maven-plugin:analyze -DappId=X49Qab75j9LSTwiM3mg2LCrO如果您將settings-security.xml檔放在非預設位置,則必須在執行時期指定該位置:mvn com.hcl.security:appscan-maven-plugin:analyze -DappId=X49Qab75j9LSTwiM3mg2LCrO -Dsettings.security=path/to/security-settings.xml