在 GitHub 和 Azure DevOps 中啟用提取要求註釋

DevOps 安全性會將安全性結果公開為提取要求 (PR) 中的註釋。 安全性操作員可以在適用於雲端的 Microsoft Defender 中啟用 PR 註釋。 開發人員可以解決任何公開的問題。 此程序可以在進入生產階段之前,防止並修正潛在的安全性弱點和設定錯誤。 DevOps 安全性會標註提取要求期間所引入差異內的弱點,而不是在整個檔案中偵測到的所有弱點。 開發人員可以在原始程式碼管理系統中看到註釋,而安全性操作員可以在適用於雲端的 Microsoft Defender 中看到任何未解決的結果。

使用適用於雲端的 Microsoft Defender,您可以在 Azure DevOps 中設定 PR 註釋。 如果您是 GitHub Advanced Security 客戶,您可以在 GitHub 中取得 PR 註釋。

什麼是提取要求註釋

提取要求註釋是新增至 GitHub 或 Azure DevOps 中提取要求的註解。 這些註釋提供提取要求中程式碼變更和已識別安全性問題的意見反應,並協助檢閱者了解所做的變更。

註釋可由具有存放庫存取權的使用者新增,並可用來建議變更、詢問問題或提供程式碼的意見反應。 註釋也可以用來追蹤程式碼合併至主分支之前需要修正的問題和錯誤 (bug)。 適用於雲端的 Defender 中的 DevOps 安全性會使用註釋來呈現安全性結果。

必要條件

針對 GitHub

針對 Azure DevOps

在 GitHub 中啟用提取要求註釋

藉由在 GitHub 中啟用提取要求註釋,您的開發人員就能在直接建立主要分支的 PR 時查看其安全性問題。

若要在 GitHub 中啟用提取要求註釋,方法如下:

  1. 瀏覽至 GitHub 並登入。

  2. 選取您已上線至適用於雲端的 Defender 進行運作的存放庫。

  3. 瀏覽至 Your repository's home page>.github/workflows

    顯示要瀏覽至何處以選取 GitHub 工作流程資料夾的螢幕擷取畫面。

  4. 選取在必要條件中建立的 msdevopssec.yml

    顯示需在畫面上的什麼位置選取 msdevopssec.yml 檔案的螢幕擷取畫面。

  5. 選取 [編輯]

    顯示編輯按鈕外觀的螢幕擷取畫面。

  6. 找出並更新觸發程序區段,加入以下資料:

    # Triggers the workflow on push or pull request events but only for the main branch
    pull_request:
      branches: ["main"]
    

    您也可以檢視範例存放庫

    (選用) 您可以輸入觸發程序區段下的分支,以選取要在其中執行的分支。 如果您想要包含所有分支,請移除有分支清單的行。 

  7. 選取 [開始認可]

  8. 選取 [認可變更]

    掃描器探索到的任何問題,都可以在提取要求的 [檔案已變更] 區段中檢視。

    • 用於測試 - 警示不在生產程式碼中。

在 Azure DevOps 中啟用提取要求註釋

藉由在 Azure DevOps 中啟用提取要求註釋,您的開發人員就能在直接建立主要分支的 PR 時查看其安全性問題。

啟用 CI 組建的組建驗證原則

您必須先為 CI 組建啟用組建驗證原則,才能啟用提取要求註釋。

若要啟用 CI 組建的組建驗證原則

  1. 登入您的 Azure DevOps 專案。

  2. 瀏覽至 [專案設定] > [存放庫]

    顯示要瀏覽至何處以選取存放庫的螢幕擷取畫面。

  3. 選取要啟用提取要求的存放庫。

  4. 選取原則

  5. 瀏覽至 [分支原則] > [主要分支]

    顯示分支原則位置的螢幕擷取畫面。

  6. 找出 [組建驗證] 區段。

  7. 請確定存放庫的組建驗證已切換為 [開啟]

    顯示 CI 組建切換開關位置的螢幕擷取畫面。

  8. 選取 [儲存]。

    顯示組建驗證的螢幕擷取畫面。

