Skip to main content

Automatiser la gestion des utilisateurs inactifs dans Azure DevOps

· 3 min read
Laurenne Gault

La gestion des utilisateurs sur les plateformes de collaboration et de gestion de projet est cruciale. Parmi ces plateformes, Azure DevOps est largement utilisé pour le suivi des tâches, le contrôle de version, et la gestion de projets.

Cependant, avec l'évolution des équipes et des projets, il peut arriver que certains comptes utilisateurs ne soient plus utilisés. Pour optimiser les ressources et assurer une utilisation efficace des licences, il est nécessaire de détecter et de gérer ces comptes inactifs de manière proactive. C'est là qu'intervient l'automatisation.

Dans cet article, nous allons étudier un script PowerShell conçu pour automatiser la gestion des utilisateurs inactifs dans Azure DevOps. Ce script détecte les utilisateurs qui n'ont pas accédé à Azure DevOps depuis un certain temps et les bascule vers une licence "Stakeholder" s'ils ne sont plus actifs dans le processus de développement. La licence Stakeholder est gratuite mais restreint les actions possibles sur Azure DevOps (pas d'accès aux codes contenus dans Azure Repos par exemple).

Analyse du script

Voici le script permettant la gestion automatique des utilisateurs inactifs :

param (
[Parameter(Mandatory = $true)][String] $user,
[Parameter(Mandatory = $true)][String] $password
)

$env:AZURE_DEVOPS_EXT_PAT = "<TOKEN_PAT_AZUREDEVOPS>"

az login --service-principal -u $user -p $password --tenant "<ID_DU_TENANT>"
az devops configure --defaults organization=<NOM_DE_L_ORGANISATION>

az devops login

$inactiveUsers = New-Object -TypeName 'System.Collections.ArrayList'
$allUsers = az devops user list | ConvertFrom-Json

foreach($au in $allUsers.members)
{
if ((Get-Date $au.dateCreated) -lt (Get-Date).AddMonths(-1)){
if ($au.accessLevel.licenseDisplayName -ne "Stakeholder" -and ($au.lastAccessedDate -eq "0001-01-01T00:00:00+00:00" -or (Get-Date $au.lastAccessedDate) -lt (Get-Date).AddMonths(-1)))
{
$inactiveUsers.Add($au.id)
}
}
}

foreach($iu in $inactiveUsers)
{
Write-Host "The account $iu will be downgraded to Stakeholder licence"
az devops login
az devops user update --license-type stakeholder --user $iu
}

Explication du Script

  1. Paramètres d'entrée: Le script prend deux paramètres en entrée : $user et $password, qui sont respectivement le nom d'utilisateur et le mot de passe pour se connecter à Azure DevOps. Ici, le script se connecte au travers d'un service principal ce qui explique la présence de l'option --service-principal.

  2. Connexion à Azure DevOps : Le script se connecte à Azure DevOps en utilisant les informations d'identification fournies.

  3. Recherche des utilisateurs inactifs : Le script récupère la liste de tous les utilisateurs dans l'organisation Azure DevOps spécifiée. Ensuite, il parcourt chaque utilisateur et vérifie s'ils sont considérés comme inactifs. Un utilisateur est considéré comme inactif s'il a été créé il y a plus d'un mois et s'il n'a pas accédé à Azure DevOps depuis plus d'un mois ou qu'il n'a jamais accédé à Azure DevOps.

  4. Mise à jour des licences : Pour chaque utilisateur inactif trouvé, le script affiche un message indiquant que le compte sera rétrogradé vers une licence "Stakeholder". Ensuite, il met à jour la licence de l'utilisateur pour la rétrograder à une licence "Stakeholder".

Conclusion

L'automatisation de la gestion des utilisateurs inactifs dans Azure DevOps permet aux équipes de maintenir leur environnement de développement propre et efficace. En utilisant ce script PowerShell, les organisations peuvent rationaliser l'utilisation des licences et réduire les coûts associés aux utilisateurs inactifs.