Esercizio - Autorizzare l'entità servizio per le distribuzioni
Nell'esercizio precedente è stata creata un'entità servizio per la pipeline di distribuzione del sito Web ed è stato verificato che fosse possibile accedere usando la relativa chiave. A questo punto è possibile concedere all'entità servizio l'accesso all'ambiente Azure. In questo esercizio si creerà un'assegnazione di ruolo per l'entità servizio e quindi si distribuirà un file Bicep usando l'entità servizio.
Durante il processo, si eseguiranno queste operazioni:
- Accedere con il proprio account utente.
- Creare un gruppo di risorse per il sito Web dell'azienda.
- Creare un'assegnazione di ruolo per consentire all'entità servizio di distribuire le risorse nel gruppo di risorse.
- Accedere come entità servizio e distribuire il file Bicep che crea le risorse del sito Web dell'azienda.
- Verificare la distribuzione.
- Pulire il gruppo di risorse e l'entità servizio.
Accedere con il proprio account utente
Nell'esercizio precedente è stato eseguito l'accesso usando l'entità servizio e quindi ci si è disconnessi. Per poter eseguire i passaggi successivi di questo esercizio, è necessario accedere di nuovo con il proprio account utente.
Nel terminale Azure Cloud Shell (bash) di Visual Studio Code, accedi ad Azure eseguendo il comando seguente:
az login
Nel browser visualizzato accedere al proprio account Azure.
Nel terminale Azure Cloud Shell (PowerShell) di Visual Studio Code, accedi ad Azure eseguendo il comando seguente:
Connect-AzAccount
Nel browser visualizzato accedere al proprio account Azure.
Creare un gruppo di risorse
A questo punto si creerà un gruppo di risorse che conterrà le risorse del sito Web dell'azienda di giocattoli.
Eseguire questo comando dell'interfaccia della riga di comando di Azure nel terminale di Visual Studio Code per creare un gruppo di risorse:
az group create --name ToyWebsite --location eastus
Esaminare l'output JSON del comando precedente, che include una proprietà denominata
id
, indicante l'ID del gruppo di risorse. Copiarlo e riporlo in un luogo sicuro. Verrà usato tra poco.
Eseguire questo comando di Azure PowerShell nel terminale di Visual Studio Code per creare un gruppo di risorse:
New-AzResourceGroup -Name ToyWebsite -Location eastus
Esaminare l'output del comando precedente, che include una proprietà denominata
ResourceId
, indicante l'ID del gruppo di risorse. Copiarlo e riporlo in un luogo sicuro. Verrà usato tra poco.
Creare un'assegnazione di ruolo
Per la pipeline di distribuzione del sito Web, si decide di creare un'assegnazione di ruolo con i dettagli seguenti:
- Assegnatario: l'entità servizio creata nell'esercizio precedente.
- Ruolo: il ruolo Collaboratore predefinito.
- Ambito: il gruppo di risorse creato nel passaggio precedente.
Eseguire il comando dell'interfaccia della riga di comando di Azure seguente nel terminale di Visual Studio Code per creare l'assegnazione di ruolo. Sostituire i segnaposto con i valori copiati in precedenza.
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."
Eseguire il comando dell'interfaccia della riga di comando di Azure seguente nel terminale di Visual Studio Code per creare l'assegnazione di ruolo. Sostituire i segnaposto con i valori copiati in precedenza.
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."
Creare un file Bicep
In precedenza si è creato un file Bicep che distribuisce le risorse del sito Web. Ora si salverà il file per poterlo testare usando l'entità servizio.
Creare un nuovo file denominato main.bicep.
Aggiungere il contenuto seguente al file main.bicep. Il modello verrà distribuito a breve.
@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 } ] } } }
Salvare le modifiche apportate al file. È possibile selezionare File>Salva con nome oppure premere CTRL+S in Windows (⌘+S in macOS). Assicurarsi di ricordare dove è stato salvato il file. Ad esempio, è possibile creare una cartella scripts in cui salvarlo.
Distribuire il file Bicep usando l'entità servizio
Non è attualmente disponibile una pipeline di distribuzione, quindi si simuleranno le operazioni eseguite da una pipeline per distribuire il file Bicep.
Eseguire il comando dell'interfaccia della riga di comando di Azure seguente nel terminale di Visual Studio Code per accedere usando le credenziali dell'entità servizio. Sostituire i segnaposto con i valori copiati nell'esercizio precedente.
az login --service-principal \ --username APPLICATION_ID \ --password SERVICE_PRINCIPAL_KEY \ --tenant TENANT_ID
Distribuire il file Bicep eseguendo il comando dell'interfaccia della riga di comando di Azure seguente:
az deployment group create \ --resource-group ToyWebsite \ --template-file main.bicep
La distribuzione può richiedere uno o due minuti e al termine verrà visualizzato un messaggio di operazione completata.
Eseguire il comando di Azure PowerShell seguente nel terminale di Visual Studio Code per chiedere in modo sicuro le credenziali dell'entità servizio. Usare l'ID applicazione e la chiave dell'entità servizio dell'esercizio precedente, rispettivamente come nome utente e password.
$credential = Get-Credential
Eseguire il comando di Azure PowerShell seguente nel terminale di Visual Studio Code per accedere usando le credenziali dell'entità servizio. Sostituire il segnaposto
TENANT_ID
con il valore copiato in precedenza.Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
Distribuire il file Bicep eseguendo il comando di Azure PowerShell seguente:
New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
La distribuzione può richiedere uno o due minuti e al termine verrà visualizzato un messaggio di operazione completata.
Verificare la distribuzione
Usare il portale di Azure per esaminare le risorse distribuite e i risultati della distribuzione.
Vai al portale di Azure.
Nel riquadro sinistro selezionare Gruppi di risorse.
Selezionare ToyWebsite.
Seleziona Distribuzioni per visualizzare la corretta distribuzione.
Si potrebbe notare anche una distribuzione denominata Failure-Anomalies-Alert-Rule-Deployment. Application Insights crea automaticamente questa distribuzione.
Seleziona la distribuzione principale per visualizzare le risorse distribuite e quindi seleziona Dettagli della distribuzione per espanderla.
In questo caso, sono elencati il piano di servizio app, l'app e l'istanza di Application Insights.
Si noti che questa distribuzione non ha niente di insolito. Anche se è stata avviata da un'entità servizio, è analoga a qualsiasi altra distribuzione di Bicep.
Pulire il gruppo di risorse e l'entità servizio
Sono state create un'entità servizio e un'assegnazione di ruolo e le risorse del sito Web sono state distribuite usando un file Bicep. È ora possibile rimuovere le risorse create.
Disconnettersi dall'account dell'entità servizio usando il comando seguente:
az logout
Accedere di nuovo ad Azure con il proprio account utente eseguendo il comando seguente:
az login
Nel browser visualizzato accedere al proprio account Azure.
Eseguire il comando dell'interfaccia della riga di comando di Azure seguente per eliminare il gruppo di risorse, il contenuto e l'assegnazione di ruolo:
az group delete --name ToyWebsite
Quando viene chiesta conferma, immettere
y
.Eseguire il comando seguente per eliminare l'entità servizio. Sostituire il segnaposto
APPLICATION_ID
con l'ID applicazione copiato nell'esercizio precedente:az ad sp delete --id APPLICATION_ID
Disconnettersi dall'account dell'entità servizio usando il comando seguente:
Logout-AzAccount
Accedere di nuovo ad Azure con il proprio account utente eseguendo il comando seguente:
Connect-AzAccount
Nel browser visualizzato accedere al proprio account Azure.
Eseguire il comando di Azure PowerShell seguente per eliminare il gruppo di risorse, il contenuto e l'assegnazione di ruolo:
Remove-AzResourceGroup -Name ToyWebsite
Quando viene chiesta conferma, immettere
y
.Eseguire il comando seguente per eliminare l'entità servizio. Sostituire il segnaposto
APPLICATION_ID
con l'ID applicazione copiato nell'esercizio precedente:Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
Quando viene chiesta conferma, immettere
y
.