Поделиться через


Настройка разрешения представления для группы в перехватчиках служб

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

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

Снимок экрана: страница ServiceHooks без разрешений.

ServiceHooks Идентификатор пространства имен безопасности определяется в разделе "Пространства имен безопасности списка" как cb594ebe-87dd-4fc9-ac2c-6a10a4c92046

Необходимые компоненты

  1. Установите Azure CLI для выполнения az devops команды. Установка Azure CLI

  2. Создайте личный маркер доступа (PAT) для профиля Azure DevOps. Убедитесь, что вы являетесь членом группы "Администратор коллекции проектов" (PCA).

    • Удостоверение (чтение)
    • Graph (чтение)
    • Безопасность (управление)
  3. Войдите в Azure DevOps с помощью az devops login. Если у вас нет az devops расширения, установите его.

    > az devops login
    The command requires the extension azure-devops. Do you want to install it now? The command will continue to run after the extension is installed. (Y/n): Y
    
  4. Вы можете определить организацию как организацию по умолчанию. В противном случае определите --org "https://dev.azure.com/{organization}" для каждой команды.

    az devops configure --defaults organization="https://dev.azure.com/{organization}"
    
  5. Проверьте, можно ли просмотреть список разрешений для вашей организации.

    az devops security permission namespace list --org "https://dev.azure.com/{organization}"
    

Чтение удостоверения группы и маркера разрешений

  1. Найдите дескриптор удостоверения группы.

    > az devops security group list --project ac515e82-560c-4af8-845b-9f7f968d8e7b --output table
    
    Name                                             Descriptor
    -----------------------------------------------  --------------------------------------------------------------------------------------------------------------------------------------------------
    [TEAM FOUNDATION]\EntraServiceHooksRead          aadgp.Uy0xLTktMTU1MTM3NDI0NS0xMjA0NDAwOTY5LTI0MDI5ODY0MTMtMjE3OTQwODYxNi0zLTM5NTQxNzM3ODYtMTUyMTA4MTkyNS0yNTQwNTA4MjYzLTMzNDgxNjQxNjg
    

    Если вы хотите фильтровать по имени группы, можно использовать findstr или grep командовать в командной строке.

  2. Получение маркера разрешений.

    > az devops security permission list --id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 --subject <Group or user descriptor> --output table
    
    Token                                                   Effective Allow    Effective Deny
    ------------------------------------------------------  -----------------  ----------------
    PublisherSecurity                                       0                  0
    PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b  0                  0
    

Обновление разрешения на чтение для перехватчиков служб

  1. Список возможных разрешений, для которые можно определить --allow-bit.

    • Просмотр подписок
    • Изменение подписки
    • Удаление подписок
    • Публикация событий
    > az devops security permission namespace show --id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046
    
    [
      {
        "actions": [
          {
            "bit": 1,
            "displayName": "View Subscriptions",
            "name": "ViewSubscriptions",
            "namespaceId": "cb594ebe-87dd-4fc9-ac2c-6a10a4c92046"
          },
          {
            "bit": 2,
            "displayName": "Edit Subscription",
            "name": "EditSubscriptions",
            "namespaceId": "cb594ebe-87dd-4fc9-ac2c-6a10a4c92046"
          },
          {
            "bit": 4,
            "displayName": "Delete Subscriptions",
            "name": "DeleteSubscriptions",
            "namespaceId": "cb594ebe-87dd-4fc9-ac2c-6a10a4c92046"
          },
          {
            "bit": 8,
            "displayName": "Publish Events",
            "name": "PublishEvents",
            "namespaceId": "cb594ebe-87dd-4fc9-ac2c-6a10a4c92046"
          }
        ],
        "dataspaceCategory": "Default",
        "displayName": "ServiceHooks",
        "elementLength": -1,
        "extensionType": null,
        "isRemotable": true,
        "name": "ServiceHooks",
        "namespaceId": "cb594ebe-87dd-4fc9-ac2c-6a10a4c92046",
        "readPermission": 1,
        "separatorValue": "/",
        "structureValue": 1,
        "systemBitMask": 0,
        "useTokenTranslator": true,
        "writePermission": 7
      }
    
  2. Задайте для группы доступ к представлению . Просмотр подписок ServiceHooks равен 1 для --allow-bit.

    > az devops security permission update --namespace-id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 --subject <Group or user descriptor> --token PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b --allow-bit 1
    
    [
      {
        "acesDictionary": {
          "Microsoft.TeamFoundation.Identity;S-1-9-1551374245-1204400969-2402986413-2179408616-3-3954173786-1521081925-2540508263-3348164168": {
            "allow": 1,
            "deny": 0,
            "descriptor": "Microsoft.TeamFoundation.Identity;S-1-9-1551374245-1204400969-2402986413-2179408616-3-3954173786-1521081925-2540508263-3348164168",
            "extendedInfo": {
              "effectiveAllow": 1
            },
            "resolvedPermissions": [
              {
                "bit": 1,
                "displayName": "View Subscriptions",
                "effectivePermission": "Allow",
                "name": "ViewSubscriptions"
              }
            ]
          }
        },
        "includeExtendedInfo": true,
        "inheritPermissions": true,
        "token": "PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b"
      }
    ]
    
  3. Получите маркер разрешений для просмотра изменений.

    > az devops security permission list --id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 --subject <Group or user descriptor> --output table
    
    Token                                                   Effective Allow    Effective Deny
    ------------------------------------------------------  -----------------  ----------------
    PublisherSecurity                                       0                  0
    PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b  1                  0
    

В следующем примере показано, что пользователь может просматривать подписки на службы.

Снимок экрана: страница ServiceHooks с разрешением.

Сброс разрешений всех перехватчиков службы группы

  • Если вам нужно сбросить все разрешения перехватчиков службы группы или пользователя, можно вызвать reset-all.

    > az devops security permission reset-all --id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 --subject <Group or user descriptor> --token PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b
    
    Are you sure you want to reset all explicit permissions for this user/group and token? (y/n): Y
    true
    
    > az devops security permission list --id cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 --subject <Group or user descriptor> --output table
    Token                                                   Effective Allow    Effective Deny
    ------------------------------------------------------  -----------------  ----------------
    PublisherSecurity                                       0                  0
    PublisherSecurity/ac515e82-560c-4af8-845b-9f7f968d8e7b  0                  0
    
  • В следующем примере показано, что пользователь не может просматривать подписки на перехватчики служб после сброса разрешения.

    Снимок экрана: страница ServiceHooks без разрешения.