Назначение групповых разрешений с помощью Azure DevOps CLI - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь назначить разрешения для группы "администраторы сборки", используя cli.

Конкретным разрешением, которое я хочу обновить, является разрешение «Удалить командный проект».

Valid XHTML

Документацию немного сложно собрать, поскольку информацияразбросаны, особенно части о токенах безопасности и битах разрешений.

Я использую команду безопасности 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 Ответ

1 голос
/ 14 октября 2019

как узнать, какой токен для разрешения «Удалить командный проект»

Выполнить az devops security permission namespace list, namespaceID для «Удалить командный проект» находится под «Project»пространство имен.

Вы можете получить bit и namespaceID определенного пространства имен Delete Team Project. (См. Снимок экрана ниже)

Как мне узнать, какой токен для каких разрешений

Для токенов вы можете обратиться к Жетонам безопасности для разрешенийдля управления для получения подробной информации, перечислены Примеры токенов для различных пространств имен .

Другой пример для вашей справки (ссылка Блог 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 quury 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/

enter image description here

...