Ejercicio: Autorización de la entidad de servicio para implementaciones
En el ejercicio anterior, creó una entidad de servicio para la canalización de implementación del sitio web y probó que podía iniciar sesión con su clave. Ahora está listo para conceder a la entidad de servicio acceso a su entorno de Azure. En este ejercicio, creará una asignación de roles para la entidad de servicio y, a continuación, implementará un archivo de Bicep mediante la entidad de servicio.
Durante el proceso, hará lo siguiente:
- Iniciar sesión con su cuenta de usuario.
- Crear un grupo de recursos para el sitio web.
- Crear una asignación de roles para permitir que la entidad de servicio implemente recursos en el grupo de recursos.
- Iniciar sesión como entidad de servicio e implementar el archivo de Bicep que creará los recursos del sitio web de la empresa.
- Comprobación de la implementación.
- Limpiar el grupo de recursos y la entidad de servicio.
Inicio de sesión con su cuenta de usuario
En el ejercicio anterior, ha iniciado sesión con la entidad de servicio y, a continuación, la ha cerrado. Debe volver a iniciar sesión con su cuenta de usuario para poder realizar los siguientes pasos de este ejercicio.
En el terminal de Azure Cloud Shell (Bash) de Visual Studio Code, inicie sesión en Azure mediante la ejecución del comando siguiente:
az login
En el explorador que se abre, inicie sesión en su cuenta de Azure.
En el terminal de Azure Cloud Shell (PowerShell) de Visual Studio Code, inicie sesión en Azure mediante la ejecución del comando siguiente:
Connect-AzAccount
En el explorador que se abre, inicie sesión en su cuenta de Azure.
Crear un grupo de recursos
Ahora creará un grupo de recursos que contendrá los recursos del sitio web de la empresa de juguetes.
Ejecute este comando de la CLI de Azure en el terminal de Visual Studio Code para crear un nuevo grupo de recursos:
az group create --name ToyWebsite --location eastus
Consulte la salida JSON del comando anterior. Incluye una propiedad denominada
id
, que es el identificador del grupo de recursos. Copie este dato en un lugar seguro. Lo usará más adelante.
Ejecute este comando de Azure PowerShell en el terminal de Visual Studio Code para crear un grupo de recursos:
New-AzResourceGroup -Name ToyWebsite -Location eastus
Veamos la salida del comando anterior. Incluye una propiedad denominada
ResourceId
, que es el identificador del grupo de recursos. Copie este dato en un lugar seguro. Lo usará más adelante.
Crear una asignación de rol
Para la canalización de implementación de su sitio web, decide crear una asignación de roles con los detalles siguientes:
- Usuario asignado: la entidad de servicio que creó en el ejercicio anterior.
- Rol: el rol integrado Colaborador.
- Ámbito: el grupo de recursos que creó en el paso anterior.
Ejecute el siguiente comando de la CLI de Azure en el terminal de Visual Studio Code para crear la asignación de roles. Reemplace los marcadores de posición por los valores que copió antes.
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."
Ejecute el siguiente comando de la CLI de Azure en el terminal de Visual Studio Code para crear la asignación de roles. Reemplace los marcadores de posición por los valores que copió antes.
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."
Creación de un archivo de Bicep
Anteriormente creó un archivo de Bicep que implementa los recursos del sitio web. Aquí, debe guardar este archivo para que pueda probarlo con la entidad de servicio.
Cree un archivo con el nombre main.bicep.
Agregue el siguiente contenido al archivo main.bicep. Implementará la plantilla pronto.
@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 } ] } } }
Guarde los cambios en el archivo. Puede seleccionar Archivo>Guardar como o Ctrl+S en Windows (⌘+S en macOS). Debe acordarse de dónde ha guardado el archivo. Por ejemplo, podría crear una carpeta scripts para guardarlo ahí.
Implementación del archivo de Bicep mediante la entidad de servicio
Actualmente no tiene una canalización de implementación, por lo que simulará lo que hace una canalización para implementar el archivo de Bicep.
Ejecute el siguiente comando de la CLI de Azure en el terminal de Visual Studio Code para iniciar sesión con las credenciales de la entidad de servicio. Reemplace los marcador de posición por los valores que copió en el ejercicio anterior.
az login --service-principal \ --username APPLICATION_ID \ --password SERVICE_PRINCIPAL_KEY \ --tenant TENANT_ID
Implemente el archivo de Bicep ejecutando el siguiente comando de la CLI de Azure:
az deployment group create \ --resource-group ToyWebsite \ --template-file main.bicep
La implementación puede tardar un par de minutos en completarse; después, verá que la implementación se ha realizado correctamente.
Ejecute el siguiente comando de Azure PowerShell en el terminal de Visual Studio Code para solicitar de forma segura las credenciales de la entidad de servicio. Use el identificador de aplicación y la clave de la entidad de servicio del ejercicio anterior como el nombre de usuario y la contraseña, respectivamente.
$credential = Get-Credential
Ejecute el siguiente comando de Azure PowerShell en el terminal de Visual Studio Code para iniciar sesión con las credenciales de la entidad de servicio. Reemplace el marcador de posición
TENANT_ID
por el valor que copió antes.Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
Implemente el archivo de Bicep ejecutando el siguiente comando de Azure PowerShell:
New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
La implementación puede tardar un par de minutos en completarse; después, verá que la implementación se ha realizado correctamente.
Comprobación de la implementación
Use Azure Portal para inspeccionar los recursos que implementó y examinar los resultados de cada implementación.
Vaya a Azure Portal.
En el panel izquierdo, seleccione Grupos de recursos.
Seleccione ToyWebsite.
Seleccione Implementaciones para ver la implementación correcta.
También puede ver una implementación denominada Failure-Anomalies-Alert-Rule-Deployment. Application Insights crea esta implementación automáticamente.
Seleccione la implementación principal para ver qué recursos se implementaron y, a continuación, expanda Detalles de la implementación.
En este caso, se muestran el plan de App Service, la aplicación y la instancia de Application Insights.
Tenga en cuenta que no hay nada inusual sobre esta implementación. Aunque una entidad de servicio la inició, es igual que cualquier otra implementación de Bicep.
Limpieza del grupo de recursos y la entidad de servicio
Ha creado correctamente una entidad de servicio y una asignación de roles, y ha implementado los recursos del sitio web mediante un archivo de Bicep. Ahora puede quitar los recursos que ha creado.
Para cerrar sesión en la cuenta de la entidad de servicio, use el siguiente comando:
az logout
Vuelva a iniciar sesión en Azure con su propia cuenta de usuario mediante la ejecución del siguiente comando:
az login
En el explorador que se abre, inicie sesión en su cuenta de Azure.
Ejecute el siguiente comando de la CLI de Azure para eliminar el grupo de recursos, su contenido y la asignación de roles:
az group delete --name ToyWebsite
Cuando se le pida que confirme, escriba
y
.Ejecute el comando siguiente para eliminar la entidad de servicio. Reemplace el marcador de posición
APPLICATION_ID
por el identificador de aplicación que copió en el ejercicio anterior:az ad sp delete --id APPLICATION_ID
Para cerrar sesión en la cuenta de la entidad de servicio, use el siguiente comando:
Logout-AzAccount
Vuelva a iniciar sesión en Azure con su propia cuenta de usuario mediante la ejecución del siguiente comando:
Connect-AzAccount
En el explorador que se abre, inicie sesión en su cuenta de Azure.
Ejecute el siguiente comando de Azure PowerShell para eliminar el grupo de recursos, su contenido y la asignación de roles:
Remove-AzResourceGroup -Name ToyWebsite
Cuando se le pida que confirme, escriba
y
.Ejecute el comando siguiente para eliminar la entidad de servicio. Reemplace el marcador de posición
APPLICATION_ID
por el identificador de aplicación que copió en el ejercicio anterior:Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
Cuando se le pida que confirme, escriba
y
.