Freigeben über


Bereitstellen von benutzerdefinierten Richtlinien mit Azure Pipelines

Von Bedeutung

Ab dem 1. Mai 2025 steht Azure AD B2C nicht mehr für neue Kunden zur Verfügung. Weitere Informationen finden Sie in unseren HÄUFIG gestellten Fragen.

Azure Pipelines unterstützt die fortlaufende Integration (Continuous Integration, CI) und die kontinuierliche Bereitstellung (Continuous Delivery, CD), um einen Beliebigen Zielcode ständig und konsistent zu testen, zu erstellen und zu versenden. In diesem Artikel wird beschrieben, wie Sie den Bereitstellungsprozess der benutzerdefinierten Azure Active Directory B2C-Richtlinien (Azure AD B2C) mithilfe von Azure-Pipelines automatisieren.

Von Bedeutung

Bei der Verwaltung von benutzerdefinierten Richtlinien in Azure AD B2C mit Azure Pipelines werden derzeit Vorschau-Vorgänge verwendet, die im /beta-Endpunkt der Microsoft Graph-API zur Verfügung stehen. Die Verwendung dieser APIs in Produktionsanwendungen wird nicht unterstützt. Weitere Informationen finden Sie in der Beta-Endpunktreferenz der Microsoft Graph-REST-API.

Voraussetzungen

Registrieren einer Anwendung für Verwaltungsaufgaben

Sie verwenden das PowerShell-Skript, um die Azure AD B2C-Richtlinien bereitzustellen. Bevor das PowerShell-Skript mit der Microsoft Graph-API interagieren kann, erstellen Sie eine Anwendungsregistrierung in Ihrem Azure AD B2C-Mandanten. Falls noch nicht geschehen, registrieren Sie eine Microsoft Graph-Anwendung.

Für das PowerShell-Skript für den Zugriff auf Daten in MS Graph erteilen Sie der registrierten Anwendung die entsprechenden Anwendungsberechtigungen. In den API-Berechtigungen der App-Registrierung unter >> wurde die Berechtigung Policy.ReadWrite.TrustFramework erteilt.

Konfigurieren eines Azure Repo

Bei einer registrierten Microsoft Graph-Anwendung können Sie ein Repository für Ihre Richtliniendateien konfigurieren.

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an.
  2. Erstellen Sie ein neues Projekt, oder wählen Sie ein vorhandenes Projekt aus.
  3. Navigieren Sie in Ihrem Projekt zu Repos, und wählen Sie Dateien aus.
  4. Wählen Sie ein vorhandenes Repository aus, oder erstellen Sie ein Repository.
  5. Erstellen Sie im Stammverzeichnis Ihres Repositorys einen Ordner mit dem Namen B2CAssets. Fügen Sie Ihre benutzerdefinierten Azure AD B2C-Richtliniendateien zum Ordner "B2CAssets " hinzu.
  6. Erstellen Sie im Stammverzeichnis Ihres Repositorys einen Ordner mit dem Namen Scripts. Erstellen Sie eine PowerShell-DateiDeployToB2C.ps1. Fügen Sie das folgende PowerShell-Skript inDeployToB2C.ps1ein.
  7. Committen und pushen Sie die Änderungen.

Das folgende Skript erwirbt ein Zugriffstoken aus der Microsoft Entra-ID. Mit dem Token ruft das Skript die MS Graph-API auf, um die Richtlinien im Ordner "B2CAssets " hochzuladen. Sie können den Inhalt der Richtlinie auch vor dem Hochladen ändern. Ersetzen Sie beispielsweise tenant-name.onmicrosoft.com durch den Namen Ihres Mandanten.

[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

Konfigurieren von Azure-Pipelines

Nachdem Ihr Repository mit Ihren benutzerdefinierten Richtliniendateien initialisiert und aufgefüllt wurde, können Sie die Releasepipeline einrichten. Führen Sie die folgenden Schritte aus, um eine Pipeline zu erstellen:

  1. Wählen Sie in Ihrem Projekt Pipelines>Releases>Neue Pipeline aus.
  2. Wählen Sie unter Vorlage auswählen die Option Leerer Auftrag und dann Anwenden aus.
  3. Geben Sie einen Phasennamen ein, z. B. DeployCustomPolicies, und schließen Sie den Bereich.
  4. Wählen Sie "Artefakt hinzufügen" aus, und wählen Sie unter "Quelltyp" die Option "Azure Repository" aus.
    1. Wählen Sie für das Projekt Ihr Projekt aus.
    2. Wählen Sie die Quelle (Repository) aus, die den Ordner "Skripts" enthält.
    3. Wählen Sie einen Standardzweig aus, z. B. master.
    4. Übernehmen Sie unter Standardversion die Einstellung Neuestes Element aus dem Standardbranch.
    5. Geben Sie für das Repository einen Quellalias ein, Beispiel: policyRepo.
  5. Wählen Sie Hinzufügen aus.
  6. Benennen Sie die Pipeline um, um ihre Absicht widerzuspiegeln. zum Beispiel Deploy Custom Policy Pipeline.
  7. Wählen Sie "Speichern" aus, um die Pipelinekonfiguration zu speichern.

Konfigurieren von Pipelinevariablen

Die Pipelinevariablen stellen eine bequeme Möglichkeit dar, wichtige Bits von Daten in verschiedene Teile der Pipeline zu übernehmen. Die folgenden Variablen enthalten Informationen zu Ihrer Azure AD B2C-Umgebung.

Name Wert
clientId Anwendungs-ID (Client) der Anwendung, die Sie zuvor registriert haben.
clientSecret Der Wert des geheimen Clientschlüssels , den Sie zuvor erstellt haben.
Ändern Sie den Variablentyp in geheim (wählen Sie das Sperrsymbol aus).
tenantId your-b2c-tenant.onmicrosoft.com, wobei Ihr-b2c-Mandant der Name Ihres Azure AD B2C-Mandanten ist.

Führen Sie die folgenden Schritte aus, um Pipelinevariablen hinzuzufügen:

  1. Wählen Sie in Ihrer Pipeline die Registerkarte "Variablen " aus.
  2. Fügen Sie unter Pipelinevariablen die oben genannte Variable mit ihren Werten hinzu.
  3. Wählen Sie "Speichern" aus, um die Variablen zu speichern.

Hinzufügen von Pipelineaufgaben

Eine Pipelineaufgabe ist ein vorgepacktes Skript, das eine Aktion ausführt. Fügen Sie eine Aufgabe hinzu, die das DeployToB2C.ps1PowerShell-Skript aufruft.

  1. Wählen Sie in der von Ihnen erstellten Pipeline die Registerkarte "Aufgaben " aus.

  2. Wählen Sie den Agent-Auftrag aus, und wählen Sie dann das Pluszeichen (+) aus, um dem Agent-Auftrag eine Aufgabe hinzuzufügen.

  3. Suchen Sie nach PowerShell, und wählen Sie sie aus. Wählen Sie nicht "Azure PowerShell", "PowerShell auf Zielcomputern" oder einen anderen PowerShell-Eintrag aus.

  4. Wählen Sie die neu hinzugefügte PowerShell-Skriptaufgabe aus.

  5. Geben Sie die folgenden Werte für die PowerShell-Skriptaufgabe ein:

    • Aufgabenversion: 2.*

    • Anzeigename: Der Name der Richtlinie, die durch diese Aufgabe hochgeladen werden soll. Beispiel: B2C_1A_TrustFrameworkBase.

    • Typ: Dateipfad

    • Skriptpfad: Wählen Sie die Ellipse (...) aus, navigieren Sie zum Ordner Skripte, und wählen Sie dann die Datei DeployToB2C.ps1 aus.

    • Argumente: Geben Sie das folgende PowerShell-Skript ein.

      -ClientID $(clientId) -ClientSecret $(clientSecret) -TenantId $(tenantId) -Folder $(System.DefaultWorkingDirectory)/policyRepo/B2CAssets/ -Files "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml,ProfileEdit.xml,PasswordReset.xml"
      

      Der -Files Parameter ist eine Kommatrennzeichenliste mit Richtliniendateien, die bereitgestellt werden sollen. Aktualisieren Sie die Liste mit Ihren Richtliniendateien.

      Von Bedeutung

      Stellen Sie sicher, dass die Richtlinien in der richtigen Reihenfolge hochgeladen werden. Zuerst die Basisrichtlinie, dann die Erweiterungsrichtlinie und anschließend die Richtlinien der vertrauenden Seite. Beispiel: TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml.

  6. Wählen Sie "Speichern" aus, um den Agent-Auftrag zu speichern.

Teste deine Pipeline

So testen Sie Ihre Releasepipeline:

  1. Wählen Sie "Pipelines" und dann "Releases" aus.
  2. Wählen Sie die zuvor erstellte Pipeline aus, z. B. DeployCustomPolicies.
  3. Wählen Sie Freigabe erstellen und dann Erstellen aus, um die Freigabe in die Warteschlange einzureihen.

Es sollte ein Benachrichtigungsbanner mit dem Hinweis angezeigt werden, dass eine Freigabe in die Warteschlange gestellt wurde. Um deren Status anzuzeigen, wählen Sie den Link im Benachrichtigungsbanner oder die Freigabe in der Liste auf der Registerkarte Freigaben aus.

Nächste Schritte

Weitere Informationen zu: