集成第三方扫描工具
GitHub Azure DevOps 的高级安全性使用静态分析结果交换格式 (SARIF) 文件中的信息在存储库中创建代码扫描警报。 SARIF 文件属性用于填充警报信息,例如警报标题、位置和说明文本。
可以使用多个静态分析安全测试工具(包括 CodeQL)来生成 SARIF 文件。 结果必须使用 SARIF 版本 2.1.0。 有关 SARIF 的详细信息,请参阅 SASRIF 教程。
使用 Azure Pipelines 上传代码扫描分析
若要使用 Azure Pipelines 将第三方 SARIF 文件上传到存储库,管道需要使用 AdvancedSecurity-Publish
任务,该任务是与 Azure DevOps 的 GitHub 高级安全性捆绑的任务的一部分。 要使用的主要输入参数包括:
SarifsInputDirectory
:配置要上传的 SARIF 文件的目录。 预期的目录路径是绝对路径。Category
:可以选择为 SARIF 文件中的结果分配类别。 这使你能够以多种方式分析相同的提交,并使用 GitHub 中的代码扫描视图查看结果。 例如,您可以使用多个工具进行分析,在单存储库中,您可以根据已更改文件的子集分析存储库的不同片段。
下面是与 Microsoft Defender for Cloud 团队拥有的 Microsoft Security DevOps 任务的集成示例:
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: MicrosoftSecurityDevOps@1
inputs:
command: 'run'
categories: 'IaC'
- task: AdvancedSecurity-Publish@1
inputs:
SarifsInputDirectory: '$(Build.ArtifactStagingDirectory)/.gdn/'
结果指纹生成
如果 SARIF 文件不包含 partialFingerprints
,该 AdvancedSecurity-Publish
任务将为你计算 partialFingerprints
字段,并尝试阻止重复的警报。 仅当存储库包含 SARIF 文件和静态分析中使用的源代码时,才能创建 partialFingerprints
高级安全性。 有关防止重复警报的详细信息,请参阅 提供数据来跟踪跨运行的代码扫描警报。
验证工具结果
可以检查 SARIF 属性是否具有支持上传的大小,以及该文件是否与代码扫描兼容。 有关详细信息,请参阅 验证 SARIF 文件。 若要验证 SARIF 文件是否符合高级安全的要求,请参阅 SARIF 验证程序 并选择 Azure DevOps ingestion rules
。