Déployer des stratégies personnalisées avec Azure Pipelines
Azure Pipelines prend en charge l’intégration continue (CI) et la livraison continue (CD) pour vous permettre de générer du code, le tester et le publier vers n’importe quelle cible, tout cela de manière constante et cohérente. Cet article explique comment automatiser le processus de déploiement des stratégies personnalisées Azure Active Directory B2C (Azure AD B2C) à l’aide d’Azure Pipelines.
Important
La gestion de stratégies personnalisées Azure AD B2C avec Azure Pipelines utilise actuellement des opérations en préversion disponibles sur le point de terminaison /beta
de l’API Microsoft Graph. L’utilisation de ces API dans les applications de production n’est pas prise en charge. Pour plus d’informations, voir la référence du point de terminaison beta de l’API REST Microsoft Graph.
Prérequis
- Suivez les étapes de l’article Prise en main des stratégies personnalisées dans Azure Active Directory B2C.
- Si vous n’avez pas encore créé d’organisation DevOps, créez-en une en suivant les instructions fournies dans S’inscrire et se connecter à Azure DevOps.
Inscrire une application pour des tâches de gestion
Vous utilisez le script PowerShell pour déployer les stratégies Azure AD B2C. Pour permettre l’interaction du script PowerShell avec l’API Microsoft Graph, créez une inscription d’application dans votre locataire Azure AD B2C. Si vous ne l’avez pas déjà fait, inscrivez une application Microsoft Graph.
Pour permettre au script PowerShell d’accéder aux données dans MS Graph, accordez à l’application inscrite les autorisations d’application qui conviennent. Accordez l’autorisation Microsoft Graph>Stratégie>Policy.ReadWrite.TrustFramework dans Autorisations de l’API de l’inscription d’application.
Configurer un référentiel Azure
Une fois que vous avez une application Microsoft Graph inscrite, vous êtes prêt à configurer un référentiel pour vos fichiers de stratégie.
- Connectez-vous à votre organisation Azure DevOps.
- Créez un projet, ou sélectionnez un projet existant.
- Dans votre projet, accédez à Référentiels, puis sélectionnez Fichiers.
- Sélectionnez un référentiel existant ou créez-en un.
- Dans le répertoire racine de votre référentiel, créez un dossier nommé
B2CAssets
. Ajoutez les fichiers de vos stratégies personnalisées Azure AD B2C dans le dossier B2CAssets. - Dans le répertoire racine de votre référentiel, créez un dossier nommé
Scripts
. Créez un fichier PowerShell appelé DeployToB2C.ps1. Collez le script PowerShell suivant dans le fichier DeployToB2C.ps1. - Commitez et envoyez (push) les changements.
Le script suivant obtient un jeton d’accès auprès de Microsoft Entra ID. Avec le jeton, le script appelle l’API MS Graph pour charger les stratégies dans le dossier B2CAssets. Vous pouvez également modifier le contenu d’une stratégie avant de la charger. Par exemple, remplacez tenant-name.onmicrosoft.com
par le nom de votre locataire.
[Cmdletbinding()]
Param(
[Parameter(Mandatory = $true)][string]$ClientID,
[Parameter(Mandatory = $true)][string]$ClientSecret,
[Parameter(Mandatory = $true)][string]$TenantId,
[Parameter(Mandatory = $true)][string]$Folder,
[Parameter(Mandatory = $true)][string]$Files
)
try {
$body = @{grant_type = "client_credentials"; scope = "https://graph.microsoft.com/.default"; client_id = $ClientID; client_secret = $ClientSecret }
$response = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token -Method Post -Body $body
$token = $response.access_token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Type", 'application/xml')
$headers.Add("Authorization", 'Bearer ' + $token)
# Get the list of files to upload
$filesArray = $Files.Split(",")
Foreach ($file in $filesArray) {
$filePath = $Folder + $file.Trim()
# Check if file exists
$FileExists = Test-Path -Path $filePath -PathType Leaf
if ($FileExists) {
$policycontent = Get-Content $filePath -Encoding UTF8
# Optional: Change the content of the policy. For example, replace the tenant-name with your tenant name.
# $policycontent = $policycontent.Replace("your-tenant.onmicrosoft.com", "contoso.onmicrosoft.com")
# Get the policy name from the XML document
$match = Select-String -InputObject $policycontent -Pattern '(?<=\bPolicyId=")[^"]*'
If ($match.matches.groups.count -ge 1) {
$PolicyId = $match.matches.groups[0].value
Write-Host "Uploading the" $PolicyId "policy..."
$graphuri = 'https://graph.microsoft.com/beta/trustframework/policies/' + $PolicyId + '/$value'
$content = [System.Text.Encoding]::UTF8.GetBytes($policycontent)
$response = Invoke-RestMethod -Uri $graphuri -Method Put -Body $content -Headers $headers -ContentType "application/xml; charset=utf-8"
Write-Host "Policy" $PolicyId "uploaded successfully."
}
}
else {
$warning = "File " + $filePath + " couldn't be not found."
Write-Warning -Message $warning
}
}
}
catch {
Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__
$_
$streamReader = [System.IO.StreamReader]::new($_.Exception.Response.GetResponseStream())
$streamReader.BaseStream.Position = 0
$streamReader.DiscardBufferedData()
$errResp = $streamReader.ReadToEnd()
$streamReader.Close()
$ErrResp
exit 1
}
exit 0
Configure Azure Pipelines
Une fois votre référentiel initialisé et rempli avec vos fichiers de stratégie personnalisés, vous êtes prêt à configurer le pipeline de mise en production. Pour créer un pipeline, procédez comme suit :
- Dans votre projet, sélectionnez Pipelines>Versions>Nouveau pipeline.
- Sous Sélectionner un modèle, sélectionnez Projet vide, puis sélectionnez Appliquer.
- Entrez le Nom de l’étape, par exemple, DeployCustomPolicies, puis fermez le volet.
- Sélectionnez Ajouter un artefact, puis, sous Type de source, choisissez Référentiel Azure.
- Dans Projet, sélectionnez votre projet.
- Sélectionnez la Source (dépôt) qui contient le dossier Scripts.
- Sélectionnez une Branche par défaut, par exemple maître.
- Conservez le paramètre Version par défaut de La dernière de la branche par défaut.
- Entrez un Alias source pour le référentiel. Par exemple, policyRepo.
- Sélectionnez Ajouter
- Renommez le pipeline afin de refléter son intention. Par exemple, Pipeline de déploiement de stratégie personnalisée.
- Sélectionnez Enregistrer pour enregistrer la configuration du pipeline.
Configurer des variables de pipeline
Les variables de pipeline sont pratiques, car elles vous permettent d’injecter des bits de données clés dans différentes parties du pipeline. Les variables suivantes fournissent des informations relatives à votre environnement Azure AD B2C.
Nom | Valeur |
---|---|
clientId |
ID d’application (client) pour l’application que vous avez inscrite. |
clientSecret |
Valeur de la clé secrète client que vous avez créée précédemment. Modifiez le type de variable en secret (sélectionnez l’icône de verrou). |
tenantId |
your-b2c-tenant.onmicrosoft.com , où your-b2c-tenant est le nom de votre locataire Azure AD B2C. |
Pour ajouter des variables de pipeline, effectuez les étapes suivantes :
- Dans votre pipeline, sélectionnez l’onglet Variables.
- Sous Variables de pipeline, ajoutez les variables ci-dessus avec leurs valeurs.
- Sélectionnez Enregistrer pour enregistrer les variables.
Ajouter des tâches de pipeline
Une tâche de pipeline est un script prédéfini qui effectue une action. Ajoutez une tâche qui appelle le script PowerShell DeployToB2C.ps1.
Dans le pipeline que vous avez créé, sélectionnez l’onglet Tâches.
Sélectionnez Travail de l’agent, puis le signe plus (+) pour ajouter une tâche au travail de l’agent.
Recherchez et sélectionnez PowerShell. Ne sélectionnez pas « Azure PowerShell », « PowerShell sur des machines cibles » ou une autre entrée PowerShell.
Sélectionnez la tâche de Script PowerShell que vous venez d’ajouter.
Entrez les valeurs suivantes pour la tâche de Script PowerShell :
Version de la tâche : 2.*
Nom d'affichage : Nom de la stratégie que cette tâche doit charger. Par exemple, B2C_1A_TrustFrameworkBase.
Type : Chemin d'accès au fichier
Chemin du script : Sélectionnez les points de suspension (...), accédez au dossier Scripts et sélectionnez le fichier DeployToB2C.ps1.
Arguments : entrez le script PowerShell suivant.
-ClientID $(clientId) -ClientSecret $(clientSecret) -TenantId $(tenantId) -Folder $(System.DefaultWorkingDirectory)/policyRepo/B2CAssets/ -Files "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml,ProfileEdit.xml,PasswordReset.xml"
Le paramètre
-Files
est une liste délimitée par des virgules des fichiers de stratégie à déployer. Mettez à jour la liste avec vos fichiers de stratégie.Important
Vérifiez que les stratégies sont chargées dans le bon ordre. Tout d’abord, la stratégie de base, la stratégie d’extensions, puis les stratégies de la partie de confiance. Par exemple :
TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml
.
Sélectionnez Enregistrer pour enregistrer le Travail de l’agent.
Tester votre pipeline
Pour tester votre pipeline de mise en production :
- Sélectionnez Pipelines, puis Mises en production.
- Sélectionnez le pipeline précédemment, par exemple DeployCustomPolicies.
- Sélectionnez Créer une mise en production, puis Créer pour mettre en file d’attente la mise en production.
Vous devez voir une bannière de notification indiquant qu’une mise en production a été mise en file d’attente. Pour afficher son état, sélectionnez le lien dans la bannière de notification ou dans la liste sous l’onglet Mises en production.
Étapes suivantes
Pour en savoir plus :