Как назначить групповые разрешения для подключений службы Azure DevOps через API?

Я создаю подключения к службам через модуль Terraform Azure DevOps. Это хорошо работает, но в основном они доступны мне, как и те, которые я создаю вручную.

Члены моей группы также должны иметь возможность доступа и изменения этих сервисных соединений, а члены другой команды должны иметь возможность просматривать сервисные соединения. К сожалению, я не нашел способа назначить определенные разрешения для подключения к службе через Azure cli.

Что я сделал до сих пор: мне довольно сложно понять документацию (например, https://docs.microsoft.com/en-us/cli/azure/ext/azure-devops/devops/безопасность/разрешение?view=azure-cli-latest#ext-azure-DevOps-az-DevOps-security-permission-update):

  • Я создал список "пространств имен" с az devops security permission namespace list --organization=https://dev.azure.com/myname. Это дает мне
  {
    "actions": [
      {
        "bit": 1,
        "displayName": "Use Service Connection",
        "name": "Use",
        "namespaceId": "x-x-x-x"
      },
      {
        "bit": 2,
        "displayName": "Administer Service Connection",
        "name": "Administer",
        "namespaceId": "x-x-x-x"
      },
      {
        "bit": 4,
        "displayName": "Create Service Connection",
        "name": "Create",
        "namespaceId": "x-x-x-x"
      },
      {
        "bit": 8,
        "displayName": "View Authorization",
        "name": "ViewAuthorization",
        "namespaceId": "x-x-x-x"
      },
      {
        "bit": 16,
        "displayName": "View Service Connection",
        "name": "ViewEndpoint",
        "namespaceId": "x-x-x-x"
      }
    ],
    "dataspaceCategory": "Default",
    "displayName": "ServiceEndpoints",
    "elementLength": -1,
    "extensionType": null,
    "isRemotable": false,
    "name": "ServiceEndpoints",
    "namespaceId": "x-x-x-x",
    "readPermission": 0,
    "separatorValue": "/",
    "structureValue": 1,
    "systemBitMask": 0,
    "useTokenTranslator": true,
    "writePermission": 2
  },
  • Я создал группу с az devops security group create --name 'Some group name' --description 'Something to describe this group'; это работает, хотя это не группа AAD.
  • Я попытался добавить разрешения для моего коллеги с помощью az devops security permission update --organization=https://dev.azure.com/myname --id="x-x-x-x" --subject="[email protected]", но он запрашивает у меня токен в качестве параметра. Я не могу найти ничего о том, как сгенерировать токен в документации, и я также не знаю, действительно ли это поможет или эта команда является правильной для достижения моей цели.

Есть подсказки?


person hey    schedule 27.05.2020    source источник


Ответы (1)


Токены - это произвольные строки, представляющие ресурсы в Azure DevOps. Формат токена различается в зависимости от типа ресурса, однако символы иерархии и разделители являются общими для всех токенов.

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

Другой пример для справки (см. блог 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 `[email protected] == '?'`  



$subject = az devops security group list `

    --org "https://dev.azure.com/$org/" `

    --scope organization `

    --subject-types vssgp `

    --query "graphGroups[[email protected] == '[$org]\Project Collection Administrators'].descriptor | [0]"



$namespaceId = az devops security permission namespace list `

    --org "https://dev.azure.com/$org/" `

    --query "[[email protected] == 'Git Repositories'].namespaceId | [0]"



$bit = az devops security permission namespace show `

    --namespace-id $namespaceId `

    --org "https://dev.azure.com/$org/" `

    --query "[0].actions[[email protected] == '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/

Кроме того, вы также можете просмотреть шаги в этом аналогичном вопросе: Обновить разрешения для группы Azure DevOps для подписки на события через Azure CLI?

person PatrickLu-MSFT    schedule 28.05.2020