分享方式:


在 GitHub 和 Azure DevOps 中啟用提取要求批注

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

透過 適用於雲端的 Microsoft Defender,您可以在 Azure DevOps 中設定 PR 批注。 如果您是 GitHub 進階安全性客戶,您可以在 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"]
    

    您也可以檢視範例存放

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

  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 的 Update Azure DevOps Resource API,以程式設計方式執行這項操作。 安全性資源提供者。

API 資訊:

Http 方法:P ATCH URL

  • Azure DevOps Project Update: 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>描述:P R 註釋組態 選項的狀態:已啟用 |禁用

<Category>描述:將在提取要求上加上批注的尋找類別。 選項:IaC |程序代碼 |成品 |相依性 |容器 附註:目前僅支援 IaC

<Severity>描述:建立PR批注時將考慮的尋找最小嚴重性。 選項:高 |中 |低

使用 az cli 工具,為 IaC 類別啟用 Azure DevOps Org PR 註釋的範例,其最小嚴重性為 Medium。

更新組織:

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 Project PR 註釋的範例,其嚴重性下限為 High。

更新專案:

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安全性