Aangepast beleid implementeren met Azure Pipelines
Azure Pipelines ondersteunt continue integratie (CI) en continue levering (CD), zodat u continu en consistent een code kunt testen, ontwikkelen en verzenden naar elk doel. In dit artikel wordt beschreven hoe u het implementatieproces van het aangepaste beleid van Active Directory B2C (Azure AD B2C) automatiseert met behulp van Azure Pipelines.
Belangrijk
Het beheren van Azure AD B2C aangepast beleid met Azure Pipelines maakt momenteel gebruik van preview-bewerkingen die beschikbaar zijn op het Microsoft Graph API /beta
eindpunt. Het gebruik van deze API's in productie-apps wordt niet ondersteund. Zie de naslaginformatie over de bèta-eindpunten van de Microsoft Graph REST API voor meer informatie.
Vereisten
- Voer de stappen in Aan de slag met aangepast beleid in Active Directory B2C uit.
- Als u nog geen DevOps-organisatie hebt gemaakt, maakt u er een door de instructies in Registreren, aanmelden bij Azure DevOps te volgen.
Een toepassing registreren voor beheertaken
U gebruikt PowerShell-script om het Azure AD B2C-beleid te implementeren. Voordat het PowerShell-script kan communiceren met de Microsoft Graph API, maakt u een toepassingsregistratie in uw Azure AD B2C-tenant. Als u dit nog niet hebt gedaan, registreert u een Microsoft Graph-toepassing.
Voor het PowerShell-script voor toegang tot gegevens in MS Graph verleent u de geregistreerde toepassing de relevante toepassingsmachtigingen. De machtiging Microsoft Graph>Policy>Policy.ReadWrite.TrustFramework toegekend binnen de API-machtigingen van de app-registratie.
Een Azure-opslagplaats configureren
Wanneer een Microsoft Graph-toepassing is geregistreerd, kunt u een opslagplaats voor uw beleidsbestanden configureren.
- Meld u aan bij uw Azure DevOps-organisatie.
- Maak een nieuw project of selecteer een bestaand project.
- Navigeer in uw project naar Opslagplaatsen en selecteer Bestanden.
- Selecteer een bestaande opslagplaats of maak er een.
- Maak in de hoofdmap van uw opslagplaats een map met de naam
B2CAssets
. Voeg uw Azure AD B2C aangepaste beleidsbestanden toe aan de map B2CAssets. - Maak in de hoofdmap van uw opslagplaats een map met de naam
Scripts
. Maak een PowerShell-bestand DeployToB2C.ps1. Plak het volgende PowerShell-script in DeployToB2C.ps1. - Wijzigingen Doorvoeren en Pushen.
Het volgende script verkrijgt een toegangstoken van Microsoft Entra id. Met het token roept het script de MS Graph API aan om het beleid te uploaden in de map B2CAssets. U kunt ook de inhoud van het beleid wijzigen voordat u het uploadt. Vervang bijvoorbeeld de tenant-name.onmicrosoft.com
met de naam van uw tenant.
[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
Azure Pipelines configureren
Nu uw opslagplaats is geïnitialiseerd en gevuld met uw aangepaste beleidsbestanden, bent u klaar om de release-pijplijn in te stellen. Voer de volgende stappen uit om een pijplijn te maken:
- Selecteer in uw project Pijplijnen>Releases>Nieuwe pijplijn.
- Selecteer onder Een sjabloon selecteren de optie Lege taak en selecteer Toepassen.
- Voer een Fasenaam in, bijvoorbeeld DeployCustomPolicies, en sluit het deelvenster.
- Selecteer Een artefact toevoegen en selecteer onder Brontype de optie Azure-opslagplaats.
- Selecteer uw project voor het Project.
- Selecteer de Bron (opslagplaats) die de map Scripts bevat.
- Selecteer een Standaardvertakking, bijvoorbeeld master.
- Laat de instelling Standaardversie van De meest recente versie van de standaardvertakking staan.
- Voer een Bronalias in voor de opslagplaats. Bijvoorbeeld policyRepo.
- Selecteer Toevoegen
- Wijzig de naam van de pijplijn zodat deze overeenkomt met de intentie. Bijvoorbeeld Aangepaste beleidspijplijn implementeren.
- Selecteer Opslaan om de pijplijnconfiguratie op te slaan.
Pijplijnvariabelen configureren
De pijplijnvariabelen bieden u een handige manier om belangrijke stukjes gegevens op te halen in verschillende delen van de pijplijn. De volgende variabelen bevatten informatie over uw Azure AD B2C-omgeving.
Name | Waarde |
---|---|
clientId |
Id van de toepassing (client) van de toepassing die u eerder hebt geregistreerd. |
clientSecret |
De waarde van het clientgeheim dat u eerder hebt gemaakt. Wijzig het variabeletype in geheim (selecteer het vergrendelingspictogram). |
tenantId |
your-b2c-tenant.onmicrosoft.com , waarbij uw b2c-tenant de naam is van uw Azure AD B2C-tenant. |
Volg deze stappen om pijplijnvariabelen toe te voegen:
- Selecteer in uw pijplijn het tabblad Variabelen.
- Voeg onder Pijplijnvariabelen de bovenstaande variabele toe met de bijbehorende waarden.
- Selecteer Opslaan om de variabelen op te slaan.
Pijplijntaken toevoegen
Een pijplijntaak is een vooraf verpakt script waarmee een actie wordt uitgevoerd. Voeg een taak toe die het PowerShell-script DeployToB2C.ps1 aanroept.
Selecteer het tabblad Taken in de pijplijn die u hebt gemaakt.
Selecteer Agenttaak en selecteer vervolgens het plusteken (+) om een taak toe te voegen aan de agenttaak.
Zoek en selecteer PowerShell. Selecteer niet 'Azure PowerShell', 'PowerShell op doelmachines' of een andere PowerShell-vermelding.
Selecteer zojuist toegevoegde PowerShell Script-taak.
Voer de volgende waarden in voor de PowerShell-scripttaak:
Taakversie: 2.*
Weergavenaam: de naam van het beleid dat door deze taak moet worden geüpload. Bijvoorbeeld B2C_1A_TrustFrameworkBase.
Type: Bestandspad
Scriptpad: selecteer het beletselteken (...), navigeer naar de map Scripts en selecteer vervolgens het bestand DeployToB2C.ps1.
Argumenten: voer het volgende PowerShell-script in.
-ClientID $(clientId) -ClientSecret $(clientSecret) -TenantId $(tenantId) -Folder $(System.DefaultWorkingDirectory)/policyRepo/B2CAssets/ -Files "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml,ProfileEdit.xml,PasswordReset.xml"
De
-Files
parameter is een lijst met door komma's gescheiden lijst met beleidsbestanden die moeten worden geïmplementeerd. Werk de lijst bij met uw beleidsbestanden.Belangrijk
Zorg ervoor dat de beleidsregels in de juiste volgorde wordt geüpload. Eerst het basisbeleid, het uitbreidingsbeleid en vervolgens het Relying Party-beleid. Bijvoorbeeld
TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml
.
Selecteer Opslaan om de Agenttaak op te slaan.
Test uw pijplijn
Uw release-pijplijn testen:
- Selecteer Pijplijnen en selecteer vervolgens Releases.
- Selecteer de pijplijn die u eerder hebt gemaakt, bijvoorbeeld DeployCustomPolicies.
- Selecteer Release maken en selecteer vervolgens Maken om de release in de wachtrij te plaatsen.
U ziet nu een meldingsbanner met de melding dat er een release in de wachtrij is geplaatst. Als u de status wilt weergeven, selecteert u de koppeling in de meldingsbanner of selecteert u deze in de lijst op het tabblad Releases.
Volgende stappen
Meer informatie over: