Programmgesteuertes Erstellen von MCA-Abonnements in Microsoft Entra-Mandanten

In diesem Artikel erfahren Sie, wie Sie programmgesteuert ein MCA-Abonnement (Microsoft Customer Agreement, Microsoft-Kundenvereinbarung) in verschiedenen Microsoft Entra-Mandanten erstellen. Es kann vorkommen, dass Sie MCA-Abonnements in verschiedenen Microsoft Entra-Mandanten erstellen müssen, die jedoch an ein einzelnes Abrechnungskonto gebunden sind. Beispiele hierfür sind SaaS-Anbieter, die gehostete Kundendienste von internen IT-Diensten trennen möchten oder interne Umgebungen, die über strenge gesetzliche Complianceanforderungen verfügen, wie die Zahlungskartenbranche (Payment Card Industry, PCI).

Der Prozess zum Erstellen eines MCA-Abonnements in verschiedenen Mandanten besteht aus zwei Phasen. Dabei müssen sowohl im Microsoft Entra-Quellmandanten als auch im -Zielmandanten Aktionen ausgeführt werden. In diesem Artikel wird die folgende Terminologie verwendet:

  • Quelle Microsoft Entra ID (source.onmicrosoft.com). Quellmandant, in dem sich das MCA-Abrechnungskonto befindet.
  • Zielcloud Microsoft Entra ID (destination.onmicrosoft.com). Zielmandant, in dem die neuen MCA-Abonnements erstellt werden.

Supportpläne können nicht programmgesteuert erstellt werden. Sie können einen neuen Supportplan kaufen oder ein Upgrade im Azure-Portal durchführen. Navigieren Sie zur Hilfe + Support, und wählen Sie dann oben auf der Seite Auswahl des richtigen Supportplans aus.

Voraussetzungen

Sie müssen bereits über die folgenden Mandanten verfügen:

  • Einen Microsoft Entra-Quellmandanten mit einem aktiven Microsoft-Kundenvereinbarung-Abrechnungskonto. Falls Sie noch kein aktives MCA-Konto besitzen, können Sie es hier erstellen. Weitere Informationen finden Sie unter Azure – Jetzt registrieren.
  • Einen Microsoft Entra-Zielmandanten, der nicht mit dem Mandanten identisch ist, zu dem Ihre Microsoft-Kundenvereinbarung gehört. Informationen zum Erstellen eines Microsoft Entra-Mandanten finden Sie unter Einrichten eines Microsoft Entra-Mandanten.

Einrichten der Anwendungen

Führen Sie die in den folgenden Abschnitten beschriebenen Schritte aus, um die erforderlichen Anwendungen im Quell- und Zielmandanten einzurichten und zu konfigurieren.

Registrieren einer Anwendung im Quellmandanten

Für die programmgesteuerte Erstellung eines MCA-Abonnements müssen Sie eine Microsoft Entra-Anwendung registrieren und ihr die entsprechende Azure RBAC-Berechtigung erteilen. Stellen Sie für diesen Schritt sicher, dass Sie bei dem Quellmandanten (source.onmicrosoft.com) mit einem Konto angemeldet sind, das über Berechtigungen zum Registrieren von Microsoft Entra-Anwendungen verfügt.

Führen Sie die Schritte aus, die unter Schnellstart: Registrieren einer Anwendung bei Microsoft Identity Platform beschrieben sind.

Für diesen Artikel müssen Sie nur die in den Abschnitten Registrieren einer Anwendung und Hinzufügen von Anmeldeinformationen beschriebenen Schritte ausführen.

Speichern Sie die folgenden Informationen, um Ihre Umgebung zu testen und zu konfigurieren:

  • Verzeichnis-ID (Mandant)
  • Anwendungs-ID (Client)
  • Objekt-ID
  • Generierter Wert für das App-Geheimnis. Dieser Wert ist nur zum Zeitpunkt der Erstellung sichtbar.

Erstellen der Zuweisung einer Abrechnungsrolle für die Anwendung im Quellmandanten

Ermitteln Sie mithilfe der Informationen unter Grundlegendes zu Verwaltungsrollen für Microsoft-Kundenvereinbarungen in Azure den passenden Bereich und die gewünschte Abrechnungsrolle für die Anwendung.

