設定 GitHub 進階安全性以支援 Azure DevOps

GitHub Advanced Security for Azure DevOps 將 GitHub Advanced Security 的一系列安全功能加入 Azure Repos,並包含以下功能:

  • 秘密掃描推播保護:檢查程式碼推送是否包含暴露秘密的提交,例如憑證
  • 秘密掃描存放庫掃描:掃描您的存放庫,並尋找意外認可的公開秘密
  • 相依性掃描 – 搜尋開放原始碼相依關係(直接與傳遞)中的已知漏洞
  • 程式代碼掃描 – 使用 CodeQL 靜態分析引擎來識別程式代碼層級的應用程式弱點,例如 SQL 插入式和驗證略過

您可以彈性地為企業提供進階安全性的保護,以啟用存放庫的正確保護層級。 GitHub Advanced Security for Azure DevOps 可作為 GitHub Secret Protection for Azure DevOps 和 GitHub Code Security for Azure DevOps 提供。

秘密保護包含下列功能:

  • 推送保護措施,以防止機密洩漏在發生前出現
  • 使用通知進行秘密掃描警示,以在發生問題之前攔截現有的曝光
  • 安全性概觀,可讓您深入瞭解貴組織的風險和安全性保護層級

程式代碼安全性包含下列功能:

  • 相依性警示,以尋找開放原始碼相依性中的弱點
  • CodeQL 掃描,以直接在您的程式代碼中偵測弱點
  • 第三方工具的安全性結果
  • 安全性概觀,可讓您深入瞭解貴組織的風險和安全性保護層級

GitHub Advanced Security for Azure DevOps 僅適用於 Azure DevOps 服務,且專門用於 Code Git 倉庫。

GitHub Advanced Security for Azure DevOps 可以同 Azure Repos 合作。 若要在GitHub儲存庫中使用GitHub Advanced Security,請參見 GitHub Advanced Security

必要條件

類別 需求
許可 - 若要檢視存放庫的所有警示摘要:存放庫的參與者 許可權。
- 在進階安全(Advanced Security)中關閉警報:Project administrator權限。
- 在進階安全中管理權限:專案集合管理員 群組或 進階安全:將 '管理設定' 權限設為 '允許'

如需進階安全性許可權的詳細資訊,請參閱 管理進階安全性許可權

自行架設代理程式的額外前提條件

如果您的組織使用自我裝載的代理程式,請將下列 URL 新增至您的 Allowlist,讓相依性掃描工作可以擷取弱點諮詢數據。 如需詳細資訊,請參閱 允許的IP位址和網域URL

網域 URL 描述
https://governance.dev.azure.com 針對使用 dev.azure.com 網域來存取其DevOps實例的組織
https://dev.azure.com 針對使用 dev.azure.com 網域來存取其DevOps實例的組織
https://advsec.dev.azure.com 針對使用 dev.azure.com 網域來存取其DevOps實例的組織
https://{organization_name}.governance.visualstudio.com 針對使用 {organization_name}.visualstudio.com 網域來存取其 DevOps 實例的組織
https://{organization_name}.visualstudio.com  針對使用 {organization_name}.visualstudio.com 網域來存取其 DevOps 實例的組織
https://{organization_name}.advsec.visualstudio.com 針對使用 {organization_name}.visualstudio.com 網域來存取其 DevOps 實例的組織
  • 執行相容版本的 .NET 執行環境。 截至 2026 年 4 月,目前版本仍為 .NET 8.x。 如果代理程式中沒有相容版本,依賴掃描建構任務會下載.NET

  • 確保 CodeQL 套件組合已安裝至代理程式的工具快取中。 您可以在 YAML 管線中使用 enableAutomaticCodeQLInstall: true 變數搭配 AdvancedSecurity-Codeql-Init@1 管線工作,或在傳統管線中選取 Enable automatic CodeQL detection and installation 複選框。 另外,關於手動安裝的說明,請參見 適用於 Azure DevOps 的 GitHub Advanced Security 的程式碼掃描指南

啟用 GitHub 進階安全

您可以在組織、專案或存放庫層級啟用進階安全性。 若要存取每個掃描工具和結果,您必須先啟用進階安全性。 啟用進階安全性後,任何未來包含機密內容的推送到啟用了此政策的存放庫都會被阻止,而存放庫的機密掃描會在背景中進行。

存放庫層級導入

  1. 前往你的專案設定查看你的Azure DevOps專案。
  2. 選擇 Repos>Repositories
  3. 選取您要啟用進階安全性的存放庫。
  4. 選取 [啟用] 和 [開始計費] 以啟用 [進階安全性]。 已啟用進階安全性的任何存放庫檢視中現在會出現盾牌圖示。

啟用GitHub進階安全截圖。

專案級的啟動

  1. 前往你的專案設定查看你的Azure DevOps專案。
  2. 選擇Repos
  3. 選取 [設定] 索引標籤。
  4. 選取 啟用全部,並查看您的專案中活躍提交者的估計數量。 此動作僅啟用產品於現有的儲存庫。
  5. 選取 [ 開始計費 ] 以啟用專案中每個現有存放庫的進階安全性。
  6. 可選擇 「自動啟用新儲存庫的進階安全 ,這樣未來新建立的儲存庫在建立時也會啟用進階安全。 此設定與 「啟用所有 」動作是分開的,必須獨立選擇。

進階安全性專案層級啟用的螢幕快照。

組織層面入職培訓

  1. 請前往你的組織設定以設定你的 Azure DevOps 組織。
  2. 選擇存放庫
  3. 選取 [全部啟用],並查看出現的您組織活躍提交者數目的估計值。 此動作僅啟用產品於現有的儲存庫。
  4. 選取 [ 開始計費 ],為組織中的每個專案中的每個現有存放庫啟用進階安全性。
  5. 可選擇 「自動啟用進階安全性」以供新專案 使用,讓未來新建立的專案在建立時即啟用進階安全。 此設定與 「啟用所有 」動作是分開的,必須獨立選擇。

進階安全性組織層級啟用的螢幕快照。

您可以在組織、專案或存放庫層級啟用秘密保護或程式代碼安全性。

存放庫層級導入

  1. 前往你的專案設定查看你的Azure DevOps專案。
  2. 選擇 Repos>Repositories
  3. 選取您要啟用進階安全性的存放庫。
  4. 切換 秘密保護程式代碼安全性
  5. 選取 [開始計費]。 任何已啟用產品之存放庫的存放庫檢視中現在會出現盾牌圖示。
  6. 若要選擇性地啟用 相依性掃描預設設定,請選取 [ 選項 ] 並啟用 [相依性掃描預設設定] 複選框。

啟用GitHub進階安全截圖。

專案級的啟動

  1. 前往你的專案設定查看你的Azure DevOps專案。
  2. 選擇Repos
  3. 選取 [設定] 索引標籤。
  4. 選取 全部啟用,並查看您專案中每個產品的活躍提交者數量估計值。 此動作僅能啟用現有儲存庫的選定產品。
  5. 切換您想要的產品: 秘密保護代碼安全 及所有相關子功能。
  6. 選取 [開始計費 ] 以啟用專案中每個現有存放庫的秘密保護和/或程式碼安全性。
  7. 可選擇性地切換「 自動啟用新儲存庫的進階安全 」,讓未來新建立的儲存庫在建立時啟用 秘密保護程式碼安全 。 此設定與 「啟用所有 」動作是分開的,必須獨立選擇。

進階安全性專案層級啟用的螢幕快照。

組織層面入職培訓

  1. 請前往你的組織設定以設定你的 Azure DevOps 組織。
  2. 選擇存放庫
  3. 選取 全部啟用,然後查看您組織中每個產品所活躍貢獻者數量的估計值。 此動作僅能啟用現有儲存庫的選定產品。
  4. 切換您想要的產品: 秘密保護代碼安全 及所有相關子功能。
  5. 選取 [ 開始計費 ],為組織中的每個專案中的每個現有存放庫啟用進階安全性。
  6. 可選擇性地切換 「自動啟用新專案的進階安全 ,讓未來新建立的專案在建立時啟用 秘密保護程式碼安全 。 此設定與 「啟用所有 」動作是分開的,必須獨立選擇。

進階安全性組織層級啟用的螢幕快照。

設定秘密掃描

當您開啟進階安全性時,將自動啟用秘密檢測保護和資源庫掃描。 您可以從存放庫設定頁面啟用或停用秘密推送保護。

啟用推播保護的螢幕快照。

啟用所選存放庫的進階安全性時,會自動啟動秘密掃描存放庫掃描。

當您開啟秘密保護時,會自動啟用秘密掃描推送保護和儲存庫掃描。 您可以從存放庫設定頁面啟用或停用秘密推送保護。

啟用推播保護的螢幕快照。

秘密掃描儲存庫掃描會在啟用所選儲存庫的秘密保護後自動啟動。

設定相依性掃描

若要存取相依性掃描功能,您需要為存放庫啟用 程式碼安全性 產品。

相依關係掃描是一種基於管道的掃描工具。 結果會按存放庫彙總。 若要掃描預設分支,您可以從存放庫設定頁面利用 [掃描易受攻擊的相依性] 設定。 此功能會自動將依賴掃描任務納入任何針對預設分支的管線,或任何針對預設分支的拉取請求建置中。

如需更進階的設定,或如果您想要掃描所有分支,建議您將相依性掃描工作新增至您想要掃描的所有管線。 更多細節請參見 GitHub Advanced Security for Azure DevOps 的相依性掃描

設定程式碼掃描

若要存取程式代碼掃描功能,您需要為存放庫啟用 程式碼安全性 產品。

程式碼掃描是一種以管線為基礎的掃描工具,結果會依儲存庫彙整。 你可以透過直接將 CodeQL 任務加入 Azure Pipelines 來設定程式碼掃描。

要設定程式碼掃描,請依序將以下任務加入至您的工作流程中:

  1. AdvancedSecurity-Codeql-Init@1 — 初始化 CodeQL
  2. 你的自訂編譯步驟(針對編譯語言)
  3. AdvancedSecurity-Codeql-Analyze@1 — 執行 CodeQL 分析

在初始化 CodeQL 任務中指定你要分析的語言。 支援的語言包括: csharp, cpp, go, java, javascript, python, ruby, swift

提示

我們建議將程式碼掃描任務加入主生產管線的獨立克隆管線,或建立新的管線。 欲了解更多設定選項,請參閱 設定程式碼掃描

設定提取要求批注

無論是依賴性掃描還是程式碼掃描,當建置驗證政策中包含依賴性掃描和/或程式碼掃描工作時,註釋將自動為拉取請求進行設定。 如需設定組建驗證原則的詳細資訊,請參閱 建置驗證

提取請求批註還需要在您的預設分支和目標分支上進行進階安全性掃描,然後才能掃描您的來源(提取請求)分支。 如需解決提取要求分支警示的詳細資訊,請參閱 管理提取要求的 相依性掃描警示和 管理提取要求的程式代碼掃描警示。

若要停用進階安全性,下次重新啟用存放庫的 [進階安全性] 時,會在 [進階安全性] 索引標籤中保留任何警示和警示狀態。