Compartir vía


Autenticación de aplicaciones .NET hospedadas en Azure en recursos de Azure mediante una identidad administrada asignada por el sistema

El enfoque recomendado para autenticar una aplicación hospedada en Azure en otros recursos de Azure es usar una identidad administrada . Este enfoque es compatible con la mayoría de los servicios de Azure, incluidas las aplicaciones hospedadas en Azure App Service, Azure Container Apps y Azure Virtual Machines. Obtenga más información sobre las distintas técnicas y enfoques de autenticación en la página de información general de autenticación . En las secciones siguientes, aprenderá lo siguiente:

  • Conceptos esenciales de identidad administrada
  • Creación de una identidad administrada asignada por el sistema para la aplicación
  • Asignación de roles a la identidad administrada asignada por el sistema
  • Cómo autenticar utilizando la identidad administrada por el sistema asignada desde el código de tu aplicación

Conceptos esenciales de identidad administrada

Una identidad administrada permite a la aplicación conectarse de forma segura a otros recursos de Azure sin el uso de claves secretas u otros secretos de aplicación. Internamente, Azure realiza un seguimiento de la identidad y a qué recursos puede conectarse. Azure usa esta información para obtener automáticamente tokens de Microsoft Entra para la aplicación para permitir que se conecte a otros recursos de Azure.

Hay dos tipos de identidades administradas que se deben tener en cuenta al configurar la aplicación hospedada:

  • Las identidades administradas por el sistema se habilitan directamente en un recurso de Azure y están atadas a su ciclo de vida. Cuando se elimina el recurso, Azure borra automáticamente la identidad por ti. Las identidades asignadas por el sistema proporcionan un enfoque minimalista para usar identidades administradas.
  • Las identidades administradas asignadas al usuario se crean como recursos independientes de Azure y ofrecen mayor flexibilidad y capacidades. Son ideales para soluciones que implican varios recursos de Azure que necesitan compartir la misma identidad y permisos. Por ejemplo, si varias máquinas virtuales necesitan acceder al mismo conjunto de recursos de Azure, una identidad administrada asignada por el usuario proporciona reutilización y administración optimizada.

Propina

Obtenga más información sobre cómo seleccionar y administrar identidades administradas asignadas por el sistema y identidades administradas asignadas por el usuario en el artículo Recomendaciones de procedimientos recomendados de identidad administrada.

En las secciones siguientes se describen los pasos para habilitar y usar una identidad administrada asignada por el sistema para una aplicación hospedada en Azure. Si necesita usar una identidad administrada asignada por el usuario, visite el artículo identidades administradas asignadas por el usuario para obtener más información.

Habilitación de una identidad administrada asignada por el sistema en el recurso de hospedaje de Azure

Para empezar a usar una identidad administrada asignada por el sistema con la aplicación, habilite la identidad en el recurso de Azure que hospeda la aplicación, como Azure App Service, Azure Container App o Azure Virtual Machine.

Puede habilitar una identidad administrada asignada por el sistema para un recurso de Azure mediante Azure Portal o la CLI de Azure.

  1. En Azure Portal, vaya al recurso que hospeda el código de la aplicación, como una instancia de Azure App Service o azure Container App.

  2. En la página de Información general del recurso, expanda Configuración y seleccione Identidad en el panel de navegación.

  3. En la página Identidad, cambie el control deslizante de estado en a .

  4. Seleccione Guardar para aplicar los cambios.

    Captura de pantalla que muestra cómo habilitar una identidad asignada por el sistema en una aplicación de contenedor.

Asignación de roles a la identidad administrada

A continuación, determine qué roles necesita la aplicación y asígnelos a la identidad administrada. Puede asignar roles a una identidad administrada en los ámbitos siguientes:

  • Recurso: los roles asignados solo se aplican a ese recurso específico.
  • grupo de recursos: los roles asignados se aplican a todos los recursos contenidos en el grupo de recursos.
  • Suscripción: Los roles asignados se aplican a todos los recursos contenidos en la suscripción.

