Como listar os grupos / usuários que têm permissões para o repositório do projeto com a API do Azure DevOps?

Aug 17 2020

Quero verificar quem tem permissão para acessar alguns dos repositórios no projeto por meio da API REST. Eu me referi às documentações, mas não consegui encontrar nada.

Respostas

Dejulia489 Aug 17 2020 at 15:30

Usando o módulo AzurePipelinesPS PowerShell, você pode executar os comandos a seguir para criar um relatório de permissão e salvar o arquivo localmente. Onde _yourSessionName_ é o nome da sua sessão. Para saber mais sobre o gerenciamento de sessão com AzurePipelinesPS, você pode revisar a documentação aqui .

Crie o relatório

Cria um relatório para um repositório em um projeto de equipe onde _myTeamProjectName_ é o nome do seu projeto de equipe e _myRepoName_ é o nome do seu repositório. Este objeto de entrada pode ser modificado para criar todos os tipos de relatórios de permissões. Veja a documentação aqui .

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

Retornar o status do relatório

Retorna as informações do relatório para o primeiro relatório da lista

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

Salve o relatório

Salva o primeiro relatório da lista em um arquivo localizado em c: \ temp \ myReport.json

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

Se você tiver qualquer problema com o módulo, sinta-se à vontade para abrir um problema no projeto AzurePipelinesPS Github

1 LeoLiu-MSFT Aug 18 2020 at 03:32

Como listar os grupos / usuários que têm permissões para o repositório do projeto com a API do Azure DevOps?

Por enquanto, infelizmente não existe uma API Rest para obter permissões de repo do git para cada usuário / grupo.

Embora os métodos estejam listados no Relatório de permissões da API REST da versão de visualização - Lista , parece que essa API REST ainda não foi totalmente implementada:

Esperamos que esta API REST seja lançada em breve.

Você pode verificar este tópico semelhante e este tópico para alguns detalhes.

user2197169 Oct 22 2020 at 20:50

Este é um exercício de 3 partes para obter estes relatórios: # Solicite o relatório:

 $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

Descobri que é muito lento para meus propósitos. Tenho um projeto com 1300 itens que precisam ser verificados individualmente, até o momento está em execução há 27 horas e espero que não seja concluído até este final de semana. Os dados do recurso só podem ser um. ele não suporta múltiplos como o Descritor O descritor não pode lidar com mais de 70. Nada disso está documentado.