Как перечислить группы / пользователя, у которых есть разрешения на репозиторий проекта с помощью Azure DevOps API?

Aug 17 2020

Я хочу проверить, у кого есть разрешения на доступ к некоторым репозиториям в проекте через REST API. Ссылался на документацию, но ничего не нашел.

Ответы

Dejulia489 Aug 17 2020 at 15:30

Используя модуль AzurePipelinesPS PowerShell, вы можете выполнить следующие команды, чтобы создать отчет о разрешениях и сохранить файл локально. Где _yourSessionName_ - это имя вашей сессии. Чтобы узнать больше об управлении сеансами с помощью AzurePipelinesPS, вы можете просмотреть документацию здесь .

Создать отчет

Создает отчет для репозитория в командном проекте, где _myTeamProjectName_ - это имя вашего командного проекта, а _myRepoName_ - имя вашего репозитория. Этот входной объект можно изменить для создания всех видов отчетов о разрешениях. См. Документацию здесь .

New-APPermissionReport -Session '_yourSessionName_' -InputObject @{
        descriptors = @()
        reportName = 'myFirstPermissionReport'
        resources = @(
            @{
                resourceId = '_myTeamProjectName_/_myRepoName_'
                resourceName = '_myRepoName_'
                resourceType = 'repo'
            }
        )
    }

Вернуть статус отчета

Возвращает информацию об отчете для первого отчета в списке.

$session = '_yourSessionName_' $reports = Get-APPermissionReportList -Session $session Get-APPermissionReport -Session $session -ReportId $reports[0].id 

Сохранить отчет

Сохраняет первый отчет в списке в файл, расположенный по адресу c: \ temp \ myReport.json

$session = '_yourSessionName_'
$reports = Get-APPermissionReportList -Session $session
Save-APPermissionReport -Session $session -ReportId $reports[0].id -OutputPath C:\temp\myReport.json

Если у вас есть какие-либо проблемы с модулем, не стесняйтесь открывать вопрос в проекте AzurePipelinesPS Github.

1 LeoLiu-MSFT Aug 18 2020 at 03:32

Как перечислить группы / пользователя, у которых есть разрешения на репозиторий проекта с помощью Azure DevOps API?

На данный момент я боюсь, что нет такого Rest API, чтобы получить разрешения git repo для каждого пользователя / группы.

Хотя методы перечислены в отчете о разрешениях REST API предварительной версии - список , похоже, что такой REST API еще не реализован полностью:

Надеемся, что этот REST API скоро будет выпущен.

Вы можете проверить эту аналогичную ветку и эту ветку для получения некоторых подробностей.

user2197169 Oct 22 2020 at 20:50

Это упражнение состоит из трех частей, чтобы получить эти отчеты: # Запросить отчет:

 $uri= -join("https://dev.azure.com/", $Account, "/_apis/permissionsreport?api-version=6.1-preview.1")

        $Report=Invoke-RestMethod -Method Post -Uri $uri -Headers @{Authorization=("Basic {0}" -f $auth)} -ContentType "application/json" -Body $body
        $fileUri=-join($Report[0]._Link.href, "?api-version=6.0-preview.1")
        do{
            #Now wait for it to complete:
            sleep -Seconds 45
            $ReportObj=Invoke-RestMethod -Method get -Uri $Fileuri -Headers @{Authorization=("Basic {0}" -f $auth)} -ContentType "application/json" }while($ReportObj.reportStatus -ne "completedSuccessfully" -and $ReportObj.error -eq $null)
       #Now get the report
        $fileUri=-join($Report[0]._downloadLink.href, "?api-version=6.0-preview.1")
        $ReportObj=Invoke-RestMethod -Method get -Uri $Fileuri -Headers @{Authorization=("Basic {0}" -f $auth)} -ContentType "application/json" #because this isn't designed to be read directly like I've done, you have to clean it up: $ReportObj=$ReportObj.Replace("", "") | ConvertFrom-Json

Я обнаружил, что это слишком медленно для моих целей. У меня есть проект с 1300 элементами, которые нужно проверять индивидуально, пока он работает 27 часов, и я ожидаю, что он не будет завершен до этих выходных. Данные ресурса могут быть только одними. он не поддерживает кратные значения, такие как дескриптор. Дескриптор не может обрабатывать больше 70. Ничего из этого не задокументировано.