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:
- Inicie sesión como su propia cuenta de usuario.
- Cree un grupo de recursos para el sitio web de la empresa.
- 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.
Inicie sesión con su cuenta de usuario
En el ejercicio anterior, ha iniciado sesión con la entidad de servicio y, a continuación, ha cerrado la sesión. Debe volver a iniciar sesión como su propia cuenta de usuario para poder seguir los pasos siguientes 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 siguiente comando:
Connect-AzAccount
En el explorador que se abre, inicie sesión en su cuenta de Azure.
Creación de 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 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. Guárdalo en un lugar seguro. Lo usarás pronto.
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
Examine la salida del comando anterior. Incluye una propiedad denominada
ResourceId
, que es el identificador del grupo de recursos. Guárdalo en un lugar seguro. Lo usarás pronto.
Crear una asignación de roles
Para el pipeline de implementación de tu sitio web, tú decides crear una asignación de roles con los siguientes detalles:
- 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ó 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."
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ó 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."
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 nuevo archivo denominado 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 Guardar archivo>como o seleccionar Ctrl+S en Windows (⌘+S en macOS). Debe acordarse de dónde ha guardado el archivo. Por ejemplo, puede que quiera crear una carpeta de scripts en la que guardarla.
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 marcadores 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 bicep mediante la ejecución del 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 bicep mediante la ejecución del 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 para inspeccionar los resultados de la 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 implementación.
En este caso, se muestran el plan de App Service, la aplicación y la instancia de Application Insights.
Note que no hay nada inusual sobre este despliegue. 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 ejecutando el 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
APPLICATION_ID
marcador de posición 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 ejecutando el 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
APPLICATION_ID
marcador de posición 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
.