jam*_*mes 5 permissions command-line-interface azure-devops
我正在尝试使用 cli 向“构建管理员”组分配权限。
我要更新的具体权限是“删除团队项目”权限。

由于信息分散,特别是有关安全令牌和权限位的部分,文档整理起来有点困难。
我正在使用 az devops security 命令。我正在努力解决的部分是获取正确的令牌并设置正确的权限位
我知道我想要使用的名称空间。它是环境命名空间。通过首先检查所有命名空间并找到环境命名空间的 guid 来发现这一点。
#get list of all namespaces
az devops security permission namespace list -o table
$envnamespace = <guid from above command for the environment namespace>
Run Code Online (Sandbox Code Playgroud)
# 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
Run Code Online (Sandbox Code Playgroud)
我运行以下命令来查看列出该组的权限。它返回一些令牌,但它们对我来说没有意义。我如何知道哪个令牌代表什么权限。例如,我如何知道哪个令牌用于“删除团队项目”权限
az devops security permission list --namespace-id $envnamespace --subject $id
Run Code Online (Sandbox Code Playgroud)
接下来的目标是运行以下命令来更新权限
az devops security permission update --namespace-id $envnamespace --subject $id --token $token2 --allow-bit 4 deny-bit 1 --verbose
Run Code Online (Sandbox Code Playgroud)
--allow-bit 和 Deny-bit 我不确定设置拒绝权限到底应该是什么
任何有关正确方法的建议将不胜感激。
我如何知道哪个令牌用于“删除团队项目”权限
运行az devops security permission namespace list,“删除团队项目”的namespaceID在“ Project”命名空间下。
您可以获取特定命名空间的bit和(供参考,请参见下面的屏幕截图)。namespaceIDDelete Team Project
我如何知道哪个令牌代表什么权限
关于token,可以参考权限管理的安全令牌,里面列出了不同命名空间的Token示例。
另一个例子供您参考(参考jessehouwing的博客):
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/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2838 次 |
| 最近记录: |