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 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.
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 brongroep 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
, de id van de resourcegroep. Kopieer dit ergens veilig. U gebruikt het binnenkort.
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 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.
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 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.
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
TENANT_ID
tijdelijke aanduiding 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 Resourcegroepen in het linkerdeelvenster.
Selecteer ToyWebsite.
Selecteer Implementaties 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
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.
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 het volgende in
y
.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
Meld u af bij het account van de service-principal met behulp van de volgende opdracht:
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 het volgende in
y
.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
.