設定 AppScan Presence 以直接掃描 GitHub 儲存庫

您可以使用 AppScan Presence,對 GitHub Enterprise 儲存庫執行靜態分析。

AppScan Presence 包含選擇性支援,可使用 GitHub 應用程式,從 GitHub Enterprise Server 對 GitHub 儲存庫執行靜態分析。GitHub 伺服器不必公開存取,但 AppScan 使用者必須擁有 GitHub 伺服器的網路存取權,以及存取 GitHub 中儲存庫的許可權。

AppScan Presence 已啟用 GitHub 掃描的執行個體,可使用在伺服器上定義的一個 GitHub 應用程式,與一個 GitHub Enterprise Server 建立關聯。

若要使用 AppScan Presence 來連線與掃描 GitHub Enterprise 儲存庫:
  1. 在具有 GitHub Enterprise Server 存取權的私有網路上,AppScan Presence 建立並安裝至資料夾位置。
    註: 連線到單一 GitHub 伺服器的單一 Presence 可讓組織中的所有使用者掃描該伺服器上擁有存取權的儲存庫。
  2. 在 GitHub Enterprise Server 上建立 GitHub 應用程式
  3. AppScan Presence啟動和配置 GitHub 特定參數
  4. 建立掃描

建立 GitHub 應用程式

開始之前,請先檢閱 GitHub 應用程式的相關資訊。

若要建立 GitHub 應用程式以與 AppScan Presence 搭配使用:

  1. 登入 GitHub。
  2. 選取「設定」 > 「開發人員設定」 > 「GitHub 應用程式」,按一下「新 GitHub 應用程式」。
  3. 指定下列應用程式參數:
    參數
    GitHub 應用程式名稱 您的應用程式名稱。
    說明 應用程式的說明。例如「開發伺服器的 AppScan 360° 連接器」。
    首頁 URL HCL AppScan 360° URL。例如 https://<360domain>
    回呼 URL 您的 AppScan Presence 內嵌式 Web 應用程式 URL 加上 /signin-github。例如 https://my-presence-host-fqdn/signin-github
    Webhook 取消勾選「作用中
    儲存庫權限 內容」和「中繼資料」設定為「唯讀」。
    帳戶權限 電子郵件位址」設定為「唯讀」。
    此 GitHub 應用程式可以安裝在哪裡? 任何帳戶」。
  4. 按一下「建立 GitHub 應用程式」。
  5. 檢視「GitHub 應用程式」設定,並記下下列值以配置 AppScan Presence
    • AppID
    • AppUrl
    • ClientId
    • ClientSecret

配置並啟動 AppScan Presence

  1. 建立 GitHub 應用程式的私密金鑰:
    1. 在 GitHub Enterprise 的 GitHub 應用程式視窗下,按一下「產生私密金鑰」。
    2. 重新命名已下載的檔案 GitHubAppKey.pem,並將其複製到 Presence 安裝資料夾。
  2. 在 Presence 安裝目錄中,找到 git_connect_settings.json 檔案,然後將其開啟以進行編輯。
  3. git_connect_settings.jsonGitConnectOptions 區段中,編輯如下參數:
    參數 說明 範例
    GitServerName GitHub 伺服器的名稱。 github01
    GitConnectUrl AppScan Presence 所顯示之 Web 應用程式的 URL。此值與您建立 GitHub 應用程式時的 CallbackURL 相同。 https://my-presence-host-fqdn:443
    GithubAppId 您為此連線建立之 GitHub 應用程式的 AppID。 55
    GithubAppUrl GitHub 應用程式的安裝 URL。 https://github01.example.com/github-apps/asoc
    ClientId GitHub 應用程式的用戶端 ID。 <oauth client id>
    ClientSecret GitHub 應用程式的用戶端機密。 <oauth client secret>
    GitPlatformDomain GitHub Enterprise Server 的 URL。 https://github01.example.com
    Proxy 如果需要 Proxy 才能連線至 GitHub 伺服器,請取消此行的註解並提供 Proxy 詳細資料。 127.0.0.1:8888
    Active AppScan Presence 中啟用或停用 GitHub 連線功能。預設值為 false true
  4. 我們強烈建議您使用 HTTPS;如果您選擇使用 HTTP,網站會視為不安全,因此,您必須調整瀏覽器設定,以允許不安全的內容。

    為確保您使用 HTTPS,請在 git_connect_settings.jsonKestrel 區塊,如下編輯參數:

    參數 說明 範例
    Http 要由 AppScan Presence 使用的通訊協定。 Https
    Url 要由 AppScan Presence 使用的連接埠。 http://*:8080
    註: AppScan Presence 使用 Kestrel 來託管其 Web 應用程式。Kestrel 是內嵌式 Web 伺服器,可以使用配置檔中的 Kestrel 區段來配置。如需有關此伺服器配置的詳細資訊,請參閱為 ASP.NET Core Kestrel Web 伺服器配置端點
  5. 將 GitHub 應用程式安裝在擁有該應用程式的帳戶上:
    1. 在瀏覽器中開啟應用程式 (GithubAppUrl) 的公開連結。
    2. 安裝應用程式。
    註: 您不需要將此安裝的存取權授與私有儲存庫,但應用程式應安裝在擁有該應用程式的帳戶上。
  6. 驗證 Presence 系統和 GitHub 企業伺服器上的時間設定是否同步。

