共用方式為


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

本指南將引導你完成設定步驟及其他操作,協助你整合 GitHub Advanced Security (GHAS) 與 Microsoft Defender for Cloud。 此整合有助於最大化 Microsoft 雲端原生應用的安全性。

遵循本指南,你:

  • 將您的 GitHub 儲存庫設置為支援 Defender for Cloud。
  • 建立執行時風險因子。
  • 測試 Defender for Cloud 的真實應用案例。
  • 把程式碼連結到雲端資源。
  • 在 GitHub 上啟動安全行銷活動。 此活動利用執行時情境(runtime context)根據執行時情境優先處理 GHAS 安全警示。
  • 從 Defender for Cloud 建立 GitHub 問題以開始修正。
  • 關閉工程與資安團隊的連結。

先決條件

層面 詳細資訊
環境要求 - GitHub 帳號,並以 Defender for Cloud 建立連接器
- GHAS 授權
- 在訂閱上啟用 Defender 雲端安全態勢管理(CSPM)
- Microsoft Security Copilot(可選用於自動修復)
角色和權限 - 安全管理員權限
- Azure 訂閱上的 Security Reader(可在 Defender for Cloud 中查看發現)
- GitHub 組織擁有者
雲端環境 - 僅在商業雲端提供(不包括 Azure Government、21Vianet 運營的 Azure,或其他主權雲端)

準備您的環境

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

要測試整合,請使用你自己的倉庫或已經包含所有內容的範例 GitHub 倉庫,建立一個脆弱的容器映像檔。 在設置儲存庫之前,請確保:

如果你想使用範例倉庫,可以將以下倉庫複製到你的 GitHub 組織: build25-woodgrove/mdc-customer-playbook。 此資料庫供客戶測試 Defender for Cloud 與 GHAS 的整合。 它啟用了 GHAS,並且已接入一個啟用 Defender CSPM 的 Azure 租戶。

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

  1. 移至 [設定]

  2. 在左側窗格,選擇秘密與變數>動作。 然後選擇 新儲存庫秘密

    在 GitHub 上創建新儲存庫機密的選項截圖。

  3. 在儲存庫或組織層級加入以下秘密:

    Variable Description
    ACR_ENDPOINT 容器登錄檔的登入伺服器
    ACR_USERNAME 容器登錄檔的用戶名稱
    ACR_PASSWORD 容器登錄檔的密碼

    備註

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

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

    1. 選擇你想部署到的容器登錄檔。

    2. 設定中,選擇 存取鍵存取鑰匙面板顯示登入伺服器的金鑰、使用者名稱和密碼。

      Azure 入口網站中容器登錄檔存取金鑰的面板截圖。

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

  5. 選擇建置並推送到 ACR工作流程,然後選擇執行工作流程

    GitHub 倉庫的 Actions 區塊截圖,顯示工作流程歷史和執行工作流程的按鈕。

  6. 檢查映像檔是否已部署到你的容器登錄檔。

    範例倉庫中映像應存放於名為 mdc-mock-0001 的登錄檔,並標註 mdc-ghas-integration

  7. 在叢集上部署與執行容器相同的映像檔。 完成此步驟的一種方法是連接叢集並使用指令 kubectl run 。 這裡有一個 Azure Kubernetes Service(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. 在 Defender for Cloud 入口網站,前往 環境設定>資源重要性

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

    Defender for Cloud 介面的截圖,顯示開啟 Microsoft Defender 入口網站的選項。

  3. 選擇 建立新分類

    建立新分類按鈕的截圖。

  4. 輸入名稱和描述。

  5. 在查詢建構器中,選擇 雲端資源

  6. 寫一個查詢,將 資源名稱 設為已部署到叢集中的容器名稱,以進行驗證。 然後選取下一步

    Microsoft Defender 查詢建構器中對雲端資源套用資源名稱篩選器的截圖。

  7. 預覽資產 頁面,如果 Microsoft Defender 已經偵測到你的資源,容器名稱會顯示為 K8s-containerK8s-pod 的資產類型。

    即使名字還沒看出來,也要繼續下一步。 Microsoft Defender 會在偵測到容器後,對該容器套用關鍵性標籤。 此程序最多可能需要 24 小時。

  8. 選擇一個嚴重性等級,然後檢視並提交分類規則。

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

備註

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

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

  2. 到雲端安全檔案總管執行查詢。

    Cloud Security Explorer 查詢建構器中搜尋結果的截圖,篩選條件設為 GitHub 倉庫和容器圖片。

  3. 驗證 Defender for Cloud(在 Azure 容器登錄檔)是否掃描了容器映像並用它來建立容器。 在查詢中,請填寫你具體部署的條件。

    Cloud Security Explorer 的截圖顯示查詢掃描結果,並包含 GitHub 倉庫和容器圖片的篩選條件。

  4. 確認容器是否在運作,且 Defender for Cloud 是否掃描了 AKS 叢集。

    Cloud Security Explorer 查詢結果的截圖,並包含 GitHub 倉庫和容器圖片的篩選條件。

  5. 驗證 Defender for Cloud 端的風險因子設定正確。 在 Defender for Cloud 的庫存頁面搜尋你的容器名稱,應該會看到它被標記為關鍵。

步驟四:建立 GitHub 活動

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

備註

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

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

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

    GitHub 上用程式碼或秘密掃描過濾器建立廣告活動的選項截圖。

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

    GitHub 活動截圖,包含開啟警報、嚴重程度及執行時風險的篩選條件。

  4. 選擇儲存>作為活動發佈

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

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

利用程式碼轉雲端建議與安全警示來了解安全問題的狀態。 接著,你可以利用 Dependabot 安全警示與 Defender for Cloud 中常見漏洞與暴露(CVE)ID 匹配的連結,將解決方案建議指派給相關工程團隊。

要查看程式碼轉雲端建議:

  1. 在 Defender for Cloud 入口網站,請前往 「推薦」 標籤。

  2. 搜尋你所建立的容器名稱。 接著,打開某個包含「更新」一詞的推薦。

    如果你用過範例倉庫,請尋找 「更新大括號擴充建議」。

  3. 前往「 修復洞察 」標籤,查看程式碼到雲端的圖表。 該圖將您的執行容器映射到程式碼倉庫中的容器映像,並映射到 GitHub 中的來源程式碼倉庫。

    修復洞察標籤的截圖,顯示相關開發階段的圖表。

查看安全警示

  1. 選擇「關聯 CVEs」標籤。請注意,有些 CVE ID 在「相關 GitHub 警示」欄位中有一個「在 GitHub 上檢視」的連結。

  2. 選擇連結以開啟相關的 GHAS 安全警示。

Associated CVEs 標籤的截圖,顯示相關 GitHub 警示連結。

建立 GitHub 問題

為了關閉安全與工程團隊的連結,你可以建立一個 GitHub 議題,優先處理工程團隊應該關注的安全議題。 這種優先排序可能包括傳遞 GHAS 沒偵測到但 Defender for Cloud 偵測到的非直接相依 CVE ID 的發現。 這些發現可能包括基礎映像、作業系統或像 NGINX 這類軟體的漏洞。

GitHub 的問題會自動生成,並包含建議範圍內發現的所有 CVE ID。 此建議無論是否有 Dependabot 警示匹配,包括來源儲存庫的其他執行時上下文。

GitHub 議題清單的截圖,顯示三個條目標示安全與漏洞標籤。

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

GitHub 上一個帶有安全與漏洞標籤的問題截圖,包含 CVE ID、執行時風險因子及部署資訊等細節。

進行代理性修正

在 GitHub 端,如果你有 GitHub Copilot 授權,可以透過 GitHub 程式代理程式來解決這個問題:

  1. 指派一位 GitHub 程式代理來處理這個問題。
  2. 檢視已產生的修正。
  3. 如果修正看起來合理,就去執行。
  4. 請留意 Defender for Cloud 將問題狀態更新為 「已關閉」。