完成這些步驟之後,您可以選取您先前建立的組建管線,並自訂其設定以符合您的需求。

切換提取要求註釋

若要在 Azure DevOps 中啟用提取要求註釋,方法如下:

  1. 登入 Azure 入口網站

  2. 瀏覽至 [適用於雲端的 Defender] > [DevOps 安全性]

  3. 選取所有相關存放庫,以啟用提取要求註釋。

  4. 選取 [管理資源]

    顯示如何管理資源的螢幕擷取畫面。

  5. 將提取要求註釋切換為 [開啟]

    顯示已切換為開啟的螢幕擷取畫面。

  6. (選用) 從下拉式功能表中選取類別。

    注意

    目前僅支援基礎結構即程式碼設定錯誤 (ARM、Bicep、Terraform、CloudFormation、Dockerfiles、Helm Chart 等等) 結果。

  7. (選用) 從下拉式功能表選取嚴重性層級。

  8. 選取 [儲存]。

您提取要求上的所有註釋現在都會根據設定來顯示。

若要在 Azure DevOps 中為我的專案和組織啟用提取要求註釋

您可以呼叫會公開 Microsoft 的更新 Azure DevOps 資源 API,以程式設計方式執行此作業。 安全性資源提供者。

API 資訊:

HTTP 方法:PATCH URL

  • Azure DevOps 專案更新:https://management.azure.com/subscriptions/<subId>/resourcegroups/<resourceGroupName>/providers/Microsoft.Security/securityConnectors/<connectorName>/devops/default/azureDevOpsOrgs/<adoOrgName>/projects/<adoProjectName>?api-version=2023-09-01-preview
  • Azure DevOps 組織更新:https://management.azure.com/subscriptions/<subId>/resourcegroups/<resourceGroupName>/providers/Microsoft.Security/securityConnectors/<connectorName>/devops/default/azureDevOpsOrgs/<adoOrgName>?api-version=2023-09-01-preview

要求本文:

{
   "properties": {
"actionableRemediation": {
              "state": <ActionableRemediationState>,
              "categoryConfigurations":[
                    {"category": <Category>,"minimumSeverityLevel": <Severity>}
               ]
           }
    }
}

可用參數/選項

<ActionableRemediationState>描述:提取要求註釋設定的狀態 選項:已啟用 | 已停用

<Category>描述:將會在提取要求上標註的結果類別。 選項:IaC | 程式碼 | 成品 | 相依性 | 容器 注意:目前僅支援 IaC

<Severity>描述:建立提取要求註釋時考量的結果最低嚴重性。 選項:高 | 中 | 低

使用 az cli 工具為 IaC 類別啟用 Azure DevOps 組織的提取要求註釋,其最低嚴重性為「中」。

更新組織:

az --method patch --uri https://management.azure.com/subscriptions/4383331f-878a-426f-822d-530fb00e440e/resourcegroups/myrg/providers/Microsoft.Security/securityConnectors/myconnector/devops/default/azureDevOpsOrgs/testOrg?api-version=2023-09-01-preview --body "{'properties':{'actionableRemediation':{'state':'Enabled','categoryConfigurations':[{'category':'IaC','minimumSeverityLevel':'Medium'}]}}}

使用 az cli 工具為 IaC 類別啟用 Azure DevOps 專案的提取要求註釋,其最低嚴重性為「高」。

更新專案:

az --method patch --uri https://management.azure.com/subscriptions/4383331f-878a-426f-822d-530fb00e440e/resourcegroups/myrg/providers/Microsoft.Security/securityConnectors/myconnector/devops/default/azureDevOpsOrgs/testOrg/projects/testProject?api-version=2023-09-01-preview --body "{'properties':{'actionableRemediation':{'state':'Enabled','categoryConfigurations':[{'category':'IaC','minimumSeverityLevel':'High'}]}}}"

深入了解

下一步

現在深入了解 DevOps 安全性