你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 GitHub 或 Azure DevOps 中启用拉取请求注释

DevOps 安全性将安全发现公开为拉取请求 (PR) 中的注释。 安全操作员可以在 Microsoft Defender for Cloud 中启用 PR 注释。 开发人员可以修正任何公开的问题。 此过程有助于在潜在的安全漏洞和错误配置进入生产阶段之前,对其进行预防和修复。 DevOps 安全性在拉取请求(而不是在整个文件中检测到的所有漏洞)期间引入的差异内对漏洞进行注释。 开发人员可以在其源代码管理系统中查看注释,安全操作员可以在 Microsoft Defender for Cloud 中查看任何未解决的检测结果。

借助 Microsoft Defender for Cloud,可以在 Azure DevOps 中配置 PR 注释。 如果你是 GitHub Advanced Security 客户,可以在 GitHub 中获取 PR 注释。

什么是拉取请求注释

拉取请求注释是添加到 GitHub 或 Azure DevOps 中的拉取请求的注释。 这些注释提供有关拉取请求中所做的代码更改和确定的安全问题的反馈,并帮助审阅者了解所做的更改。

注释可由有权访问存储库的用户添加,可用于建议更改、提出问题或提供有关代码的反馈。 注释还可用于跟踪在代码合并到主分支之前需要修复的问题和 bug。 Defender for Cloud 中的 DevOps 安全性使用注释呈现安全发现。

先决条件

对于 GitHub:

对于 Azure DevOps:

在 GitHub 中启用拉取请求注释

通过在 GitHub 中启用拉取请求注释,开发人员可以在主分支中直接创建 PR 时查看其安全问题。

若要在 GitHub 中启用拉取请求注释

  1. 导航到 GitHub 并登录。

  2. 选择已加入 Defender for Cloud 的存储库。

  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 for Cloud>”“DevOps 安全性”。

  3. 选择要对其启用拉取请求注释的所有相关存储库。

  4. 选择“ 管理资源”。

    屏幕截图显示了如何管理资源。

  5. 将拉取请求注释切换为“”。

    显示切换为打开的切换开关的屏幕截图。

  6. (可选)从下拉菜单中选择一个类别。

    注意

    目前仅支持基础结构即代码错误配置(ARM、Bicep、Terraform、CloudFormation、Dockerfile、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>说明:PR 注释配置的状态选项:已启用 | 已禁用

<Category>说明:将在拉取请求上注释的发现类别。 选项:IaC | 代码 | 项目 | 依赖项 | 容器 注意:目前仅支持 IaC

<Severity>说明:创建 PR 注释时将考虑的发现的最低严重性。 选项:高 | 中 | 低

使用 az cli 工具为 IaC 类别启用 Azure DevOps 组织的 PR 注释的示例,其最小严重性为“中”。

更新组织:

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 项目的 PR 注释的示例,其最小严重性为“高”。

更新项目:

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