Comment répertorier les groupes / utilisateurs disposant d'autorisations sur le référentiel de projet avec l'API Azure DevOps?
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
À 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
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.
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é.