You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure CLI或REST API移除项目所有仓库的Contributors安全组

移除Azure DevOps项目所有仓库中安全组权限的方法(以Contributors组为例)

仓库权限设置界面说明

项目中仓库权限的配置入口:项目 → Repos → 权限,找到目标安全组(如Contributors)即可查看/修改权限,界面示例如下:
Azure DevOps仓库权限设置界面

方法一:使用Azure CLI移除权限

步骤1:获取目标安全组的Descriptor

先获取Contributors组的唯一标识(descriptor),代码如下:

# 配置变量
$orgname = "你的组织名称"
$prjname = "你的项目名称"
$groupName = "Contributors"

# 获取安全组descriptor
$subject = az devops security group list `
    --org "https://dev.azure.com/$orgname/" `
    --project "$prjname" `
    --subject-types vssgp `
    --query "graphGroups[?principalName=='$groupName'].descriptor | [0]" `
    --output tsv

步骤2:移除项目所有仓库的权限

Git仓库权限对应的Namespace ID为固定值 2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87,你可以通过两种方式移除权限:

方式A:重置权限(清除所有自定义权限,继承上级设置)

$namespaceId = "2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87"
$projectid = az devops project show --org "https://dev.azure.com/$orgname/" --project "$prjname" --query id --output tsv

# 重置项目下所有Git仓库的权限
az devops security permission reset `
    --org "https://dev.azure.com/$orgname/" `
    --id $namespaceId `
    --subject $subject `
    --token "repoV2/$projectid"

方式B:直接清除权限位(覆盖现有权限为无)

如果需要彻底清除该组在仓库的所有权限(不继承),可以使用update命令并设置--allow-bit 0且关闭合并:

az devops security permission update `
    --org "https://dev.azure.com/$orgname/" `
    --id $namespaceId `
    --subject $subject `
    --token "repoV2/$projectid" `
    --allow-bit 0 `
    --merge false

方法二:使用REST API移除权限

步骤1:获取安全组Descriptor

发送GET请求获取组信息:

GET https://vssps.dev.azure.com/{organization}/_apis/graph/groups?api-version=7.1-preview.1&scopeDescriptor={projectDescriptor}

(注:projectDescriptor可通过项目详情接口获取,或直接在Azure CLI结果中提取)

步骤2:重置权限(推荐)

发送POST请求重置该组在项目所有仓库的权限:

POST https://dev.azure.com/{organization}/{project}/_apis/securitypermissions/reset?api-version=7.1-preview.1
Content-Type: application/json

{
    "securityNamespaceId": "2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87",
    "token": "repoV2/{projectId}",
    "descriptors": ["{subjectDescriptor}"]
}

步骤3:(可选)直接更新权限清除所有允许项

发送PATCH请求覆盖权限设置:

PATCH https://dev.azure.com/{organization}/{project}/_apis/securitypermissions/2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87?token=repoV2/{projectId}&api-version=7.1-preview.1
Content-Type: application/json

{
    "descriptor": "{subjectDescriptor}",
    "allow": 0,
    "deny": 0,
    "merge": false
}

注意事项

  • 操作前确保拥有项目管理员或组织管理员权限,否则无法修改权限
  • repoV2/{projectId}代表项目下所有Git仓库,若需针对单个仓库,token格式为repoV2/{projectId}/{repoId}
  • 重置权限后,组会继承上级(如项目级)的权限配置,若需完全移除该组对仓库的访问,需同步检查上级权限设置

内容的提问来源于stack exchange,提问作者Joe_12345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:39:57