Ejercicio: Autorización de la entidad de servicio para implementaciones

Completado

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.

  1. 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
    
  2. En el explorador que se abre, inicie sesión en su cuenta de Azure.

  1. 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
    
  2. 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.

  1. 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
    
  2. 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.

  1. 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
    
  2. 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.

  1. Cree un nuevo archivo denominado main.bicep.

  2. 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
            }
          ]
        }
      }
    }
    
  3. 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.

  1. 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
    
  2. 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.

  1. 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
    
  2. 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
    
  3. 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.

  1. Vaya a Azure Portal.

  2. En el panel izquierdo, seleccione Grupos de recursos.

  3. Seleccione ToyWebsite.

  4. Seleccione Implementaciones para ver la implementación correcta.

    Captura de pantalla del panel Implementaciones del grupo de recursos de Azure Portal, que muestra 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.

  5. 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.

    Captura de pantalla del panel de información general de implementaciones de Azure Portal para la implementación principal, con un plan y una aplicación de App Service, y una instancia de Application Insights enumerada.

    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.

  1. Para cerrar sesión en la cuenta de la entidad de servicio, use el siguiente comando:

    az logout
    
  2. Vuelva a iniciar sesión en Azure con su propia cuenta de usuario ejecutando el siguiente comando:

    az login
    
  3. En el explorador que se abre, inicie sesión en su cuenta de Azure.

  4. 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.

  5. 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
    
  1. Para cerrar sesión en la cuenta de la entidad de servicio, use el siguiente comando:

    Logout-AzAccount
    
  2. Vuelva a iniciar sesión en Azure con su propia cuenta de usuario ejecutando el siguiente comando:

    Connect-AzAccount
    
  3. En el explorador que se abre, inicie sesión en su cuenta de Azure.

  4. 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.

  5. 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.