用途:以项目为范围,稽核 Azure DevOps 各仓库默认分支套用了哪些 branch policy,对照 Microsoft Learn 安全基准生成检查表,并列出没有任何原则的仓库;全程只读,不创建或修改原则,修正只给网页操作步骤。
主要能力:基准项包括最少两名审查者(minimumApproverCount≥2 且 blocking)、建立者投票不计入、推送后重新核准、链接工作项目、构建验证、评论须解决;参考项包括最近推送者不能批准、限制合并类型、敏感路径必要审查者、Advanced Security 状态检查。以原则类型 GUID 比对(非 displayName),忽略 isDeleted、视 isEnabled=false 为不存在、isBlocking=false 不算通过。
使用方式:用 curl 调用 Azure DevOps REST API,从环境变量读 AZURE_DEVOPS_ORG 与 AZURE_DEVOPS_PAT,PAT 以 Basic 验证发送(-u ":$AZURE_DEVOPS_PAT"),也可用 AZURE_DEVOPS_EXT_PAT 或 Bearer 令牌;权限至少 Code (Read),列项目另需 Project and Team (Read)。先取原则类型、列仓库、再按 repositoryId 与 refName 取原则,需处理 continuation token 分页。
适用场景:稽核分支保护、检查默认分支是否符合 Microsoft 建议、找出完全无原则的仓库。限制:无法通过 API 判断谁有绕过原则的权限,需人工到网页检查;空仓库与已停用仓库会略过;路径与查询串需 URL 编码;401/403/203 或 HTML 登录页表示令牌无效,404 表示组织、项目或仓库有误。价格与收费信息暂未提供。