Freigeben über


Schnellstart: Bereitstellen einer Bicep-Datei als Dienstprinzipal

In dieser Schnellstartanleitung stellen Sie eine Bicep-Datei bereit, die Microsoft Graph-Ressourcen mithilfe der nur-App-Authentifizierung enthält, auch als nicht interaktive Authentifizierung bezeichnet. Sie können diesen Mechanismus für die Zero-Touch-Bereitstellungsintegration in fortlaufende Integrations- und Ci/CD-Pipelines verwenden.

Informationen zum Bereitstellen mithilfe der delegierten oder interaktiven Authentifizierung finden Sie unter Erstellen einer Bicep-Datei mit Microsoft Graph-Ressourcen.

Wichtig

Microsoft Graph Bicep befindet sich derzeit in DER VORSCHAU. Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Voraussetzungen

Erstellen eines Dienstprinzipals und Zuweisen einer Azure-Rolle

Erstellen Sie den Dienstprinzipal, den Sie später zum Bereitstellen der Bicep-Datei verwenden, während Sie sich noch aus der vorherigen Sitzung bei Azure CLI angemeldet haben.

In dieser Schnellstartanleitung wird der Dienstprinzipal mit einem Anwendungskennwort erstellt, das auch als geheimer Clientschlüssel bezeichnet wird. Weisen Sie außerdem dem Dienstprinzipal die Rolle "Mitwirkender verwalteter Identität" zu, die auf eine Ressourcengruppe festgelegt ist:

Achtung

Diese Schnellstartanleitung verwendet ein Anwendungskennwort nur für Einfachheits- und Testzwecke. Verwenden Sie nicht in Produktionsumgebungen.

# Create a resource group
az group create --name exampleRG --location eastus

# Create a service principal with the Managed Identity Contributor role. Replace {myServicePrincipalName}, {mySubscriptionId}, and {myResourceGroupName} with your values.
az ad sp create-for-rbac --name {myServicePrincipalName} --role "Managed Identity Contributor" --scopes "/subscriptions/{mySubscriptionId}/resourceGroups/{myResourceGroupName}"

Ausgabekonsole:

{
  "appId": "myServicePrincipalId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myOrganizationTenantId"
}

Die Ausgabe enthält den password Schlüssel. Denken Sie unbedingt daran, diesen Wert zu kopieren – er kann nicht abgerufen werden.

Zuweisen von Microsoft Graph-Berechtigungen zum Dienstprinzipal

Verwenden Sie Microsoft Graph PowerShell , um dem Dienstprinzipal die Berechtigung "Group.ReadWrite.All application-only" zu erteilen. Mit der Rolle "Privileged Role Administrator" können Sie sich selbst die Berechtigungen "AppRoleAssignment.ReadWrite.All " und "Application.Read.All " erteilen, um diesen Vorgang auszuführen.

Achtung

Apps, denen die AppRoleAssignment.ReadWrite.All-Berechtigung gewährt wurde, sollten nur von den entsprechenden Benutzern aufgerufen werden. Weitere Informationen finden Sie unter AppRoleAssignment.ReadWrite.All.

# Authenticate to Microsoft Graph
Connect-MgGraph -Scopes "AppRoleAssignment.ReadWrite.All","Application.Read.All"

# Find the service principal created to run the deployment
$mySP = Get-MgServicePrincipalByAppId -AppId "myServicePrincipalId"

# Find the service principal for Microsoft Graph
$graphSP = Get-MgServicePrincipalByAppId -AppId "00000003-0000-0000-c000-000000000000"

# Assign Group.ReadWrite.All app-only permission (id = 62a82d76-70ea-41e2-9197-370581804d09)
New-MgServicePrincipalAppRoleAssignedTo -ResourceId $graphSP.Id -ServicePrincipalId $graphSP.Id -PrincipalId $mySP.Id -AppRoleId "62a82d76-70ea-41e2-9197-370581804d09" 

Melden Sie sich als Dienstprinzipal an, um die Bicep-Datei bereitzustellen.

Melden Sie sich als zuvor erstellter Dienstprinzipal an.

# Sign in with the service principal created earlier. This sample uses the Bash console.
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenantID:appOwnerOrganizationId}" --output tsv)
echo "Using appId $spID in tenant $tenantID"

az login --service-principal --username $spID --password {paste your SP password here} --tenant $tenantID

Wichtig

Wenn Sie die Anzeige Ihres Kennworts in der Konsole vermeiden möchten und az login interaktiv verwenden, können Sie den Befehl read -s in bash nutzen.

read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>

Bereitstellen der Bicep-Datei

Stellen Sie nun die Bicep-Datei mithilfe des Bereichs Ihrer Ressourcengruppe bereit.

az deployment group create --resource-group exampleRG --template-file main.bicep

Hinweis

Aufgrund von Replikationsverzögerungen kann das Hinzufügen der verwalteten Dienstidentität (MANAGED Service Identity, MSI) als Besitzer der Microsoft Entra-Gruppe dazu führen, dass die Bereitstellung fehlschlägt. Warten Sie ein wenig, und stellen Sie dann die gleiche Bicep-Datei erneut bereit.

Bereinigen von Ressourcen

Wenn die Azure-Ressourcen nicht mehr benötigt werden, verwenden Sie das Azure CLI- oder Azure PowerShell-Modul, um die von Ihnen erstellte Ressourcengruppe zu löschen.

Hinweis

Ressourcengruppen sind ein Azure-Konzept und haben keine Auswirkungen auf Microsoft Graph-Ressourcen. Microsoft Graph-Ressourcen müssen mit einer zusätzlichen Anforderung an Microsoft Graph bereinigt werden. Hierfür können Sie Azure CLI oder Azure PowerShell, Microsoft Graph CLI oder Microsoft Graph PowerShell verwenden.

Die folgenden Beispiele zeigen Befehle zum Löschen der Azure-Ressource zuerst die Microsoft Graph-Ressourcen mit Azure CLI und Azure PowerShell.

# Delete the resource group
az group delete --name exampleRG

# Delete the Microsoft Graph group
az rest --method delete --url 'https://graph.microsoft.com/v1.0/groups%28uniqueName=%27myExampleGroup%27%29'

# Delete the client service principal
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:id}" --output tsv)
az ad sp delete --id $spID