Übung: Autorisieren Ihres Dienstprinzipals für Bereitstellungen
In der vorherigen Übung haben Sie einen Dienstprinzipal für die Bereitstellungspipeline Ihrer Website erstellt und dann getestet, ob Sie sich mit dem zugehörigen Schlüssel anmelden können. Jetzt können Sie dem Dienstprinzipal Zugriff auf Ihre Azure-Umgebung gewähren. In dieser Übung erstellen Sie eine Rollenzuweisung für den Dienstprinzipal und stellen dann mithilfe des Dienstprinzipals eine Bicep-Datei bereit.
In dem Prozess gehen Sie wie folgt vor:
- Melden Sie sich mit Ihrem eigenen Benutzerkonto an.
- Erstellen Sie eine Ressourcengruppe für die Website Ihres Unternehmens.
- Erstellen Sie eine Rollenzuweisung, um für den Dienstprinzipal das Bereitstellen von Ressourcen in der Ressourcengruppe zuzulassen.
- Melden Sie sich als Dienstprinzipal an, und stellen Sie die Bicep-Datei bereit, mit der die Websiteressourcen Ihres Unternehmens erstellt werden.
- Überprüfen der Bereitstellung
- Bereinigen Sie die Ressourcengruppe und den Dienstprinzipal.
Anmelden mit Ihrem Benutzerkonto
In der vorherigen Übung haben Sie sich mit dem Dienstprinzipal angemeldet und dann wieder abgemeldet. Sie müssen sich erneut mit Ihrem eigenen Benutzerkonto anmelden, damit Sie die nächsten Schritte dieser Übung ausführen können.
Melden Sie sich im Azure Cloud Shell (bash)-Terminal von Visual Studio Code bei Azure an, indem Sie den folgenden Befehl ausführen:
az login
Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.
Melden Sie sich im Azure Cloud Shell (PowerShell)-Terminal von Visual Studio Code bei Azure an, indem Sie den folgenden Befehl ausführen:
Connect-AzAccount
Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.
Erstellen einer Ressourcengruppe
Sie erstellen nun eine Ressourcengruppe, die die Websiteressourcen des Spielzeugunternehmens enthalten soll.
Führen Sie diesen Azure CLI-Befehl im Visual Studio Code-Terminal aus, um eine Ressourcengruppe zu erstellen:
az group create --name ToyWebsite --location eastus
Sehen Sie sich die JSON-Ausgabe des obigen Befehls an. Sie enthält eine Eigenschaft mit dem Namen
id
, bei der es sich um die ID der Ressourcengruppe handelt. Kopieren Sie die ID an einen sicheren Ort. Sie benötigen sie in Kürze.
Führen Sie diesen Azure PowerShell-Befehl im Visual Studio Code-Terminal aus, um eine Ressourcengruppe zu erstellen:
New-AzResourceGroup -Name ToyWebsite -Location eastus
Sehen Sie sich die Ausgabe des obigen Befehls an. Sie enthält eine Eigenschaft mit dem Namen
ResourceId
, bei der es sich um die ID der Ressourcengruppe handelt. Kopieren Sie die ID an einen sicheren Ort. Sie benötigen sie in Kürze.
Erstellen einer Rollenzuweisung
Für die Bereitstellungspipeline Ihrer Website treffen Sie die Entscheidung, eine Rollenzuweisung mit den folgenden Details zu erstellen:
- Zugewiesene Person: Der Dienstprinzipal, den Sie in der vorherigen Übung erstellt haben.
- Rolle: Die integrierte Rolle „Mitwirkender“.
- Bereich: Die Ressourcengruppe, die Sie im vorherigen Schritt erstellt haben.
Führen Sie den folgenden Azure CLI-Befehl im Visual Studio Code-Terminal aus, um die Rollenzuweisung zu erstellen. Ersetzen Sie die Platzhalter durch die zuvor kopierten Werte.
az role assignment create \
--assignee APPLICATION_ID \
--role Contributor \
--scope RESOURCE_GROUP_ID \
--description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."
Führen Sie den folgenden Azure CLI-Befehl im Visual Studio Code-Terminal aus, um die Rollenzuweisung zu erstellen. Ersetzen Sie die Platzhalter durch die zuvor kopierten Werte.
New-AzRoleAssignment `
-ApplicationId APPLICATION_ID `
-RoleDefinitionName Contributor `
-Scope RESOURCE_GROUP_ID `
-Description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."
Erstellen einer Bicep-Datei
Sie haben weiter oben eine Bicep-Datei erstellt, mit der die Ressourcen Ihrer Website bereitgestellt werden. Hier speichern Sie diese Datei, damit Sie sie mit dem Dienstprinzipal testen können.
Erstellen Sie eine neue Datei main.bicep.
Fügen Sie der Datei main.bicep den folgenden Inhalt hinzu. Sie werden die Vorlage in Kürze bereitstellen.
@description('The Azure region into which the resources should be deployed.') param location string = resourceGroup().location @description('The name of the App Service app.') param appServiceAppName string = 'toywebsite${uniqueString(resourceGroup().id)}' @description('The name of the App Service plan SKU.') param appServicePlanSkuName string = 'F1' var appServicePlanName = 'toy-website-plan' var applicationInsightsInstanceName = 'toy-website-insights' resource appServicePlan 'Microsoft.Web/serverFarms@2020-06-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource applicationInsightsInstance 'Microsoft.Insights/components@2018-05-01-preview' = { name: applicationInsightsInstanceName location: location kind: 'web' properties: { Application_Type: 'web' } } resource appServiceApp 'Microsoft.Web/sites@2020-06-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { appSettings: [ { name: 'APPINSIGHTS_INSTRUMENTATIONKEY' value: applicationInsightsInstance.properties.InstrumentationKey } { name: 'APPLICATIONINSIGHTS_CONNECTION_STRING' value: applicationInsightsInstance.properties.ConnectionString } ] } } }
Speichern Sie die Änderungen in der Datei. Sie können entweder Datei>Speichern unter oder STRG+S unter Windows (⌘+S unter macOS) auswählen. Merken Sie sich unbedingt den Speicherort der Datei. Sie können dazu beispielsweise einen Ordner scripts (Skripts) erstellen und sie darin speichern.
Bereitstellen der Bicep-Datei mit dem Dienstprinzipal
Da Sie derzeit noch nicht über eine Bereitstellungspipeline verfügen, simulieren Sie die Schritte einer Pipeline zum Bereitstellen Ihrer Bicep-Datei.
Führen Sie den folgenden Azure CLI-Befehl im Visual Studio Code-Terminal aus, um sich mit den Anmeldeinformationen des Dienstprinzipals anzumelden. Ersetzen Sie die Platzhalter durch die Werte, die Sie in der vorherigen Übung kopiert haben.
az login --service-principal \ --username APPLICATION_ID \ --password SERVICE_PRINCIPAL_KEY \ --tenant TENANT_ID
Stellen Sie die Bicep-Datei bereit, indem Sie den folgenden Azure CLI-Befehl ausführen:
az deployment group create \ --resource-group ToyWebsite \ --template-file main.bicep
Das Fertigstellen der Bereitstellung kann einige Minuten dauern. Anschließend wird eine erfolgreiche Bereitstellung angezeigt.
Führen Sie den folgenden Azure PowerShell-Befehl im Visual Studio Code-Terminal aus, damit Sie auf sichere Weise zum Eingeben der Anmeldeinformationen des Dienstprinzipals aufgefordert werden. Verwenden Sie die Anwendungs-ID und den Schlüssel des Dienstprinzipals aus der vorherigen Übung als Benutzername bzw. Kennwort.
$credential = Get-Credential
Führen Sie den folgenden Azure PowerShell-Befehl im Visual Studio Code-Terminal aus, um sich mit den Anmeldeinformationen des Dienstprinzipals anzumelden. Ersetzen Sie den Platzhalter
TENANT_ID
durch den zuvor kopierten Wert.Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
Stellen Sie die Bicep-Datei bereit, indem Sie den folgenden Azure PowerShell-Befehl ausführen:
New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
Das Fertigstellen der Bereitstellung kann einige Minuten dauern. Anschließend wird eine erfolgreiche Bereitstellung angezeigt.
Überprüfen der Bereitstellung
Verwenden Sie das Azure-Portal, um die von Ihnen bereitgestellten Ressourcen und die Ergebnisse der einzelnen Bereitstellungen zu untersuchen.
Öffnen Sie das Azure-Portal.
Wählen Sie im linken Bereich Ressourcengruppen aus.
Wählen Sie die Option ToyWebsite aus.
Wählen Sie Bereitstellungen aus, um die erfolgreiche Bereitstellung anzuzeigen.
Unter Umständen wird auch eine Bereitstellung mit dem Namen Failure-Anomalies-Alert-Rule-Deployment angezeigt. Diese Bereitstellung wird von Application Insights automatisch erstellt.
Wählen Sie die Hauptbereitstellung aus, um anzuzeigen, welche Ressourcen bereitgestellt wurden, und klappen Sie dann Bereitstellungsdetails aus.
In diesem Fall sind der App Service-Plan, die App und die Application Insights-Instanz aufgelistet.
Beachten Sie, dass an dieser Bereitstellung nichts ungewöhnlich ist. Obwohl sie von einem Dienstprinzipal initiiert wurde, unterscheidet sie sich nicht von anderen Bicep-Bereitstellungen.
Bereinigen der Ressourcengruppe und des Dienstprinzipals
Sie haben erfolgreich einen Dienstprinzipal und eine Rollenzuweisung erstellt und die Ressourcen Ihrer Website mit einer Bicep-Datei bereitgestellt. Nun können Sie die von Ihnen erstellten Ressourcen entfernen.
Melden Sie sich mit dem folgenden Befehl vom Konto des Dienstprinzipals ab:
az logout
Melden Sie sich mit Ihrem eigenen Benutzerkonto wieder bei Azure an, indem Sie den folgenden Befehl ausführen:
az login
Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.
Führen Sie den folgenden Azure CLI-Befehl aus, um die Ressourcengruppe, ihren Inhalt und die Rollenzuweisung zu löschen:
az group delete --name ToyWebsite
Geben Sie
y
ein, wenn Sie zum Bestätigen aufgefordert werden.Führen Sie den folgenden Befehl aus, um den Dienstprinzipal zu löschen. Ersetzen Sie den Platzhalter
APPLICATION_ID
durch die Anwendungs-ID, die Sie in der vorherigen Übung kopiert haben:az ad sp delete --id APPLICATION_ID
Melden Sie sich mit dem folgenden Befehl vom Konto des Dienstprinzipals ab:
Logout-AzAccount
Melden Sie sich mit Ihrem eigenen Benutzerkonto wieder bei Azure an, indem Sie den folgenden Befehl ausführen:
Connect-AzAccount
Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.
Führen Sie den folgenden Azure PowerShell-Befehl aus, um die Ressourcengruppe, ihren Inhalt und die Rollenzuweisung zu löschen:
Remove-AzResourceGroup -Name ToyWebsite
Geben Sie
y
ein, wenn Sie zum Bestätigen aufgefordert werden.Führen Sie den folgenden Befehl aus, um den Dienstprinzipal zu löschen. Ersetzen Sie den Platzhalter
APPLICATION_ID
durch die Anwendungs-ID, die Sie in der vorherigen Übung kopiert haben:Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
Geben Sie
y
ein, wenn Sie zum Bestätigen aufgefordert werden.