執行 Maven 專案的靜態分析

為了能夠起始檔案的分析,您必須產生要提交至雲端的 IRX 檔案。HCL AppScan on Cloud Maven 外掛程式是用來讓 Maven 中 jarwarear 專案的掃描自動化。它會為具有「jar」、「war」和「ear」包裝類型的 Maven 專案產生 IRX 檔案。還可以將已產生的 IRX 檔案提交至 ASoC 服務以自動進行分析。如果您要掃描 Maven 專案,請遵循這些指示來建立該檔案。

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

此作業說明如何為使用 HCL AppScan on Cloud Maven 外掛程式的 Maven 專案執行靜態分析:

程序

  1. 在命令提示字元中,發出指令以將目錄切換為含有 Maven 專案的位置(含有 pom.xml 檔案的資料夾)。
  2. 設定 APPSCAN_OPTS 環境變數以在執行掃描前指定廣域選項。
    使用 APPSCAN_OPTS 設定掃描速度、啟用密碼掃描、啟用除錯記載等等。
  3. 發出下列其中一個指令:
    • 若只要產生 IRX 檔案,請發出:
      mvn com.hcl.security:appscan-maven-plugin:prepare
      這個指令會針對建置中的所有 jarwarear 專案產生單一 IRX 檔案。IRX 檔案預設會在根專案的目標目錄中產生。您可以稍後將 IRX 檔案提交至 ASoC
    • 若要產生 IRX 檔案並且將其傳送至 ASoC 服務以進行分析,請發出:
      mvn package com.hcl.security:appscan-maven-plugin:analyze
      這個指令會產生 IRX 檔案,並且將它提交至 ASoC 服務以進行分析。這個作業需要應用程式 ID (appId)、API 金鑰 (appscanKey) 和 API 密碼 (appscanSecret)。
      註: 如果 Maven 專案在相同的反應程式建置中,與另一個專案之間有編譯時期相依關係,則現有的 Maven 錯誤會導致指令失敗。若要解決這個問題,請執行 package 目標與 prepareanalyze 目標。例如:
      mvn package com.hcl.security:appscan-maven-plugin:prepare
      mvn 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 編譯器。當您在產生 warear 檔案的 IRX 檔案,而且想要使用不同的 JSP 編譯器時,請發出具有 -DjspCompiler 選項的指令。例如:
    mvn com.hcl.security:appscan-maven-plugin:prepare -DjspCompiler=<jsp_compiler>

    其中 <jsp_compiler> 是您要使用的 JSP 編譯器的路徑(指定伺服器的根目錄)。

    提示: 依預設,在 IRX 檔案產生的期間,不會掃描第三方程式碼。您可以遵循管理第三方 Java 和 .NET 排除中的指示來修改第三方程式碼排除設定。若要包括第三方程式碼,請發出搭配 -DthirdParty 選項的指令。

    如果您是通常會在掃描中排除第三方程式碼的開發人員,則應使用此設定來包含第三方程式碼。

    提示: 上述指令可透過下列兩種方式縮短:
    • 請將下列內容新增至 pom.xml 檔案的 <plugins> 區段:
      <plugin>
        <groupId>com.hcl.security</groupId>
        <artifactId>appscan-maven-plugin</artifactId>
        <version>1.0.10</version>
      </plugin>
      若使用此方法,您便可以編輯 pom.xml 檔,所有其他使用者也會自動取得變更。不過,您必須先指定版本號碼。因此,有較新的版本可用時,您必須手動編輯及更新 pom.xml 檔。
    • 將我們的 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 會偵測給定專案的原始檔名稱空間,並且將掃描的類別新增至允許的清單,以僅包含存在於相同名稱空間中的類別。將該內容設為空字串 ("") 會完全停用白名單。
    註: 如果您想要自行修改外掛程式,可以在這裡找到來源。

使用 Maven 外掛程式加密 appscanSecret

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

使用 appscan-maven-plugin 加密您的 API 密碼。請參閱此處的要訣和技巧,以了解如何在 Maven 中加密密碼。

程序

  1. 執行下列指令來產生加密的主要密碼:
    mvn -emp myMasterPassword
  2. 將輸出複製到 ~/.m2/settings-security.xml,並放入 <master> 標籤的值中:
    <settingsSecurity>
      <master>{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}</master>
    </settingsSecurity>
    註: 您可以將 settings-security.xml 檔儲存在不同的位置。如果您這麼做,則必須在執行時期使用選項 -Dsettings.security=path/to/security-settings.xml 來指定位置。
  3. 執行下列指令來產生加密的 API 密碼:
    mvn -ep apiSecret
  4. 將指令的輸出複製到 ~/.m2/settings.xml,並放入 <password> 標籤的值中。<username> 標籤應該包含使用者 API 金鑰的值:
    <settings>
      <servers>
        <server>
          <id>appscan</id>
                    <username>MyapiKey</username>
    <password>{uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}</password>
        </server>
      </servers>
      ...
    </settings>
  5. 使用 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