【问题标题】:Group Permission for Azure DevOps via CLI通过 CLI 获得 Azure DevOps 的组权限
【发布时间】:2020-04-21 19:47:49
【问题描述】:

我想从 Azure DevOps 中的每个项目的项目管理员角色中删除 DELETE(删除项目)权限。这是我正在运行的 CLI 命令。一切顺利,没有错误。但是,当您返回并在 Web 上查看时,权限不会受到影响。有什么想法吗?

$org = "myOrg"
$orgUrl = "https://dev.azure.com/$org"

$projName = "myProject"
$group = "Project Administrators"

$projId = az devops project list --org "$orgURl" -o json --query "value[?@.name == '$projName'].id | [0]"
$projToken = '$PROJECT:vstfs///Classification/TeamProject/'+$projId
$projToken = $projToken -Replace '"', ""

$subject = az devops security group list --org "$orgUrl" --scope organization -o json --subject-types vssgp --query "graphGroups[?@.principalName == '[$projName]\$group'].descriptor | [0]"

$namespaceId = az devops security permission namespace list -o json --org "$orgUrl" --query "[?@.name == 'Project'].namespaceId | [0]"

$bit = az devops security permission namespace show -o json --namespace-id $namespaceId --org "$orgUrl" --query "[0].actions[?@.name == 'DELETE'].bit | [0]" 

az devops security permission update --id $namespaceId --subject $subject --token $projToken --deny-bit $bit --org "$orgUrl" --merge true

输出是: PS Screenshot

知道我做错了什么吗?

提前致谢, 杰克

【问题讨论】:

  • 项目管理员几乎是项目范围内的最高权限,该组的权限不支持编辑...

标签: permissions azure-devops command-line-interface


【解决方案1】:

知道我做错了什么吗?

项目管理员组拥有团队项目级别的最高权限。因此,关于该组的项目权限(Project Settings=>Permissions)不可编辑:

根据设计,项目管理员始终有权删除团队项目。

除了Project Administrators组,其他组的权限都是可编辑的,见:

1.如果你想添加一个成员到Project Administrator组,他删除项目的权限不能被删除。

(无论我们使用哪种方式,网页、Azure Devops Rest Api、az devops cli 命令或其他方式,这些都不起作用,因为这是设计使然)

2.如果您确实想授予项目管理员应具有的大多数权限,但删除团队项目权限除外,您可以尝试创建一个新组(在项目设置=>权限页面)并授予该组所有权限除了删除团队项目权限,类似这样:

您还需要做一些额外的工作,以在 Pipeline Security(见下图)、Repos 权限(Project settings=>repos=>repos)中为组授予必要的权限...

然后将成员添加到此自定义组中,而不是默认的Project Administrators 组。

【讨论】:

  • 感谢您的详细回复。我想在这种情况下更改项目管理员的默认权限配置文件将不起作用。所以我在项目中创建了一个没有明确权限映射的新组。然后重复添加拒绝位的步骤(也单独尝试了允许位),但权限不会在 DevOps 中更新。想法?
  • 问题可能与您的--token 参数有关!请检查此similar issue。建议在最后一条命令中直接使用single quotes,而不是使用$projToken等变量。
  • 使用az devops security permission update --id $namespaceId --subject $subject --token '$PROJECT:vstfs:///Classification/TeamProject/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx' --deny-bit 4 --merge true 之类的格式。它会像魅力一样发挥作用。
  • 谢谢兰斯!我想我终于让它工作了。感谢您对此的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
相关资源
最近更新 更多