Übung: Autorisieren Ihres Dienstprinzipals für Bereitstellungen

Abgeschlossen

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.

  1. 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
    
  2. Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.

  1. 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
    
  2. 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.

  1. 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
    
  2. 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.

  1. Führen Sie diesen Azure PowerShell-Befehl im Visual Studio Code-Terminal aus, um eine Ressourcengruppe zu erstellen:

    New-AzResourceGroup -Name ToyWebsite -Location eastus
    
  2. 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.

  1. Erstellen Sie eine neue Datei main.bicep.

  2. 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
            }
          ]
        }
      }
    }
    
  3. 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.

  1. 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
    
  2. 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.

  1. 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
    
  2. 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
    
  3. 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.

  1. Öffnen Sie das Azure-Portal.

  2. Wählen Sie im linken Bereich Ressourcengruppen aus.

  3. Wählen Sie die Option ToyWebsite aus.

  4. Wählen Sie Bereitstellungen aus, um die erfolgreiche Bereitstellung anzuzeigen.

    Screenshot of the Azure portal resource group Deployments pane, displaying the successful deployment.

    Unter Umständen wird auch eine Bereitstellung mit dem Namen Failure-Anomalies-Alert-Rule-Deployment angezeigt. Diese Bereitstellung wird von Application Insights automatisch erstellt.

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

    Screenshot of the Azure portal deployments overview pane for the main deployment, with an App Service plan and app, and an Application Insights instance listed.

    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.

  1. Melden Sie sich mit dem folgenden Befehl vom Konto des Dienstprinzipals ab:

    az logout
    
  2. Melden Sie sich mit Ihrem eigenen Benutzerkonto wieder bei Azure an, indem Sie den folgenden Befehl ausführen:

    az login
    
  3. Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.

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

  5. 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
    
  1. Melden Sie sich mit dem folgenden Befehl vom Konto des Dienstprinzipals ab:

    Logout-AzAccount
    
  2. Melden Sie sich mit Ihrem eigenen Benutzerkonto wieder bei Azure an, indem Sie den folgenden Befehl ausführen:

    Connect-AzAccount
    
  3. Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.

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

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