設定配置後,可啟動(或重新啟動)Presence 並開始掃描。日誌會寫入至主控台,並記錄位於日誌資料夾下的檔案。

AppScan Presence GitHub 掃描流程

以下說明使用 AppScan Presence 從 GitHub Enterprise Server 掃描儲存庫的流程:

  1. 使用者登入 AppScan 360°。(1.2)
  2. AppScan 360° 中,傳回已連線伺服器之已配置的啟用 AppScan Presences 清單。然後,使用者選擇要用於掃描的 GitHub 伺服器。 AppScan 360° 傳回存取 AppScan Presence 伺服器的 URL 及 GitHub 伺服器的 URL
  3. 當使用者按一下「連線至 GitHub」時,AppScan 360° 會開啟指向 AppScan Presence (3) 的新瀏覽器標籤,其會啟動 oAuth 授權碼流程。然後,系統會將使用者重新導向至 GitHub Enterprise Server (4),登入,同意 AppScan Presence 存取 GitHub 帳戶,然後再使用授權碼重新導向回 AppScan Presence
  4. AppScan Presence 從 GitHub Enterprise Server (5) 取得使用者存取記號,然後將其與使用 window.postMessage 將記號傳送至 AppScan 360° 的指令碼一起傳回至使用者 (3)。
  5. AppScan 360° 使用 GitHub 存取記號 (4) 取得使用者以及 AppScan Presence 使用之 GitHub 應用程式可存取的儲存庫清單。然後,使用者可以選擇要掃描的儲存庫。
  6. 在為所選儲存庫建立掃描之前,AppScan 360° 會確認使用者是否可存取儲存庫。AppScan Presence API (3) 功能 RepoSignature 會為儲存庫詳細資料(儲存庫擁有者和儲存庫名稱)建立簽章。驗證存取權後,儲存庫詳細資料會以 AppScan Presence 的專屬私密金鑰簽署。簽章由 API 呼叫傳回至 AppScan 360°
  7. AppScan 360° 透過佈建 AppScan Presence ID (Git Connect)、儲存庫詳細資料和簽章,使用 UsersAPI (2) 建立掃描。UserAPI 會使用與所提供 AppScan Presence 執行個體相關聯的公開金鑰來驗證簽章。如果驗證成功,則會為儲存庫建立掃描。
  8. 針對作業輪詢 AppScan Presence WebAPI (6) 的 AppScan Presence 服務會取得提取掃描儲存庫的新作業。Presence 會使用關聯的 GitHub 應用程式私密金鑰連線至 GitHub Enterprise Server (7),提取儲存庫作為 ZIP 檔案,然後將其串流至 Presence WebAPI (UploadRepo)
  9. 儲存庫 ZIP 檔案儲存在 AppScan 360° 中,且可掃描。掃描完成後,會在 AppScan 360° 中檢視及分析結果。結果包含 GitHub Enterprise Server 的連結,參照程式碼中的相關行以分類和補救。 AppScan 360° 可開啟具有相關程式碼的新標籤。