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

42Crunch 技术加入指南

42Crunch 支持采用标准化方法来保护 API,从而在分布式开发和安全团队中自动执行 API 安全合规性。 42Crunch API 安全平台使开发人员能够将集成开发环境 (IDE) 的安全性构建到 CI/CD 管道中。 这种针对 API 安全性的无缝 DevSecOps 方法可降低治理成本并加速安全 API 的交付。

安全测试方法

与用于扫描 Web 和移动应用程序的传统 DAST 工具不同,42Crunch 运行一组针对每个 API 的具体设计精心设计且有针对性的测试。 42Crunch Scan 引擎使用 OpenAPI 定义(即 Swagger)文件作为主要来源,运行一系列测试来验证 API 与预期设计的符合程度。 此一致性扫描可识别各种安全问题,包括 OWASP 的十大漏洞、不正确的响应代码和架构违规。 这些问题的报告提供丰富的上下文,包括可能的攻击场景和修正指南。

扫描可以作为 CI/CD 管道的一部分自动运行,也可以通过 IDE 或 42Crunch 云平台手动运行。

由于 API 规范的质量在很大程度上决定了扫描的覆盖范围和有效性,因此务必确保 OpenAPI 规范定义正确。 42Crunch 审核会对 OpenAPI 规范文件执行静态分析,旨在帮助开发人员提高规范的安全性和质量。 审核为每个规范文件确定 0-100 的综合安全评分。 随着开发人员修复审核发现的安全和语义问题,分数会提高。 42Crunch 建议在审核分数至少达到 70 后再运行一致性扫描

支持

注意

以下步骤演练了设置 42Crunch 免费版本的过程。 请参阅“常见问题解答”部分,了解 42Crunch 免费版和付费版之间的差异以及如何在 Azure 市场上购买 42Crunch。

通过依靠 42Crunch 审核扫描服务,开发人员可以针对顶级 OWASP API 风险和开放 API 规范最佳实践对 API 进行静态和动态测试,主动测试和强化 CI/CD 管道中的 API。 42Crunch 的安全扫描结果现已在 Defender for Cloud 中提供,确保中央安全团队能够了解 Defender for Cloud 推荐体验中 API 的健康状况,并可以通过 Defender for Cloud 建议采取本机可用的治理步骤。

将 DevOps 环境连接到 Microsoft Defender for Cloud

此功能需要将 DevOps 环境连接到 Defender for Cloud。

请参阅如何加入 GitHub 组织

请参阅如何加入 Azure DevOps 组织

配置 42Crunch 审核服务

REST API 静态安全测试操作查找遵循 OpenAPI 规范(OAS,以前称为 Swagger)的 REST API 合约,并对它们运行彻底的安全检查。 支持 OAS v2 和 v3,采用 JSON 和 YAML 格式。

该操作由 42Crunch API 安全审核提供支持。 安全审核将对 API 定义执行静态分析,其中包括对 API 如何定义身份验证、授权、传输和请求/响应模式的最佳实践和潜在漏洞进行 300 多项检查。

对于 GitHub 环境

通过完成以下步骤,在 CI/CD 管道中安装 42Crunch API 安全审核插件:

  1. 登录 GitHub。

  2. 选择要在为其配置 GitHub 操作的存储库。

  3. 选择“操作”。

  4. 选择“新建工作流”。

    显示新工作流选择的屏幕截图。

创建新的默认工作流:

  1. 选择“自己设置工作流”。

  2. 将工作流从 main.yaml 重命名为 42crunch-audit.yml

  3. 转到 https://github.com/marketplace/actions/42crunch-rest-api-static-security-testing-freemium#full-workflow-example

  4. 复制完整的示例工作流并将其粘贴到工作流编辑器中。

    注意

    此工作流假定你已启用 GitHub 代码扫描。 如果已启用,请确保“upload-to-code-scanning”选项设置为“true”。 如果你未启用 GitHub 代码扫描,请确保“upload-to-code-scanning”选项设置为“false”,并按照下面的在不使用 GitHub 代码扫描的情况下启用 Defender for Cloud 集成部分中的附加步骤进行操作。

    显示 GitHub 工作流编辑器的屏幕截图。

  5. 选择“提交更改”。 可以直接提交到主分支,也可以创建拉取请求。 我们建议通过创建 PR 来遵循 GitHub 最佳实践,因为针对主分支打开 PR 时会启动默认工作流程。

  6. 选择“操作”并验证新操作是否正在运行。

    显示正在运行的新操作的屏幕截图。

  7. 工作流程完成后,选择“安全性”,然后选择“代码扫描”以查看结果。

  8. 选择 42Crunch REST API 静态安全测试检测到的代码扫描警报。 还可以在“代码扫描”选项卡中按工具进行筛选。筛选 42Crunch REST API 静态安全测试

    显示代码扫描警报的屏幕截图。

你现在已经验证审核结果是否显示在 GitHub 代码扫描中。 接下来,我们来验证这些审核结果在 Defender for Cloud 中是否可用。 结果最多可能需要 30 分钟才会显示在 Defender for Cloud 中。

在不使用 GitHub 代码扫描的情况下启用 Defender for Cloud 集成

如果没有适用于你的环境的 GitHub 代码扫描,并且希望将 42Crunch 的安全扫描结果集成到 Defender for Cloud 中,可以按照以下步骤操作。 在 42Crunch 工作流步骤中添加后,将以下步骤添加到你的 GitHub 工作流,以便使用 Microsoft 安全 DevOps GitHub 操作将扫描结果直接发送到 Defender for Cloud。

- name: save-sarif-report
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: 42Crunch_AuditReport_${{ github.run_id }}
          path: 42Crunch_AuditReport_${{ github.run_id }}.SARIF
          if-no-files-found: error
- name: Upload results to MSDO
        uses: microsoft/security-devops-action@v1
        id: msdo
        with:
          existingFilename: 42Crunch_AuditReport_${{ github.run_id }}.SARIF

接下来,向工作流添加其他权限,将“id-token”设置为“写入”

运行工作流后,结果最多可能需要 30 分钟才会显示在 Defender for Cloud 中。

  1. 选择“建议”。
  2. 选择“所有建议”。
  3. 通过搜索 API 安全测试进行筛选。
  4. 选择建议“GitHub 存储库应处理 API 安全测试结果”。

所选建议将显示所有 42Crunch 审核结果。 你已完成 42Crunch 审核步骤的加入。

显示 API 摘要的屏幕截图。

对于 Azure DevOps 环境

  1. 在组织中安装 42Crunch Azure DevOps 扩展

  2. 创建 Azure DevOps 项目中的新管道。 有关创建第一个管道的教程,请参阅创建第一个管道

  3. 通过复制以下工作流来编辑创建的管道:

    trigger:
    branches:
       include:
          - main
    
    jobs:
    - job: run_42crunch_audit
       displayName: 'Run Audit'
       pool:
          vmImage: 'ubuntu-latest'
       steps:
          - task: UsePythonVersion@0
          inputs:
             versionSpec: '3.11'
             addToPath: true
             architecture:  x64
          - task: APISecurityAuditFreemium@1
          inputs:
             enforceSQG: false
             sarifReport: '$(Build.Repository.LocalPath)/42Crunch_AuditReport.sarif'
             exportAsPDF: '$(Build.Repository.LocalPath)/42Crunch_AuditReport.pdf'
          - task: PublishBuildArtifacts@1
          displayName: publishAuditSarif
          inputs:
             PathtoPublish: '$(Build.Repository.LocalPath)/42Crunch_AuditReport.sarif '
             ArtifactName: 'CodeAnalysisLogs'
             publishLocation: 'Container'
    
  4. 运行管道。

  5. 若要验证结果是否会在 Azure DevOps 中正确发布,请验证 42Crunch-AuditReport.sarif 是否会上传到 CodeAnalysisLogs 文件夹下的生成工件中

  6. 你已完成加入过程。 接下来,我们将验证结果是否显示在 Defender for Cloud 中。

导航到 Defender for Cloud

  1. 选择“建议”。
  2. 选择“所有建议”。
  3. 通过搜索 API 安全测试进行筛选。
  4. 选择“AzureDevOps 存储库应处理 API 安全测试结果”建议

所选建议将显示所有 42Crunch 审核结果。 你已完成 42Crunch 审核步骤的加入。

显示 Azure DevOps 建议的屏幕截图。

配置 42Crunch 扫描服务

API Scan 会持续扫描 API,以确保符合 OpenAPI 合同并在测试时检测漏洞。 它会在 API 生命周期早期检测 OWASP API 安全性的 10 大问题,并验证 API 是否可以处理意外请求。

扫描需要非生产实时 API 端点以及所需的凭据(API 密钥/访问令牌)。 请按照以下步骤配置 42Crunch 扫描。

有关 ADO 特定任务,请参阅教程中的 azure-pipelines-scan.yaml

常见问题解答

42Crunch 如何帮助开发者识别和修正 API 安全问题?

42Crunch 安全审核和一致性扫描可识别开发生命周期早期 API 中存在的潜在漏洞。 扫描结果包括丰富的上下文,包括漏洞和相关攻击的描述以及详细的修正指南。 扫描可以在 CI/CD 平台中自动执行,也可以由开发者通过 42Crunch IDE 扩展之一在其 IDE 中增量执行。

是否可以使用 42Crunch 来强制开发人员遵守最低质量和安全标准?

是的。 42Crunch 能够使用安全质量门 (SQG) 强制实施合规性。 SQG 由某些条件组成,必须满足这些条件才能成功通过审核或扫描。 例如,SQG 可以确保具有一个或多个严重严重性问题的审核或扫描不会通过。 在 CI/CD 中,如果 42Crunch 审核或扫描未能通过 SQG,则可以将其配置为使构建失败,从而要求开发人员在推送代码之前解决根本问题。

42Crunch 的免费版本使用默认的 SQG 进行审核和扫描,而付费企业版本允许自定义 SQG 和标签,从而允许将 SQG 有选择地应用于 API 分组。

42Crunch 的 SaaS 服务中存储哪些数据?

42Crunch 安全审核和一致性扫描的有限免费试用版可以部署在 CI/CD 中,无需 42Crunch SaaS 连接即可在本地生成报告。 在此版本中,不与 42Crunch 平台共享数据。

对于 42Crunch 平台的完整企业版本,以下数据存储在 SaaS 平台中:

  • 42Crunch 平台用户的名字、姓氏、电子邮件地址。
  • OpenAPI/Swagger 文件(客户 API 的说明)。
  • 在 42Crunch 执行的安全审核和一致性扫描任务期间生成的报表。

42Crunch 如何获得许可?

42Crunch 基于 API 数量和平台上预配的开发人员数的组合获得许可。 有关定价捆绑包的示例,请参阅此商城商品列表。 可通过 Azure 商业市场上的专属优惠获得自定义定价。 如需定制报价单,请联系 mailto:sales@42crunch.com

42Crunch 的免费版和付费版有什么区别?

42Crunch 提供免费受限版和付费企业版的安全审核和一致性扫描。

对于 42Crunch 的免费版本,42Crunch CI/CD 插件独立工作,无需登录 42Crunch 平台。 然后,审核和扫描结果将在 Microsoft Defender for Cloud 以及 CI/CD 平台中提供。 审核和扫描限制为每个存储库每月最多执行 25 次,最多 3 个存储库。

对于 42Crunch 的付费企业版,审核和扫描仍然在 CI/CD 中本地执行,但可以与 42Crunch 平台服务同步,可以在其中使用多种高级功能,包括可自定义的安全质量门、数据字典和标记。 虽然企业版获得一定数量的 API 许可,但每月运行的审核和扫描数量没有限制。

Azure 商业市场是否提供 42Crunch?

是的,42Crunch 可以在此处的 Microsoft 商业市场上购买。

请注意,通过 Azure 商业市场购买的 42Crunch 将计入最低 Azure 消耗承诺 (MACC)。

后续步骤

Microsoft Defender for API 概述