Nachdem Sie den Bereich und die Rolle ausgewählt haben, erstellen Sie mithilfe der Informationen unter Verwalten von Abrechnungsrollen im Azure-Portal die Rollenzuweisung für die Anwendung. Suchen Sie mithilfe des Namens, den Sie bei der Registrierung der Anwendung im vorherigen Abschnitt verwendet haben, nach der Anwendung.

Registrieren einer Anwendung im Zielmandanten

Damit Sie das MCA-Abonnement im Zielmandanten (destination.onmicrosoft.com) akzeptieren können, müssen Sie eine Microsoft Entra-Anwendung registrieren und der Microsoft Entra-Rolle „Abrechnungsadministrator“ hinzufügen. Stellen Sie für diesen Schritt sicher, dass Sie bei dem Zielmandanten (destination.onmicrosoft.com) mit einem Konto angemeldet sind, das über Berechtigungen zum Registrieren von Microsoft Entra-Anwendungen verfügt. Es muss zudem über die Rollenberechtigung für Abrechnungsadministratoren verfügen.

Führen Sie die oben zum Registrieren einer Anwendung im Quellmandanten beschriebenen Schritte aus. Speichern Sie die folgenden Informationen, um Ihre Umgebung zu testen und zu konfigurieren:

  • Verzeichnis-ID (Mandant)
  • Anwendungs-ID (Client)
  • Objekt-ID
  • Generierter Wert für das App-Geheimnis. Dieser Wert ist nur zum Zeitpunkt der Erstellung sichtbar.

Hinzufügen der Zielanwendung zur Microsoft Entra-Rolle „Abrechnungsadministrator“

Führen Sie die unter Zuweisen von Administrator- und anderen Rollen zu Benutzern mithilfe von Microsoft Entra ID beschriebenen Schritte aus, um die im vorherigen Abschnitt erstellte Zielanwendung der Microsoft Entra-Rolle „Abrechnungsadministrator“ im Zielmandanten hinzuzufügen.

Programmgesteuertes Erstellen eines Abonnements

Nachdem Sie die erforderlichen Anwendungen und Berechtigungen eingerichtet haben, erstellen Sie mithilfe der folgenden Informationen programmgesteuert Abonnements.

Abrufen der ID des Dienstprinzipals der Zielanwendung

Wenn Sie ein MCA-Abonnement im Quellmandanten erstellen, müssen Sie den Dienstprinzipal oder SPN der Anwendung im Zielmandanten als Besitzer angeben. Rufen Sie die ID mit einer der folgenden Methoden ab. Verwenden Sie bei beiden Methoden für die leere GUID den Wert der Anwendungs-ID (Client-ID) der zuvor erstellten Anwendung im Zielmandanten.

Azure CLI

Melden Sie sich bei der Azure CLI an, und führen Sie den Befehl az ad sp show aus:

az ad sp show --id 00000000-0000-0000-0000-000000000000 --query 'id'

Azure PowerShell

Melden Sie sich bei Azure PowerShell an, und führen Sie das Cmdlet Get-AzADServicePrincipal aus:

Get-AzADServicePrincipal -ApplicationId 00000000-0000-0000-0000-000000000000 | Select-Object -Property Id

Speichern Sie den vom Befehl zurückgegebenen Id-Wert.

Erstellen des Abonnements

Erstellen Sie mithilfe der folgenden Informationen ein Abonnement im Quellmandanten.

Abrufen eines Zugriffstokens für die Quellanwendung

Ersetzen Sie die Platzhalter ({{placeholders}}) durch die tatsächliche Mandanten-ID, Anwendungs-ID (Client-ID) und das App-Geheimnis, die Sie zuvor beim Erstellen der Anwendung im Quellmandanten gespeichert haben.

Rufen Sie die Anforderung auf, und speichern Sie den access_token-Wert aus der Antwort zur Verwendung im nächsten Schritt.

POST https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={{client_id}}&client_secret={{app_secret}}&resource=https%3A%2F%2Fmanagement.azure.com%2F

