共用方式為


將 GitHub Advanced Security 與 Microsoft Defender for Cloud 整合進行部署

本指南將引導你完成所有設定步驟,幫助你透過整合 GitHub Advanced Security (GHAS) 與 Microsoft Defender for Cloud(MDC)來最大化 Microsoft 雲端原生應用安全效能。

遵循本指南,你:

  • 設置您的 GitHub 倉庫以納入 Microsoft Defender for Cloud (MDC)的監控範圍
  • 建立運行時風險因子
  • 在 MDC 中測試真實使用案例
  • 連結程式碼至雲端資源
  • 在 GitHub 上啟動安全活動,利用執行時情境優先處理 GHAS 安全警示
  • 從 MDC 建立 GitHub 問題開始補救
  • 縮短工程與資安團隊之間的溝通連結

先決條件

層面 詳細資訊
環境要求 - 在 Microsoft Defender for Cloud (MDC)中已建立連接器的 GitHub 帳號
- GitHub 進階安全(GHAS)授權
- 在訂閱中啟用 Defender CSPM
- GitHub Security Copilot(自動修復可選)
角色與權限 - 安全管理員權限
- Azure 訂閱上的 Security Reader(可在 MDC 中查看發現)
- GitHub 組織擁有者
雲端環境 - 僅在商業雲端提供(不適用於美國政府、中國政府或其他主權雲端)

準備您的環境

步驟 1:建立 GitHub 倉庫並執行工作流程

要測試整合,請使用你自己的倉庫或已經包含所有內容的範例 GitHub 倉庫,建立一個脆弱的容器映像檔。

備註

確保你用來整合的倉庫是私有的。

如果你想使用範例倉庫,請將以下倉庫複製到你的 GitHub 組織中。 這個儲存庫已啟用了 GHAS,並且已加入啟用 DCSPM 的 Azure 租戶:build25-woodgrove/mdc-customer-playbook。 此儲存庫是供客戶測試 Microsoft Defender 雲端與 GHAS 整合。

在資料庫中,請依照以下步驟操作:

  1. 移至 [設定]
  2. 在左側面板,選擇秘密 與變數>動作
  3. 在儲存庫或組織層級加入以下秘密:
Variable Description
ACR_ENDPOINT Azure 容器登錄檔的登入伺服器
ACR_PASSWORD Azure 容器登錄檔的密碼
ACR_USERNAME Azure 容器登錄檔的用戶名稱

GitHub 介面截圖,選取「秘密與變數」選單,並顯示「新儲存庫秘密」按鈕。

備註

名字可以自由選擇,且不必遵循特定模式。

你可以依照以下步驟在 Azure 入口網站找到這些資訊:

  1. 選擇你想部署的 ACR

  2. 設定中選擇存取鍵

    Azure 入口網站截圖,顯示容器登錄檔的存取金鑰頁面,並顯示登入伺服器、使用者名稱和密碼欄位。

  3. 在你的資料庫中,選擇 「動作」

  4. 請選擇 建置並推送到 ACR 工作流程,然後執行該工作流程。

    GitHub 倉庫行動區塊截圖,顯示工作流程歷史及手動觸發工作流程的選項。

  5. 請確認映像檔已部署到你的 Azure 容器登錄檔。

  6. 以範例庫為例:映像應該存放在名為 mdc-mock-0001 的登錄檔中,標籤為 mdc-ghas-integration

  7. 在叢集上部署與執行容器相同的映像檔。 完成此步驟的一種方法是連接叢集並使用指令 kubectl run 。 這裡有個AKS的例子:

    1. 設定叢集訂閱:

      az account set --subscription $subscriptionID
      
    2. 為叢集設定憑證:

      az aks get-credentials --resource-group $resourceGroupName --name $kubernetesClusterName --overwrite-existing
      
    3. 部署映像檔:

      kubectl run $containerName --image=$registryName.azurecr.io/mdc-mock-0001:mdc-ghas-integration
      

步驟二:建立第一個風險因子 - 業務關鍵規則

Defender for Cloud 偵測到的整合相關風險因素之一是業務關鍵性。 組織可以制定規則,將不同資源標示為業務關鍵。

  1. 在 Microsoft Defender for Cloud 入口網站(Azure 入口網站)中,前往 環境設定,選擇 資源關鍵性

  2. 在右側窗格,選擇連結以開啟 Microsoft Defender。

    Microsoft Defender for Cloud 介面的截圖,顯示資源關鍵性圖塊,右側窗格有開啟 Microsoft Defender 入口連結。

  3. 選擇 建立新分類

    Microsoft Defender XDR 設定頁面截圖,紅色標示「建立新分類」連結。

  4. 輸入名稱和描述。

  5. 在查詢建構器中選擇 Cloud 資源

  6. 寫一個查詢,將 資源名稱 設為你部署到叢集驗證的容器名稱,然後選擇 「下一步」。

    Microsoft Defender 查詢建構器的螢幕擷取畫面,於 [雲端資源] 下套用資源名稱等於「mdc-ghas-container」的篩選條件。

  7. 預覽資產 頁面,如果 Microsoft Defender 已經偵測到你的資源,容器名稱會顯示,資產類型為 K8s-container 或 K8s-pod。 即使預覽資產頁面還沒顯示,繼續下一步驟。 Microsoft Defender 會在偵測到容器後套用關鍵性標籤。 此程序最多可能需要 24 小時。

  8. 選擇關鍵等級,然後檢視並提交你的分類規則。

步驟三:確認你的環境已經準備好

備註

在前述步驟應用後,可能需要長達24小時才能看到以下結果。

  1. 測試一下 GitHub 的無代理掃描 是否能偵測到該倉庫。

  2. 到雲端安全檔案總管執行查詢。 Cloud Security Explorer 查詢建構器的截圖,篩選條件設為 GitHub 倉庫和容器圖片,顯示搜尋結果。

  3. 驗證 MDC(在 ACR 中)是否掃描了容器映像,並利用其建立容器。 在查詢中,請填寫你具體部署的條件。 雲端安全性總管的螢幕擷取畫面,顯示包含 GitHub 存放庫及容器映像篩選條件的查詢,以及其掃描結果。

  4. 驗證容器是否在運行,且 MDC 已掃描 AKS 叢集。 Cloud Security Explorer 查詢建構器的截圖,包含 GitHub 倉庫和容器圖片的篩選器,顯示漏洞與容器使用情況的結果。

  5. 確認 MDC 端的風險因子配置正確。 在 MDC 庫存頁面搜尋你的容器名稱,應該會看到它被標記為關鍵。

步驟 4:建立 GitHub 活動

由於工作流程部署的映像會建立一個包含風險因子(業務關鍵)的運行容器,開發者可以在 GitHub 中看到風險因子。

備註

當你將資源歸類為關鍵後,MDC 將資料傳送到 GitHub 可能需要長達 12 小時。 在這裡深入瞭解。

  1. 在 GitHub 裡,回到你用來做設定測試的 GitHub 組織。

  2. 選擇 安全>活動>從程式碼掃描過濾器建立活動

    GitHub 介面截圖,顯示「安全 > 活動」分頁,並有從程式碼或秘密掃描過濾器建立活動的選項。

  3. 建立以下活動。 此活動顯示中等嚴重度的開啟警示,且警示所涉及的映像從存放庫部署並與關鍵資源繫結。 你的測試儲存庫應該會被此活動偵測到。

    GitHub Campaigns 介面截圖,顯示開啟警報的篩選條件,嚴重度設為關鍵與中等,執行時風險為關鍵資源。

  4. 選擇 儲存 ,然後以 活動形式發佈

  5. 輸入所需資訊,然後發布活動。

步驟五:評估程式碼轉雲端建議

利用 C2C 建議中的 SDLC 經驗和安全警示強化資訊,了解安全問題的狀態,並透過 Dependabot 安全警示與匹配 CVE 的連結,在執行階段建議的關聯 CVE 索引標籤中,將解決建議指派給相關工程團隊。

查看C2C建議

  1. 在 MDC 入口網站,請前往 「建議」 標籤。
  2. 搜尋你建立的容器名稱,然後打開寫著「**Update ***」的推薦選項。
  3. 如果你使用了範例存放庫,請尋找:更新 brace-expansion 建議
  4. 到「修復洞察」標籤,查看雲端圖表的程式碼。
  5. 圖解會將你正在運行的容器映射到程式碼倉庫中的容器映像,再映射到 GitHub 裡的原始程式碼倉庫。

修復洞察分頁的截圖,顯示開發階段圖,程式碼、建造、運送與執行階段以虛線相連。

雙向濃縮

  1. 選擇 「關聯 CVEs 」標籤。請注意,有些 CVE 在 「相關 GitHub 警示」欄位有連結。

    相關 CVE 分頁的截圖顯示 CVE-2025-5889,CVSS 分數為 3.1,修正版本為 2.0.2,並在相關 GitHub 警示下有「在 GitHub 查看」連結。

  2. 請選擇「GitHub 上的檢視」連結以開啟相關的 GHAS 安全警示。

工程動員

為了在安全團隊和工程團隊之間形成完整流程,你可以為容器化應用程式建立 GitHub 議題,將需優先處理的安全問題標註給工程團隊。 這種優先排序可能包含 GHAS 未偵測到但 MDC 所發現的 CVE,這些 CVE 並非直接相依性的一部分 (例如基礎映像、作業系統或像 NGINX 這類第三方軟體中的漏洞)。

GitHub 問題為自動產生的,包含推薦範圍內的所有 CVE,無論是否有 Dependabot 警示,並附上來源存放庫的其他執行階段內容。

GitHub 問題清單截圖顯示三個條目,包括「Update brace-expansion」和「Update openssl」,並標示安全與漏洞標籤。

當你指派該問題時,問題狀態會在 MDC 入口網站更新。

GitHub 上一個標題為「Update lodash」的議題截圖,附有安全與漏洞標籤,顯示 CVE、執行時風險因子及部署資訊等細節。

自主修正

在 GitHub 端,如果你有 GitHub Copilot 授權,可以透過 GitHub Coding Agent 來解決這個問題:

  1. 將 GitHub Coding Agent 指派到該議題。
  2. 檢視已產生的修正。
  3. 如果看起來合理,就採取修正。
  4. 請觀察 MDC 中問題狀態更新為 關閉