En el ejemplo siguiente se muestra cómo asignar roles en el ámbito del grupo de recursos, ya que muchas aplicaciones administran todos sus recursos de Azure relacionados mediante un único grupo de recursos.

  1. Vaya a la página Información general del grupo de recursos que contiene la aplicación con la identidad administrada asignada por el sistema.

  2. Seleccione control de acceso (IAM) en el panel de navegación izquierdo.

  3. En la página Control de acceso (IAM), seleccione + Agregar en el menú superior y, a continuación, elija Agregar asignación de rol para ir a la página Agregar asignación de rol.

    Captura de pantalla que muestra cómo acceder a la página de asignación de roles de identidad.

  4. La página Agregar asignación de roles presenta un flujo de trabajo con pestañas y varios pasos para asignar roles a identidades. En la pestaña de rol inicial, use el cuadro de búsqueda de la parte superior para localizar el rol que desea asignar a la identidad.

  5. Seleccione el rol en los resultados y, a continuación, elija Siguiente para ir a la pestaña Miembros.

  6. En la opción Asignar acceso a, seleccione Identidad administrada.

  7. Para la opción Miembros , elija + Seleccionar miembros para abrir el panel Seleccionar identidades administradas.

  8. En el panel Seleccionar identidades administradas, use las listas desplegables de Suscripción y Identidad administrada para filtrar los resultados de búsqueda de sus identidades. Utilice el cuadro de búsqueda Seleccionar para localizar la identidad de sistema que habilitó para el recurso de Azure que alberga su aplicación.

    Captura de pantalla que muestra el proceso de asignación de identidad administrada.

  9. Seleccione la identidad y elija Seleccione en la parte inferior del panel para continuar.

  10. Seleccione en la parte inferior de la página Revisar y asigne.

  11. En la pestaña final Revisar y asignar, seleccione Revisar y asignar para completar el flujo de trabajo.

Implementación de DefaultAzureCredential en la aplicación

DefaultAzureCredential es una secuencia opinada y ordenada de mecanismos para autenticarse en Microsoft Entra ID. Cada mecanismo de autenticación es una clase derivada de la clase TokenCredential y se conoce como una credencial de . En tiempo de ejecución, DefaultAzureCredential intenta autenticarse con la primera credencial. Si esa credencial no puede adquirir un token de acceso, se intenta realizar la siguiente credencial de la secuencia, etc., hasta que se obtenga correctamente un token de acceso. De este modo, la aplicación puede usar credenciales diferentes en distintos entornos sin escribir código específico del entorno.

Para usar DefaultAzureCredential, agregue el de Azure.Identity y, opcionalmente, los paquetes de de Microsoft.Extensions.Azure a la aplicación:

En un terminal de su elección, vaya al directorio del proyecto de aplicación y ejecute los siguientes comandos:

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

Se accede a los servicios de Azure mediante clases de cliente especializadas de las distintas bibliotecas cliente del SDK de Azure. Estas clases y sus propios servicios personalizados deben registrarse para poder acceder a ellas a través de la inserción de dependencias en toda la aplicación. En Program.cs, complete los pasos siguientes para registrar una clase de cliente y DefaultAzureCredential:

  1. Incluya los espacios de nombres Azure.Identity y Microsoft.Extensions.Azure mediante directivas using.
  2. Registre el cliente de servicio de Azure mediante el método de extensión correspondiente con el prefijo Add.
  3. Pase una instancia de DefaultAzureCredential al método UseCredential.

Por ejemplo:

using Microsoft.Extensions.Azure;
using Azure.Identity;

builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

Una alternativa a UseCredential consiste en crear instancias de DefaultAzureCredential directamente:

using Azure.Identity;

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

Cuando el código anterior se ejecuta en la estación de trabajo de desarrollo local, busca en las variables de entorno de una entidad de servicio de aplicación o en las herramientas de desarrollo instaladas localmente, como Visual Studio, para un conjunto de credenciales de desarrollador. Cualquier enfoque se puede usar para autenticar la aplicación en los recursos de Azure durante el desarrollo local.

Cuando se implementa en Azure, este mismo código también puede autenticar la aplicación en otros recursos de Azure. DefaultAzureCredential puede recuperar la configuración del entorno y las configuraciones de identidad administrada para autenticarse en otros servicios automáticamente.