Comment répertorier les groupes / utilisateurs disposant d'autorisations sur le référentiel de projet avec l'API Azure DevOps?

Aug 17 2020

Je souhaite vérifier qui a les autorisations pour accéder à certains des dépôts du projet via l'API REST. J'ai fait référence aux documentations, mais je n'ai rien trouvé.

Réponses

Dejulia489 Aug 17 2020 at 15:30

À l'aide du module AzurePipelinesPS PowerShell, vous pouvez exécuter les commandes suivantes pour créer un rapport d'autorisation et enregistrer le fichier localement. Où _yourSessionName_ est le nom de votre session. Pour en savoir plus sur la gestion de session avec AzurePipelinesPS, vous pouvez consulter la documentation ici .

Créer le rapport

Crée un rapport pour un référentiel dans un projet d'équipe où _myTeamProjectName_ est le nom de votre projet d'équipe et _myRepoName_ est le nom de votre référentiel. Cet objet d'entrée peut être modifié pour créer toutes sortes de rapports d'autorisations. Consultez la documentation ici .

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

Renvoyer l'état du rapport

Renvoie les informations de rapport pour le premier rapport de la liste

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

Enregistrer le rapport

Enregistre le premier rapport de la liste dans un fichier situé dans c: \ temp \ myReport.json

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

Si vous rencontrez des problèmes avec le module, n'hésitez pas à ouvrir un problème sur le projet AzurePipelinesPS Github

1 LeoLiu-MSFT Aug 18 2020 at 03:32

Comment répertorier les groupes / utilisateurs disposant d'autorisations sur le référentiel de projet avec l'API Azure DevOps?

Pour l'instant, j'ai peur qu'il n'y ait pas d'API Rest pour obtenir les autorisations de repo git pour chaque utilisateur / groupe.

Bien que les méthodes sont répertoriées dans la prévisualisation Version Rapport API REST Permissions - Liste , il semble qu'une telle API REST n'a pas encore été pleinement mis en œuvre:

Nous espérons que cette API REST sera bientôt publiée.

Vous pouvez consulter ce fil similaire et ce fil pour quelques détails.

user2197169 Oct 22 2020 at 20:50

Voici un exercice en 3 parties pour obtenir ces rapports: #Request the report:

 $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

J'ai trouvé que c'était trop lent pour mes besoins. J'ai un projet avec 1300 éléments qui doivent être vérifiés individuellement, jusqu'à présent, il fonctionne depuis 27 heures et je m'attends à ce qu'il ne soit pas terminé avant ce week-end. Les données de ressource ne peuvent en être qu'une. il ne prend pas en charge les multiples comme le descripteur. Le descripteur ne peut pas gérer plus de 70. Rien de tout cela n'est documenté.