Övning – Auktorisera tjänstens huvudkonto för distributioner
I föregående övning skapade du ett huvudnamn för tjänsten för webbplatsens distributionspipeline och du testade att du kunde logga in med hjälp av dess nyckel. Nu är du redo att ge tjänsthuvudkontot åtkomst till din Azure-miljö. I den här övningen skapar du en rolltilldelning för tjänstens huvudnamn och distribuerar sedan en Bicep-fil med hjälp av tjänstens huvudnamn.
Under processen gör du följande:
- Logga in som ditt eget användarkonto.
- Skapa en resursgrupp för företagets webbplats.
- Skapa en rolltilldelning för att ge tjänstens princip befogenhet att distribuera resurser till resursgruppen.
- Logga in som tjänstens huvudnamn och distribuera Bicep-filen som skapar företagets webbplatsresurser.
- Verifiera utplaceringen.
- Rensa resursgruppen och tjänstens huvudnamn.
Logga in som ditt användarkonto
I föregående övning loggade du in med tjänstens huvudnamn och loggade sedan ut. Du måste logga in som ditt eget användarkonto igen så att du kan följa med i nästa steg i den här övningen.
Logga in på Azure i Visual Studio Code:s Azure Cloud Shell-terminal (bash) genom att köra följande kommando:
az login
Logga in på ditt Azure-konto i webbläsaren som öppnas.
I Visual Studio Code:s Azure Cloud Shell-terminal (PowerShell) loggar du in på Azure genom att köra följande kommando:
Connect-AzAccount
Logga in på ditt Azure-konto i webbläsaren som öppnas.
Skapa en resursgrupp
Nu ska du skapa en resursgrupp som ska innehålla leksaksföretagets webbplatsresurser.
Kör det här Azure CLI-kommandot i Visual Studio Code-terminalen för att skapa en resursgrupp:
az group create --name ToyWebsite --location eastus
Titta på JSON-utdata från föregående kommando. Den innehåller en egenskap med namnet
id
, vilket är resursgruppens ID. Kopiera den här till ett säkert ställe. Du kommer att använda den snart.
Kör det här Azure PowerShell-kommandot i Visual Studio Code-terminalen för att skapa en resursgrupp:
New-AzResourceGroup -Name ToyWebsite -Location eastus
Titta på utdata från föregående kommando. Den innehåller en egenskap med namnet
ResourceId
, vilket är resursgruppens ID. Kopiera den här till ett säkert ställe. Du kommer att använda den snart.
Skapa en rolltilldelning
För webbplatsens distributionspipeline bestämmer du dig för att skapa en rolltilldelning med följande information:
- Assignee: Service principal som du skapade i föregående övning.
- Roll: Den inbyggda rollen för Deltagare.
- Omfång: Den resursgrupp som du skapade i föregående steg.
Kör följande Azure CLI-kommando i Visual Studio Code-terminalen för att skapa rolltilldelningen. Ersätt platshållarna med de värden som du kopierade tidigare.
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."
Kör följande Azure CLI-kommando i Visual Studio Code-terminalen för att skapa rolltilldelningen. Ersätt platshållarna med de värden som du kopierade tidigare.
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."
Skapa en Bicep-fil
Du har tidigare skapat en Bicep-fil som distribuerar webbplatsens resurser. Här sparar du den här filen så att du kan testa den med hjälp av tjänstens huvudnamn.
Skapa en ny fil med namnet main.bicep.
Lägg till följande innehåll i filen main.bicep. Du kommer snart att distribuera mallen.
@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 } ] } } }
Spara ändringarna i filen. Du kan antingen välja Fil>Spara som eller välja Ctrl+S- i Windows (⌘+S på macOS). Kom ihåg var du har sparat filen. Du kanske till exempel vill skapa en skript mapp för att spara den.
Distribuera Bicep-filen med tjänstens huvudnamn
Du har för närvarande ingen distributionspipeline, så du simulerar vad en pipeline gör för att distribuera Bicep-filen.
Kör följande Azure CLI-kommando i Visual Studio Code-terminalen för att logga in med tjänstens huvudnamns autentiseringsuppgifter. Ersätt platshållarna med de värden som du kopierade i föregående övning.
az login --service-principal \ --username APPLICATION_ID \ --password SERVICE_PRINCIPAL_KEY \ --tenant TENANT_ID
Distribuera Bicep-filen genom att köra följande Azure CLI-kommando:
az deployment group create \ --resource-group ToyWebsite \ --template-file main.bicep
Implementeringen kan ta en minut eller två att slutföra, och då visas en lyckad implementering.
Kör följande Azure PowerShell-kommando i Visual Studio Code-terminalen för att på ett säkert sätt fråga dig om tjänstens huvudnamns autentiseringsuppgifter. Använd tjänstens huvudmännens applikations-ID och nyckel från föregående övning för användarnamn respektive lösenord.
$credential = Get-Credential
Kör följande Azure PowerShell-kommando i Visual Studio Code-terminalen för att logga in med tjänstens huvudnamns autentiseringsuppgifter. Ersätt platshållaren
TENANT_ID
med det värde som du kopierade tidigare.Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
Distribuera Bicep-filen genom att köra följande Azure PowerShell-kommando:
New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
Implementeringen kan ta en minut eller två att slutföra, och sedan ser du en lyckad implementering.
Verifiera driftsättningen
Använd Azure-portalen för att inspektera de resurser som du distribuerade och för att granska resultatet av distributionen.
Gå till Azure-portalen.
I den vänstra rutan väljer du Resursgrupper.
Välj ToyWebsite.
Välj Distributioner för att se den lyckade distributionen.
Du kan också se en distribution med namnet Failure-Anomalies-Alert-Rule-Deployment. Application Insights skapar den här distributionen automatiskt.
Välj den huvuddistributionen för att se vilka resurser som distribuerades och expandera sedan Distributionsinformation.
I det här fallet visas App Service-planen, appen och Application Insights-instansen.
Observera att det inte finns något ovanligt med den här distributionen. Även om ett huvudnamn för tjänsten initierade det är det precis som alla andra Bicep-distributioner.
Rensa resursgruppen och tjänstens huvudnamn
Du har framgångsrikt skapat ett tjänstehuvudnamn och rolltilldelning, och du har distribuerat webbplatsens resurser med hjälp av en Bicep-fil. Nu kan du ta bort de resurser som du skapade.
Logga ut från tjänstehuvudkontots konto med hjälp av följande kommando:
az logout
Logga in på Azure igen med ditt eget användarkonto genom att köra följande kommando:
az login
Logga in på ditt Azure-konto i webbläsaren som öppnas.
Kör följande Azure CLI-kommando för att ta bort resursgruppen, dess innehåll och rolltilldelningen:
az group delete --name ToyWebsite
När du uppmanas att bekräfta anger du
y
.Kör följande kommando för att ta bort tjänstens huvudnamn. Ersätt platshållaren
APPLICATION_ID
med program-ID:t som du kopierade i föregående övning:az ad sp delete --id APPLICATION_ID
Logga ut från tjänstehuvudkontots konto med hjälp av följande kommando:
Logout-AzAccount
Logga in på Azure igen med ditt eget användarkonto genom att köra följande kommando:
Connect-AzAccount
Logga in på ditt Azure-konto i webbläsaren som öppnas.
Kör följande Azure PowerShell-kommando för att ta bort resursgruppen, dess innehåll och rolltilldelningen:
Remove-AzResourceGroup -Name ToyWebsite
När du uppmanas att bekräfta anger du
y
.Kör följande kommando för att ta bort tjänstens huvudnamn. Ersätt platshållaren
APPLICATION_ID
med program-ID:t som du kopierade i föregående övning:Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
När du uppmanas att bekräfta anger du
y
.