GitHub Actions permet d’automatiser des workflows directement depuis un repository Git. Dans cet article, nous allons voir comment créer automatiquement des comptes utilisateurs dans un tenant Microsoft 365 en utilisant PowerShell et Microsoft Graph API.
Cas d’usage : Créer des comptes étudiants pour un environnement de formation sans intervention manuelle. L’idée c’est que je puisse créer 25 comptes utilisateurs dans un Tenant de test automatiquement à chaque nouvelle session de formation.
J’utilise les scripts suivants pour créer les comptes de tests pour les étudiants :
$credential = New-Object System.Management.Automation.PSCredential(
$env:AZURE_CLIENT_ID,
(ConvertTo-SecureString $env:AZURE_CLIENT_SECRET -AsPlainText -Force)
)
Connect-MgGraph -TenantId $env:AZURE_TENANT_ID -ClientSecretCredential $credential -NoWelcome
Vous pouvez éventuellement retrouver une version plus complète des quelques lignes ci-dessus avec des sécurités et des try / catch qui permettent de savoir lorsque la connexion n’aboutit pas.
Si vous n’êtes pas familier de GitHub, les références aux termes : AZURE_CLIENT_SECRET ou encore AZURE_TENANT_ID font référence à des secrets GitHub que vous devez configurer dans votre repository pour que ça fonctionne. C’est le même principe qu’avec un Azure KeyVault – l’idée c’est d’éviter de mettre des logins/mdp/Subscribtion ID/Tenant ID ou autres valeurs secrètes dans le coeur de notre script PowerShell.
$domain = "yourtenant.onmicrosoft.com"
$passwordProfile = @{
Password = $env:SDV_O365_ENTRAID_PASSWORD
ForceChangePasswordNextSignIn = $false
}
for ($i = 1; $i -le 25; $i++) {
$studentNumber = "student{0:D2}" -f $i
New-MgUser -AccountEnabled $false `
-DisplayName $studentNumber `
-MailNickname $studentNumber `
-UserPrincipalName "$studentNumber@$domain" `
-PasswordProfile $passwordProfile `
-UsageLocation "FR"
}
La version ci-dessus ne fait aucun test et si ça plante vous n’aurez aucune information. Par défaut, je vais créer 25 comptes temporaires sur le format student01 jusqu’à student25. Comme précédemment, j’ai préféré mettre le mot de passe par défaut de chaque compte utilisateur dans un GitHub Secret plutôt que directement dans mon script – c’est la référence que j’appelle : SDV_O365_ENTRAID_PASSWORD. Si vous voulez un script plus élaboré et plus complet, personnaliser les attributs pour les comptes, vous pouvez consulter mon script complet en suivant ce lien.
Une fois que vous avez ouvert votre repository dans Visual Studio Code (ou autre logiciel de votre choix) – vous devez respecter l’arborescence suivante pour que votre workflow soit compris par GitHub Action :
A la racine de votre repository GitHub, créez un nouveau fichier avec l’extension .yml. Le fichier doit se trouver dans le dossier suivant .github/workflows de votre repository.
Au sein de votre fichier, insérez le code suivant :
name: Create Test Accounts + Privileges
on:
workflow_dispatch:
jobs:
create-accounts:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install PowerShell modules
shell: pwsh
run: |
Install-Module Microsoft.Graph.Authentication -Force -Scope CurrentUser
Install-Module Microsoft.Graph.Users -Force -Scope CurrentUser
- name: Connect and create accounts
shell: pwsh
env:
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
SDV_O365_ENTRAID_PASSWORD: ${{ secrets.SDV_O365_PASSWORD }}
run: |
Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Users
$secureSecret = ConvertTo-SecureString $env:AZURE_CLIENT_SECRET -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($env:AZURE_CLIENT_ID, $secureSecret)
Connect-MgGraph -TenantId $env:AZURE_TENANT_ID -ClientSecretCredential $credential -NoWelcome
./SDV/Microsoft-365/Accounts-Creation/1-Create-Test-Accounts.ps1
Concrètement qu’est-ce qui se passe avec ce fichier particulier :
Si vous avez tout bien configuré, vous pouvez retourner sur l’interface de GitHub, dans la partie Actions, vous allez retrouver dans la partie à gauche tout en haut le nom de votre workflow automatiquement. Si rien n’apparaît, vérifiez bien l’extension de votre fichier qui doit être en .yml et le bon respect du dossier dans lequel mettre votre fichier : .github/workflows.
Il ne nous reste plus qu’à tester notre workflow – pour cela, vous cliquez dessus et sélectionnez ensuite le bouton « Run workflow« . Par défaut, le déclenchement est manuel mais il est également possible de le planifier sur le même format qu’une tâche cron.
Nous pouvons même suivre l’exécution de notre GitHub action :
Nous voyons que lors de la génération de la VM Linux par GitHub : on commence par installer les modules PowerShell puis ensuite on exécute le script PowerShell qui va créer mes 25 comptes de tests. Si votre fichier PowerShell affiche des Logs alors vous pourrez également les voir pour confirmer la bonne exécution de votre workflow.
L’intérêt de GitHub Actions c’est qu’en plus vous avez plein de crédit inclus avec l’offre gratuite. Je n’ai pas encore eu besoin de payer et je l’utilise pour de nombreux workflows personnels. 👍
GitHub Actions offre une solution puissante pour automatiser la gestion des comptes Microsoft 365 :
Telegram Cocoon : une nouvelle ère pour la sécurité des communications Introduction Telegram Cocoon, une…
Netflix s'offre Warner Bros pour 82,7 milliards de dollars : Un tournant majeur pour le…
Zorin OS atteint un million de téléchargements grâce à Microsoft Introduction Zorin OS, une distribution…
Première série : Stargate SG-1 avec Richard Dean Anderson en héro principale Amazon MGM Studios…
WhatsApp : la fonction multi-comptes arrive enfin... d'abord sur iPhone Après des années de demandes,…
Gmail peut lire vos emails et pièces jointes pour entraîner son IA, sauf si vous…