如何通过Azure DevOps CLI或API查询组织级组在项目中的使用位置
Azure DevOps组织组迁移前的使用位置查询方法
不需要手动逐一排查,Azure DevOps提供了官方REST API和CLI工具可以批量查询[test]\PermissionChecking组的所有使用场景,操作前请先获取该组的唯一标识descriptor:你可以调用组列表接口或者CLI命令筛选显示名称匹配的条目,拿到对应descriptor值后执行以下查询操作。
可查询的使用场景及对应方法
1. 各类资源的直接权限分配
所有Azure DevOps资源的权限都对应不同的安全命名空间ID,调用权限查询API即可返回该组被直接分配权限的所有资源:
接口地址:GET https://dev.azure.com/{你的组织名称}/_apis/accesscontrollists/{安全命名空间ID}?descriptors={目标组descriptor}&api-version=7.1-preview.1
常用安全命名空间ID参考:- 项目基础权限:
52d39943-cb85-4d7f-8fa8-c6baac873819 - Git仓库权限:
2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87 - 生成管道权限:
33344d9c-fc72-49ba-9779-3e575261d129 - 工作项区域/迭代路径权限:
83e28ad4-2d72-4ceb-97b0-c7726d68bddd - 服务连接权限:
7c7d3288-3841-4572-8d78-3d5050280786 - 变量组权限:
b7e84409-5543-4705-bd34-3242c6c0947d
- 项目基础权限:
2. 其他组的成员关系
排查该组是否被作为成员添加到其他项目级组中,调用成员关系查询接口即可:
接口地址:GET https://vssps.dev.azure.com/{你的组织名称}/_apis/graph/memberships/{目标组descriptor}?direction=up&api-version=7.1-preview.1
返回结果中所有的父级条目,就是该组被加入的其他组列表。3. Azure CLI 简化查询方式
如果你不想直接调用REST API,可以使用Azure DevOps CLI扩展完成查询,命令示例如下:
- 获取目标组的descriptor:
az devops security group list --org https://dev.azure.com/{你的组织名称} --query "value[?displayName=='[test]\\PermissionChecking'].descriptor" -o tsv- 查询指定资源类型的权限分配:
az devops security permission list --id {安全命名空间ID} --subject {目标组descriptor} --org https://dev.azure.com/{你的组织名称}- 查询该组的父级组归属:
az devops security group membership list --id {目标组descriptor} --org https://dev.azure.com/{你的组织名称} --relationship memberof
注意事项
- 如果你有多个项目,建议先拉取组织下所有项目的ID列表,批量遍历每个项目下的资源权限,避免遗漏
- 排查完成后建议先在测试项目验证权限迁移逻辑,再对生产项目执行操作
内容的提问来源于stack exchange,提问作者Sar
相关产品推荐
相关产品推荐

