Oefening: uw service-principal autoriseren voor implementaties

Voltooid

In de vorige oefening hebt u een service-principal gemaakt voor de implementatiepijplijn van uw website en u hebt getest dat u zich kunt aanmelden met behulp van de sleutel. U bent nu klaar om de service-principal toegang te verlenen tot uw Azure-omgeving. In deze oefening maakt u een roltoewijzing voor de service-principal en implementeert u vervolgens een Bicep-bestand met behulp van de service-principal.

Tijdens het proces gaat u het volgende doen:

  • Meld u aan als uw eigen gebruikersaccount.
  • Maak een resourcegroep voor de website van uw bedrijf.
  • Maak een roltoewijzing zodat de service-principal resources kan implementeren in de resourcegroep.
  • Meld u aan als de service-principal en implementeer het Bicep-bestand waarmee de websitebronnen van uw bedrijf worden gemaakt.
  • De implementatie controleren.
  • De resourcegroep en service-principal opschonen.

Aanmelden als uw gebruikersaccount

In de vorige oefening hebt u zich aangemeld met behulp van de service-principal en vervolgens afgemeld. U moet zich opnieuw aanmelden als uw eigen gebruikersaccount, zodat u de volgende stappen in deze oefening kunt volgen.

  1. Meld u in de Azure Cloud Shell-terminal (bash) van Visual Studio Code aan bij Azure door de volgende opdracht uit te voeren:

    az login
    
  2. Meld u aan bij uw Azure-account in de browser die wordt geopend.

  1. Meld u in de Azure Cloud Shell-terminal (PowerShell) van Visual Studio Code aan bij Azure door de volgende opdracht uit te voeren:

    Connect-AzAccount
    
  2. Meld u aan bij uw Azure-account in de browser die wordt geopend.

Een brongroep maken

U gaat nu een resourcegroep maken die de websiteresources van het speelgoedbedrijf bevat.

  1. Voer deze Azure CLI-opdracht uit in de Visual Studio Code-terminal om een resourcegroep te maken:

    az group create --name ToyWebsite --location eastus
    
  2. Bekijk de JSON-uitvoer van de vorige opdracht. Het bevat een eigenschap met de naam id, de id van de resourcegroep. Kopieer dit ergens veilig. U gebruikt het binnenkort.

  1. Voer deze Azure PowerShell-opdracht uit in de Visual Studio Code-terminal om een resourcegroep te maken:

    New-AzResourceGroup -Name ToyWebsite -Location eastus
    
  2. Bekijk de uitvoer van de vorige opdracht. Het bevat een eigenschap met de naam ResourceId, de id van de resourcegroep. Kopieer dit ergens veilig. U gebruikt het binnenkort.

Een roltoewijzing maken

Voor de implementatiepijplijn van uw website besluit u een roltoewijzing te maken met de volgende details:

  • Toegewezen: de service-principal die u in de vorige oefening hebt gemaakt.
  • Rol: De ingebouwde rol Inzender.
  • Bereik: De resourcegroep die u in de vorige stap hebt gemaakt.

Voer de volgende Azure CLI-opdracht uit in de Visual Studio Code-terminal om de roltoewijzing te maken. Vervang de tijdelijke aanduidingen door de waarden die u eerder hebt gekopieerd.

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

Voer de volgende Azure CLI-opdracht uit in de Visual Studio Code-terminal om de roltoewijzing te maken. Vervang de tijdelijke aanduidingen door de waarden die u eerder hebt gekopieerd.

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

Een Bicep-bestand maken

U hebt eerder een Bicep-bestand gemaakt waarmee de resources van uw website worden geïmplementeerd. Hier slaat u dit bestand op, zodat u het kunt testen met behulp van de service-principal.

  1. Maak een nieuw bestand met de naam main.bicep.

  2. Voeg de volgende inhoud toe aan het bestand main.bicep . U gaat de sjabloon binnenkort implementeren.

    @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. Sla de wijzigingen in het bestand op. U kunt Bestand>opslaan als selecteren of Ctrl+S selecteren in Windows (⌘+S in macOS). Vergeet niet waar u het bestand hebt opgeslagen. U kunt bijvoorbeeld een map met scripts maken om deze op te slaan in.

Het Bicep-bestand implementeren met behulp van de service-principal

