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 /betaeindpunt. 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

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.

  1. Meld u aan bij uw Azure DevOps-organisatie.
  2. Maak een nieuw project of selecteer een bestaand project.
  3. Navigeer in uw project naar Opslagplaatsen en selecteer Bestanden.
  4. Selecteer een bestaande opslagplaats of maak er een.
  5. 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.
  6. 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.
  7. 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:

  1. Selecteer in uw project Pijplijnen>Releases>Nieuwe pijplijn.
  2. Selecteer onder Een sjabloon selecteren de optie Lege taak en selecteer Toepassen.
  3. Voer een Fasenaam in, bijvoorbeeld DeployCustomPolicies, en sluit het deelvenster.
  4. Selecteer Een artefact toevoegen en selecteer onder Brontype de optie Azure-opslagplaats.
    1. Selecteer uw project voor het Project.
    2. Selecteer de Bron (opslagplaats) die de map Scripts bevat.
    3. Selecteer een Standaardvertakking, bijvoorbeeld master.
    4. Laat de instelling Standaardversie van De meest recente versie van de standaardvertakking staan.
    5. Voer een Bronalias in voor de opslagplaats. Bijvoorbeeld policyRepo.
  5. Selecteer Toevoegen
  6. Wijzig de naam van de pijplijn zodat deze overeenkomt met de intentie. Bijvoorbeeld Aangepaste beleidspijplijn implementeren.
  7. 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:

  1. Selecteer in uw pijplijn het tabblad Variabelen.
  2. Voeg onder Pijplijnvariabelen de bovenstaande variabele toe met de bijbehorende waarden.
  3. 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.

  1. Selecteer het tabblad Taken in de pijplijn die u hebt gemaakt.

  2. Selecteer Agenttaak en selecteer vervolgens het plusteken (+) om een taak toe te voegen aan de agenttaak.

  3. Zoek en selecteer PowerShell. Selecteer niet 'Azure PowerShell', 'PowerShell op doelmachines' of een andere PowerShell-vermelding.

  4. Selecteer zojuist toegevoegde PowerShell Script-taak.

  5. 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.

  6. Selecteer Opslaan om de Agenttaak op te slaan.

Test uw pijplijn

Uw release-pijplijn testen:

  1. Selecteer Pijplijnen en selecteer vervolgens Releases.
  2. Selecteer de pijplijn die u eerder hebt gemaakt, bijvoorbeeld DeployCustomPolicies.
  3. 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: