使用 Azure DevOps CLI 分配组权限

Posted

技术标签:

【中文标题】使用 Azure DevOps CLI 分配组权限【英文标题】:Assigning group permissions using to Azure DevOps CLI 【发布时间】:2019-10-14 09:42:26 【问题描述】:

我正在尝试使用 cli 将权限分配给“构建管理员”组。

我要更新的具体权限是“删除团队项目”权限。

文档有点难以整理,因为信息很分散,特别是关于安全令牌和权限位的部分。

我正在使用 az devops 安全命令。我正在努力的部分是获取 正确 令牌并设置正确的权限位

我知道我想使用的命名空间。它是 environment 命名空间。通过首先检查所有命名空间并找到环境命名空间的 guid 来发现这一点。

#get list of all namespaces
az devops security permission namespace list -o table

$envnamespace = <guid from above command for the environment namespace>
# first i set my org and token
$orgUrl = "https://dev.azure.com/<MYORG>"
$personalToken = "<MY_PERSONAL_TOKE>"
$projectName = "<my_project>"

# login using PAT
$personalToken | az devops login --organization $orgUrl

# set default organisation
az devops configure --defaults organization=$orgUrl

# get the group descriptor ID for the group "build administrators"
$id = az devops security group list --project $projectName --output json --query "graphGroups[?displayName == '$groupID'].descriptor | [0]" -o tsv --verbose

# now i want to add permissions for the group "build administrators"
# but i am not sure what the token should be and what permission bits to use

我运行以下命令来查看该组的权限列表。它返回一些令牌,但它们对我没有意义。我怎么知道哪个令牌用于什么权限。例如,我怎么知道哪个令牌用于“删除团队项目”权限

az devops security permission list --namespace-id $envnamespace --subject $id 

接下来的目标是运行以下命令来更新权限

az devops security permission update --namespace-id $envnamespace --subject $id --token $token2 --allow-bit 4 deny-bit 1 --verbose

--allow-bit 和deny-bit 我不确定应该将权限设置为deny

任何有关正确方法的建议将不胜感激。

【问题讨论】:

【参考方案1】:

我如何知道哪个令牌用于“删除团队项目”权限

运行az devops security permission namespace list,“Delete Team Project”的namespaceID在“Project”namespace下。

您可以获取特定Delete Team Project 命名空间的bitnamespaceID(参考见下图)。

我怎么知道哪个令牌用于什么权限

代币详情可以参考Security tokens for permissions management,上面列出了Token examples for different namespaces。

另一个示例供您参考(参考jessehouwing's blog):

az login
az extension add --name "azure-devops"

# Find the group identifier of the group you want to set permissions for

$org = "gdbc2019-westeurope"

# There is a weird edge case here when an Azure DevOps Organization has a Team Project with the same name as the org.
# In that case you must also add a query to filter on the right domain property `?@.domain == '?'`  

$subject = az devops security group list `
    --org "https://dev.azure.com/$org/" `
    --scope organization `
    --subject-types vssgp `
    --query "graphGroups[?@.principalName == '[$org]\Project Collection Administrators'].descriptor | [0]"

$namespaceId = az devops security permission namespace list `
    --org "https://dev.azure.com/$org/" `
    --query "[?@.name == 'Git Repositories'].namespaceId | [0]"

$bit = az devops security permission namespace show `
    --namespace-id $namespaceId `
    --org "https://dev.azure.com/$org/" `
    --query "[0].actions[?@.name == 'PullRequestBypassPolicy'].bit | [0]"

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

【讨论】:

您知道如何将组添加到迭代中吗?我想在迭代中授予组权限。一旦我添加了权限,我就有更新权限的命令,但我不确定使用哪个 CLI 命令将组添加到迭代中。仅供参考,我指的是当您右键单击迭代然后单击安全性然后添加组(在 webui 中)

以上是关于使用 Azure DevOps CLI 分配组权限的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps - 部署组的权限问题

Azure DevOps:授予组织级别组的权限,以便能够为所有现有项目做出贡献

通过Rest API或客户端DLL创建具有'Contributors'类的Azure Devops(安全)组,并具有权限

如何在 Azure DevOps 变量组中使用 SecureFile?

Azure DevOps 集合级别自定义组

如何将 Azure DevOps Extension for Azure CLI 与 Azure DevOps Server 一起使用?