Abrufen der IDs für das Abrechnungskonto, das Abrechnungsprofil und den Rechnungsabschnitt

Verwenden Sie die Informationen unter "Abrechnungskonten suchen", auf die Sie Zugriff haben , und abschnitte "Abrechnungsprofile und Rechnungen suchen", um Abonnements zu erstellen, um das Abrechnungskonto, das Profil und die Rechnungsabschnitts-IDs abzurufen.

Hinweis

Es wird empfohlen, mithilfe der REST-Methode und dem zuvor abgerufenen Zugriffstoken zu überprüfen, ob die Zuweisung der Abrechnungsrolle für die Anwendung im Abschnitt Einrichten der Anwendungen erfolgreich erstellt wurde.

Erstellen eines Abonnementalias

Mit den IDs für das Abrechnungskonto, das Abrechnungsprofil und den Rechnungsabschnitt verfügen Sie nun über alle Informationen, die Sie zum Erstellen des Abonnements benötigen:

  • {{guid}}: Eine gültige GUID.
  • {{access_token}}: Das zuvor abgerufene Zugriffstoken der Anwendung im Quellmandanten.
  • {{billing_account}}: Die zuvor abgerufene ID des Abrechnungskontos.
  • {{billing_profile}}: Die zuvor abgerufene ID des Abrechnungsprofils.
  • {{invoice_section}}: Die zuvor abgerufene ID des Rechnungsabschnitts.
  • {{destination_tenant_id}}: Die ID des Zielmandanten, die Sie zuvor beim Erstellen der Anwendung im Zielmandanten gespeichert haben.
  • {{destination_service_principal_id}}: Die ID des Dienstprinzipals des Zielmandanten, die Sie zuvor im Abschnitt Abrufen der ID des Dienstprinzipals der Zielanwendung abgerufen haben.

Senden Sie die Anforderung, und notieren Sie sich den Wert des Location-Headers aus der Antwort.

PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01
Authorization: Bearer {{access_token}}
Content-Type: application/json

{
  "properties": {
    "displayName": "{{subscription_name}}",
    "workload": "Production",
    "billingScope": "/billingAccounts/{{billing_account}}/billingProfiles/{{billing_profile}}/invoiceSections/{{invoice_section}}",
    "subscriptionId": null,
    "additionalProperties": {
      "managementGroupId": null,
      "subscriptionTenantId": "{{destination_tenant_id}}",
      "subscriptionOwnerId": "{{destination_service_principal_id}}"
    }
  }
}

Akzeptieren des Abonnementbesitzes

Die letzte Phase des Prozesses besteht darin, den Abonnementbesitz zu akzeptieren.

Abrufen eines Zugriffstokens für die Zielanwendung

Ersetzen Sie die Platzhalter ({{placeholders}}) durch die tatsächliche Mandanten-ID, Anwendungs-ID (Client-ID) und das App-Geheimnis, die Sie zuvor beim Erstellen der Anwendung im Zielmandanten gespeichert haben.

Rufen Sie die Anforderung auf, und speichern Sie den access_token-Wert aus der Antwort zur Verwendung im nächsten Schritt.

POST https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={{client_id}}&client_secret={{app_secret}}&resource=https%3A%2F%2Fmanagement.azure.com%2F

Akzeptieren des Besitzes

Akzeptieren Sie mithilfe der folgenden Informationen den Besitz des Abonnements im Zielmandanten:

  • {{subscription_id}}: ID des Abonnements, das Sie im Abschnitt Erstellen eines Abonnementalias erstellt haben. Diese finden Sie im zuvor notierten Location-Header.
  • {{access_token}}: Zugriffstoken, das Sie im vorherigen Schritt erstellt haben.
  • {{subscription_display_name}}: Anzeigename für das Abonnement in Ihrer Azure-Umgebung.
POST https://management.azure.com/providers/Microsoft.Subscription/subscriptions/{{subscription_id}}/acceptOwnership?api-version=2021-10-01
Authorization: Bearer {{access_token}}
Content-Type: application/json

{
  "properties": {
    "displayName": "{{subscription_display_name}}",
    "managementGroupId": null
  }
}

Nächste Schritte