SuperAPI AI 工具集

defender-for-devops

安全与审计

查看项目

更新于 10-15 13:37

技能介绍

用途

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

可在任务中设置 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 的启用状态与严重性。
  • 性能优化建议:缓存工具下载、在分支上限制扫描类别、对大型仓库使用并行阶段。