U hebt momenteel geen implementatiepijplijn, dus u simuleert wat een pijplijn doet om uw Bicep-bestand te implementeren.

  1. Voer de volgende Azure CLI-opdracht uit in de Visual Studio Code-terminal om u aan te melden met behulp van de referenties van de service-principal. Vervang de tijdelijke aanduidingen door de waarden die u in de vorige oefening hebt gekopieerd.

    az login --service-principal \
      --username APPLICATION_ID \
      --password SERVICE_PRINCIPAL_KEY \
      --tenant TENANT_ID
    
  2. Implementeer het Bicep-bestand door de volgende Azure CLI-opdracht uit te voeren:

    az deployment group create \
      --resource-group ToyWebsite \
      --template-file main.bicep
    

    Het kan een paar minuten duren voordat de implementatie is voltooid. Vervolgens ziet u een geslaagde implementatie.

  1. Voer de volgende Azure PowerShell-opdracht uit in de Visual Studio Code-terminal om u veilig om de referenties van de service-principal te vragen. Gebruik de toepassings-id en sleutel van de service-principal uit de vorige oefening voor respectievelijk de gebruikersnaam en het wachtwoord.

    $credential = Get-Credential
    
  2. Voer de volgende Azure PowerShell-opdracht uit in de Visual Studio Code-terminal om u aan te melden met behulp van de referenties van de service-principal. Vervang de TENANT_ID tijdelijke aanduiding door de waarde die u eerder hebt gekopieerd.

    Connect-AzAccount -ServicePrincipal `
      -Credential $credential `
      -Tenant TENANT_ID
    
  3. Implementeer het Bicep-bestand door de volgende Azure PowerShell-opdracht uit te voeren:

    New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
    

    Het kan een paar minuten duren voordat de implementatie is voltooid. Vervolgens ziet u een geslaagde implementatie.

De implementatie controleren

Gebruik Azure Portal om de resources te controleren die u hebt geïmplementeerd en om de resultaten van de implementatie te controleren.

  1. Ga naar de Azure-portal.

  2. Selecteer Resourcegroepen in het linkerdeelvenster.

  3. Selecteer ToyWebsite.

  4. Selecteer Implementaties om de geslaagde implementatie te zien.

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

    Mogelijk ziet u ook een implementatie met de naam Failure-Anomalies-Alert-Rule-Deployment. Met Application Insights wordt deze implementatie automatisch gemaakt.

  5. Selecteer de hoofdimplementatie om te zien welke resources zijn geïmplementeerd en vouw vervolgens implementatiedetails uit.

    In dit geval worden het App Service-plan, de app en het Application Insights-exemplaar weergegeven.

    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.

    U ziet dat er niets ongebruikelijks is aan deze implementatie. Hoewel een service-principal deze heeft geïnitieerd, is het net als elke andere Bicep-implementatie.

De resourcegroep en service-principal opschonen

U hebt een service-principal en roltoewijzing gemaakt en u hebt de resources van uw website geïmplementeerd met behulp van een Bicep-bestand. U kunt nu de resources verwijderen die u hebt gemaakt.

  1. Meld u af bij het account van de service-principal met behulp van de volgende opdracht:

    az logout
    
  2. Meld u weer aan bij Azure met uw eigen gebruikersaccount door de volgende opdracht uit te voeren:

    az login
    
  3. Meld u aan bij uw Azure-account in de browser die wordt geopend.

  4. Voer de volgende Azure CLI-opdracht uit om de resourcegroep, de inhoud en de roltoewijzing te verwijderen:

    az group delete --name ToyWebsite
    

    Wanneer u wordt gevraagd om te bevestigen, voert u het volgende in y.

  5. Voer de volgende opdracht uit om de service-principal te verwijderen. Vervang de APPLICATION_ID tijdelijke aanduiding door de toepassings-id die u in de vorige oefening hebt gekopieerd:

    az ad sp delete --id APPLICATION_ID
    
  1. Meld u af bij het account van de service-principal met behulp van de volgende opdracht:

    Logout-AzAccount
    
  2. Meld u weer aan bij Azure met uw eigen gebruikersaccount door de volgende opdracht uit te voeren:

    Connect-AzAccount
    
  3. Meld u aan bij uw Azure-account in de browser die wordt geopend.

  4. Voer de volgende Azure PowerShell-opdracht uit om de resourcegroep, de inhoud en de roltoewijzing te verwijderen:

    Remove-AzResourceGroup -Name ToyWebsite
    

    Wanneer u wordt gevraagd om te bevestigen, voert u het volgende in y.

  5. Voer de volgende opdracht uit om de service-principal te verwijderen. Vervang de APPLICATION_ID tijdelijke aanduiding door de toepassings-id die u in de vorige oefening hebt gekopieerd:

    Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
    

    Wanneer u wordt gevraagd om te bevestigen, voert u het volgende in y.