Oefening: uw service-principal autoriseren voor implementaties
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 dat de websitebronnen van uw bedrijf aanmaakt.
- Controleer de implementatie.
- De resourcegroep en service-principal verwijderen.
Log in met 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.
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
Meld u aan bij uw Azure-account in de browser die wordt geopend.
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
Meld u aan bij uw Azure-account in de browser die wordt geopend.
Een resourcegroep maken
U gaat nu een resourcegroep maken die de websiteresources van het speelgoedbedrijf bevat.
Voer deze Azure CLI-opdracht uit in de Visual Studio Code-terminal om een resourcegroep te maken:
az group create --name ToyWebsite --location eastus
Bekijk de JSON-uitvoer van de vorige opdracht. Het bevat een eigenschap met de naam
id
. Dit is de id van de resourcegroep. Kopieer dit ergens veilig. Je gaat het binnenkort gebruiken.
Voer deze Azure PowerShell-opdracht uit in de Visual Studio Code-terminal om een resourcegroep te maken:
New-AzResourceGroup -Name ToyWebsite -Location eastus
Bekijk de uitvoer van de vorige opdracht. Het bevat een eigenschap genaamd
ResourceId
, wat de ID van de resourcegroep is. Kopieer dit ergens veilig. Je gaat het snel gebruiken.
Een roltoewijzing maken
Voor de implementatiepijplijn van uw website besluit u een roltoewijzing te maken met de volgende details:
- Toegewezen aan: de service-principal die u in de vorige oefening hebt gemaakt.
- rol: de ingebouwde rol Inzender.
- Scope: 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.
Maak een nieuw bestand met de naam main.bicep.
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 } ] } } }
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 scripts map 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.
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
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.
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
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 tijdelijke aanduiding
TENANT_ID
door de waarde die u eerder hebt gekopieerd.Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
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.
Ga naar de Azure Portal.
Selecteer in het linkerdeelvenster Resourcegroepen.
Kies ToyWebsite.
Selecteer Deployments om de geslaagde implementatie te zien.
Mogelijk ziet u ook een implementatie met de naam Failure-Anomalies-Alert-Rule-Deployment. Met Application Insights wordt deze implementatie automatisch gemaakt.
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.
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
Je hebt een service-principal en roltoewijzing gemaakt en je hebt de resources van je website gedeployed met behulp van een Bicep-bestand. U kunt nu de resources verwijderen die u hebt gemaakt.
Meld u af bij het account van de service-principal met behulp van de volgende opdracht:
az logout
Meld u weer aan bij Azure met uw eigen gebruikersaccount door de volgende opdracht uit te voeren:
az login
Meld u aan bij uw Azure-account in de browser die wordt geopend.
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
y
in.Voer de volgende opdracht uit om de service-principal te verwijderen. Vervang de tijdelijke aanduiding
APPLICATION_ID
door de toepassings-id die u in de vorige oefening hebt gekopieerd:az ad sp delete --id APPLICATION_ID
Meld je af bij het account van de service-principal met behulp van het volgende commando:
Logout-AzAccount
Meld u weer aan bij Azure met uw eigen gebruikersaccount door de volgende opdracht uit te voeren:
Connect-AzAccount
Meld u aan bij uw Azure-account in de browser die wordt geopend.
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
y
in.Voer de volgende opdracht uit om de service-principal te verwijderen. Vervang de tijdelijke aanduiding
APPLICATION_ID
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
y
in.