Exercício - Autorizar sua entidade de serviço para implantações
No exercício anterior, você criou uma entidade de serviço para o pipeline de implantação de seu site e fez o teste de que conseguiria entrar usando sua chave. Agora você está pronto para conceder acesso à entidade de serviço ao seu ambiente do Azure. Neste exercício, você criará uma atribuição de função para a entidade de serviço e, em seguida, implantará um arquivo Bicep usando a entidade de serviço.
Durante o processo, você vai:
- Entre usando sua própria conta de usuário.
- Crie um grupo de recursos para o site de sua empresa.
- Crie uma atribuição de função para permitir que a entidade de serviço implante recursos no grupo de recursos.
- Entre com a entidade de serviço e implante o arquivo Bicep que cria os recursos do site da sua empresa.
- Verifique a implantação.
- Limpe o grupo de recursos e a entidade de serviço.
Entre com sua conta de usuário
No exercício anterior, você entrou usando a entidade de serviço e, em seguida, saiu. Você precisa entrar como sua própria conta de usuário novamente para que possa acompanhar as próximas etapas deste exercício.
No terminal Azure Cloud Shell (bash) do Visual Studio Code, entre no Azure executando o seguinte comando:
az login
No navegador que é aberto, entre em sua conta do Azure.
No terminal Azure Cloud Shell (PowerShell) do Visual Studio Code, entre no Azure executando o seguinte comando:
Connect-AzAccount
No navegador que é aberto, entre em sua conta do Azure.
Criar um grupo de recursos
Agora você criará um grupo de recursos para conter os recursos do site da empresa de brinquedos.
Execute este comando da CLI do Azure no terminal do Visual Studio Code para criar um grupo de recursos:
az group create --name ToyWebsite --location eastus
Veja a saída JSON do comando anterior. Ela inclui uma propriedade chamada
id
, que é a ID do grupo de recursos. Copie essa ID em algum lugar seguro. Você a usará em breve.
Execute este comando do Azure PowerShell no terminal do Visual Studio Code para criar um grupo de recursos:
New-AzResourceGroup -Name ToyWebsite -Location eastus
Veja a saída do comando anterior. Ela inclui uma propriedade chamada
ResourceId
, que é a ID do grupo de recursos. Copie essa ID em algum lugar seguro. Você a usará em breve.
Criar uma atribuição de função
Para o pipeline de implantação do site, você decide criar uma atribuição de função com os seguintes detalhes:
- Destinatário: a entidade de serviço que você criou no exercício anterior.
- Função: a função interna de Colaborador.
- Escopo: o grupo de recursos criado na etapa anterior.
Execute o comando da CLI do Azure a seguir no terminal do Visual Studio Code para criar a atribuição de função. Substitua os espaços reservados pelos valores que você copiou anteriormente.
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."
Execute o comando da CLI do Azure a seguir no terminal do Visual Studio Code para criar a atribuição de função. Substitua os espaços reservados pelos valores que você copiou anteriormente.
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."
Criar um arquivo Bicep
Você criou, anteriormente, um arquivo Bicep que implanta os recursos do seu site. Aqui, você salva esse arquivo para que possa testá-lo usando a entidade de serviço.
Crie um arquivo chamado main.bicep.
Adicione o conteúdo a seguir ao arquivo main.bicep. Você implantará o modelo em 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 } ] } } }
Salve as alterações no arquivo. Você pode selecionar Arquivo>Salvar Como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se de onde você salvou o arquivo. Por exemplo, você pode criar uma pasta scripts para salvá-lo.
Implantar o arquivo Bicep usando a entidade de serviço
No momento, você não tem um pipeline de implantação, então, irá simular o que um pipeline faz para implantar o arquivo Bicep.
Execute o seguinte comando da CLI do Azure no terminal do Visual Studio Code para entrar usando as credenciais da entidade de serviço. Substitua os espaços reservados pelos valores que você copiou no exercício anterior.
az login --service-principal \ --username APPLICATION_ID \ --password SERVICE_PRINCIPAL_KEY \ --tenant TENANT_ID
Implante o arquivo Bicep executando o seguinte comando da CLI do Azure:
az deployment group create \ --resource-group ToyWebsite \ --template-file main.bicep
A implantação pode levar alguns minutos para ser concluída, e você verá uma implantação bem-sucedida.
Execute o seguinte comando do Azure PowerShell no terminal do Visual Studio Code para solicitar com segurança as credenciais da entidade de serviço. Use a ID do aplicativo da entidade de serviço e a chave do exercício anterior como nome de usuário e senha, respectivamente.
$credential = Get-Credential
Execute o seguinte comando do Azure PowerShell no terminal do Visual Studio Code para entrar usando as credenciais da entidade de serviço. Substitua o espaço reservado
TENANT_ID
pelo valore que você copiou anteriormente.Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
Implante o arquivo Bicep executando o seguinte comando do Azure PowerShell:
New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
A implantação pode levar alguns minutos para ser concluída, e você verá uma implantação bem-sucedida.
Verificar a implantação
Use o portal do Azure para inspecionar os recursos que você implantou, e para inspecionar os resultados da implantação.
Acesse o portal do Azure.
No painel esquerdo, selecione Grupos de recursos.
Selecione ToyWebsite.
Selecione Implantações para ver se a implantação foi realizada com sucesso.
Você também pode ver uma implantação chamada Failure-Anomalies-Alert-Rule-Deployment. O Application Insights cria essa implantação automaticamente.
Selecione a implantação principal para conferir quais recursos foram implantados e expanda Detalhes da implantação.
Nesse caso, o plano do Serviço de Aplicativo, o aplicativo e a instância do Application Insights são listados.
Observe que não há nada de incomum nessa implantação. Embora tenha sido iniciada por uma entidade de serviço, ela é como qualquer outra implantação do Bicep.
Limpar o grupo de recursos e a entidade de serviço
Você criou com êxito uma entidade de serviço e uma atribuição de função, e implantou os recursos do site usando um arquivo Bicep. Agora você pode remover os recursos que você criou.
Saia da conta da entidade de serviço usando o seguinte comando:
az logout
Entre novamente no Azure com sua própria conta de usuário executando o seguinte comando:
az login
No navegador que é aberto, entre em sua conta do Azure.
Execute o seguinte comando da CLI do Azure para excluir o grupo de recursos, seu conteúdo e a atribuição de função:
az group delete --name ToyWebsite
Quando for solicitada a confirmação, digite
y
.Execute o comando a seguir para excluir a entidade de serviço. Substitua o espaço reservado
APPLICATION_ID
pela ID do aplicativo que você copiou no exercício anterior:az ad sp delete --id APPLICATION_ID
Saia da conta da entidade de serviço usando o seguinte comando:
Logout-AzAccount
Entre novamente no Azure com sua própria conta de usuário executando o seguinte comando:
Connect-AzAccount
No navegador que é aberto, entre em sua conta do Azure.
Execute o seguinte comando do Azure PowerShell para excluir o grupo de recursos, seu conteúdo e a atribuição de função:
Remove-AzResourceGroup -Name ToyWebsite
Quando for solicitada a confirmação, digite
y
.Execute o comando a seguir para excluir a entidade de serviço. Substitua o espaço reservado
APPLICATION_ID
pela ID do aplicativo que você copiou no exercício anterior:Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
Quando for solicitada a confirmação, digite
y
.