用途
Microsoft Defender for DevOps 集成用于将 Microsoft Defender for Cloud 的安全扫描能力接入 Azure Pipelines。核心组件是 Microsoft Security DevOps(MSDO)扩展,可在流水线中自动执行多类安全扫描,并将结果集中展示与上报。
主要能力
MSDO 提供以下扫描类别:
- 密钥检测(secrets):识别硬编码的密钥与凭据,如 API 密钥与令牌、数据库连接字符串、云服务商凭据、SSH 私钥、OAuth 令牌。
- 静态代码分析(SAST,code):支持 JavaScript/TypeScript(ESLint)、Python(Bandit)、Go(gosec)、Java(SpotBugs)、C#(.NET Security Guard)等语言工具。
- 依赖扫描(dependencies):检测依赖中的已知 CVE、过时包、许可证合规问题、传递性漏洞,工具如 trivy、govulncheck。
- 基础设施即代码扫描(IaC):扫描 Terraform 配置、ARM 模板、Bicep 文件、Kubernetes 清单、CloudFormation 模板,工具如 terrascan、checkov、templateanalyzer。
- 容器镜像扫描(containers):使用 Trivy 检测操作系统漏洞、应用依赖、错误配置、镜像中的密钥、许可证问题。
扩展会将结果转换为 SARIF 格式,在流水线的 Scans 标签页展示,并可集成多个安全工具、提供集中式安全洞察。
使用方式
在 Azure DevOps Marketplace 安装扩展后,在流水线 YAML 中配置任务。基本用法示例:
trigger: branches: include: - main - develop
pool: vmImage: 'ubuntu-24.04'
stages:
- stage: Build
jobs:
- job: BuildAndScan
steps:
-
task: UseDotNet@2 displayName: 'Install .NET SDK' inputs: version: '8.x'
-
task: DotNetCoreCLI@2 displayName: 'Build Project' inputs: command: 'build' projects: '**/*.csproj'
-
task: MicrosoftSecurityDevOps@1 displayName: 'Run Microsoft Security DevOps' inputs: categories: 'secrets,code,dependencies,IaC,containers' break: false
-
task: PublishSecurityAnalysisLogs@3 displayName: 'Publish Security Analysis Logs' inputs: ArtifactName: 'CodeAnalysisLogs'
-
task: PostAnalysis@2 displayName: 'Post Analysis' inputs: break: false
-
- job: BuildAndScan
steps:
可在任务中设置 break 与 breakSeverity(critical、high、medium、low)控制是否因发现而中断构建,通过 tools 指定工具(如 all 或 credscan,eslint,trivy),通过 publishResults 控制结果发布。也支持按分支条件执行不同扫描范围。
结果查看:在流水线运行页面点击 Scans 标签页,按严重性查看发现并点击查看详情与修复建议;在 Azure 门户的 Defender for Cloud → DevOps Security 中可跨流水线查看发现,按严重性、项目、仓库筛选并跟踪修复进度。
适用场景
- 在 Azure Pipelines 构建流程中加入安全扫描。
- 对代码、依赖、IaC 与容器镜像进行统一安全检测。
- 将安全发现集中上报至 Defender for Cloud 进行合规报告与趋势分析。
- 在关键分支上设置严重性阈值以中断构建。
限制与注意事项
- CredScan 已于 2023 年 9 月弃用,密钥扫描改用 GitHub Advanced Security for Azure DevOps 或 MSDO 的 secrets 扫描。
- GitHub Advanced Security for Azure DevOps 需要相应许可证,作为 MSDO 密钥扫描的替代方案。
- 文档中列出的部分高级安全功能(如拉取请求构建验证、按警报严重性中断流水线、高级安全仪表板、自定义 CodeQL 查询、与 GitHub Advanced Security 集成)标注为 2025 年路线图功能。
- 在 Windows 上使用 Edit 或 Write 工具时,文件路径必须使用反斜杠(\),而非正斜杠(/)。
- 除非用户明确要求,不应创建新的文档文件;优先更新现有 README.md,保持仓库根目录整洁。
- 可通过 .gdnconfig 文件抑制误报,例如在仓库根目录配置 trivy 的启用状态与严重性。
- 性能优化建议:缓存工具下载、在分支上限制扫描类别、对大型仓库使用并行阶段。