Ejercicio: Creación de una clave y entidad de servicio

Completado

Importante

Para realizar este ejercicio, se necesita una suscripción de Azure propia y puede que se apliquen cargos. Si aún no tiene una suscripción de Azure, cree una cuenta gratuita antes de comenzar.

Antes de crear la canalización de implementación para el sitio web de su empresa de juguetes, deberá crear una entidad de servicio y concederle acceso a su entorno de Azure. En este ejercicio, creará la entidad de servicio que usará para la canalización de implementación.

Durante el proceso, hará lo siguiente:

  • Crear una aplicación, una entidad de servicio y una clave en una sola operación.
  • Manipular la clave de forma segura.
  • Comprobar que la entidad de servicio funciona iniciando sesión en Azure con sus credenciales.

Este ejercicio requiere que tenga permiso para crear aplicaciones y entidades de servicio en el directorio de Microsoft Entra. Si no puede cumplir este requisito con la cuenta de Azure actual, puede obtener una evaluación gratuita y crear una suscripción y un inquilino de Azure. Como alternativa, puede omitir este ejercicio.

Inicio de sesión en Azure

Para trabajar con entidades de servicio en Azure, debe iniciar sesión en la cuenta de Azure desde el terminal de Visual Studio Code.

  1. En el menú Terminal, seleccione Nuevo terminal. Normalmente, la ventana de terminal se abre en la mitad inferior de la pantalla.

    El shell predeterminado suele ser pwsh, como se muestra en el lado derecho de la ventana del terminal.

    Recorte de pantalla de la ventana del terminal de Visual Studio Code, en la que pwsh se muestra como la opción del shell.

  2. Seleccione la lista desplegable Iniciar perfil y, después, Azure Cloud Shell (Bash).

    Recorte de pantalla de la ventana del terminal de Visual Studio Code. Se muestran la lista desplegable del shell del terminal y la opción de menú Azure Cloud Shell (Bash).

    Se abre un nuevo shell.

Inicio de sesión en Azure mediante la CLI de Azure

  1. En el terminal de Visual Studio Code, inicie sesión en Azure mediante el siguiente comando:

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

Para implementar esta plantilla en Azure, inicie sesión en la cuenta de Azure desde el terminal de Visual Studio Code.

  1. En el menú Terminal, seleccione Nuevo terminal. Normalmente, la ventana de terminal se abre en la mitad inferior de la pantalla.

    El shell predeterminado suele ser pwsh, como se muestra en el lado derecho de la ventana del terminal.

    Recorte de pantalla de la ventana del terminal de Visual Studio Code, en la que pwsh se muestra como la opción del shell.

  2. Seleccione la lista desplegable Perfil de inicio y, después, seleccione Azure Cloud Shell (PowerShell).

    Recorte de pantalla de la ventana del terminal de Visual Studio Code. Se muestran la lista desplegable del shell del terminal y la opción de menú Azure Cloud Shell (PowerShell).

    Se abre un nuevo shell.

Inicio de sesión en Azure mediante Azure PowerShell

  1. En el terminal 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 una clave y entidad de servicio

  1. Ejecute este comando de la CLI de Azure en el terminal de Visual Studio Code para crear una nueva entidad de servicio:

    az ad sp create-for-rbac --name ToyWebsitePipeline
    

    Si la CLI de Azure muestra un error que indica que otra aplicación tiene el mismo nombre para mostrar, significa que otra persona que usa el inquilino de Microsoft Entra ha creado una entidad de servicio con el mismo nombre. Cambie el valor --name a algo único. No afectará a cómo se sigue junto con el resto de los ejercicios.

  2. Consulte la salida JSON del comando anterior. Incluye las propiedades siguientes:

    • appId: id. de aplicación de la entidad de servicio.
    • password: clave de la entidad de servicio.
    • tenant: Id. de inquilino de Microsoft Entra.

    Copie estos valores en algún lugar seguro. Los usará en breve.

  1. Ejecute estos comandos de Azure PowerShell en el terminal de Visual Studio Code para crear una entidad de servicio:

    $servicePrincipal = New-AzADServicePrincipal `
      -DisplayName ToyWebsitePipeline
    
  2. Ejecute el siguiente comando para obtener la clave de la entidad de servicio:

    $servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
    
  3. Ejecute el siguiente comando para mostrar el id. de aplicación de la entidad de servicio, la clave y el id. de inquilino de Microsoft Entra:

    Write-Output "Service principal application ID: $($servicePrincipal.AppId)"
    Write-Output "Service principal key: $servicePrincipalKey"
    Write-Output "Your Azure AD tenant ID: $((Get-AzContext).Tenant.Id)"
    

    Copie estos valores en algún lugar seguro. Los usará en breve.

Advertencia

Las salidas de los comandos anteriores contienen la clave de la entidad de servicio. Tenga cuidado al decidir dónde se ejecutan estos comandos. Por ejemplo, no los ejecute en un entorno en el que alguien pueda verlos.

Prueba de la entidad de servicio

Ahora que se ha creado la entidad de servicio, puede iniciar sesión con sus credenciales para comprobar que se ha creado correctamente.

  1. Ejecute este 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 paso anterior.

    az login --service-principal \
      --username APPLICATION_ID \
      --password PASSWORD \
      --tenant TENANT_ID \
      --allow-no-subscriptions
    

    Recuerde incluir el argumento --allow-no-subscriptions. Normalmente, al ejecutar el comando az login, la CLI de Azure busca las suscripciones a Azure a las que puede acceder. A la entidad de servicio aún no se le ha concedido acceso a nada, por lo que debe usar el argumento --allow-no-subscriptions para evitar que la CLI de Azure compruebe la lista de suscripciones y muestre un error.

  2. Compruebe que la salida del comando anterior sea un objeto JSON que incluya una propiedad user con el identificador de aplicación de la entidad de servicio. Esta información indica que la entidad de servicio ha iniciado sesión correctamente.

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

    az logout
    
  1. Ejecute este 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 paso anterior como el nombre de usuario y la contraseña, respectivamente.

    $credential = Get-Credential
    
  2. Ejecute este comando de Azure PowerShell en el terminal de Visual Studio Code para iniciar sesión con las credenciales de la entidad de servicio.

    Connect-AzAccount -ServicePrincipal `
      -Credential $credential `
      -Tenant TENANT_ID
    
  3. Compruebe que la salida del comando anterior incluya una propiedad Account con el identificador de aplicación de la entidad de servicio y un valor de SubscriptionName en blanco. Esta información indica que la entidad de servicio ha iniciado sesión correctamente.

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

    Logout-AzAccount
    

Ahora que tiene una entidad de servicio en funcionamiento, puede pasar a la siguiente fase: autorizarla para acceder a su entorno de Azure.