使用 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
命名空间的bit
和namespaceID
(参考见下图)。
我怎么知道哪个令牌用于什么权限
代币详情可以参考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:授予组织级别组的权限,以便能够为所有现有项目做出贡献
通过Rest API或客户端DLL创建具有'Contributors'类的Azure Devops(安全)组,并具有权限
如何在 Azure DevOps 变量组中使用 SecureFile?
如何将 Azure DevOps Extension for Azure CLI 与 Azure DevOps Server 一起使用?