Share via


Autenticación de aplicaciones .NET en servicios de Azure durante el desarrollo local mediante cuentas de desarrollador

Al crear aplicaciones en la nube, los desarrolladores necesitan depurar y probar aplicaciones en su estación de trabajo local. Cuando se ejecuta una aplicación en la estación de trabajo de un desarrollador durante el desarrollo local, esta debe autenticarse en los servicios de Azure que usa. En este artículo se explica cómo usar las credenciales de Azure de un desarrollador para autenticar la aplicación en Azure durante el desarrollo local.

A diagram showing how an app running in local developer will obtain the application service principal from a .env file and then use that identity to connect to Azure resources.

Para que una aplicación se autentique en Azure durante el desarrollo local mediante las credenciales de Azure del desarrollador, el desarrollador debe iniciar sesión en Azure desde la extensión VS Code Azure Tools, la CLI de Azure o Azure PowerShell. El SDK de Azure para .NET puede detectar que el desarrollador inició sesión desde una de estas herramientas y, a continuación, obtener las credenciales necesarias de la memoria caché de credenciales para autenticar la aplicación en Azure como usuario que inició sesión.

Este enfoque es más fácil de configurar para un equipo de desarrollo, ya que aprovecha las cuentas de Azure existentes de los desarrolladores. Sin embargo, es probable que la cuenta de un desarrollador tenga más permisos que los que requiere la aplicación, lo que supone superar los permisos con los que se ejecutará la aplicación en producción. Como alternativa, puede crear entidades de servicio de aplicación para usarlas durante el desarrollo local que se pueden limitar para tener solo el acceso necesario para la aplicación.

1: Creación de un grupo de Azure AD para el desarrollo local

Puesto que casi siempre hay varios desarrolladores que trabajan en una aplicación, se recomienda crear primero un grupo de Azure AD para encapsular los roles (permisos) que la aplicación necesita en el desarrollo local. Esto ofrece las ventajas que se indican a continuación.

  • Todos los desarrolladores están seguros de tener asignados los mismos roles, ya que los roles se asignan en el nivel de grupo.
  • Si se necesita un nuevo rol para la aplicación, solo debe agregarse al grupo de Azure AD para la aplicación.
  • Si un nuevo desarrollador se une al equipo, simplemente debe agregarse al grupo correcto de Azure AD para obtener los permisos correctos para poder trabajar en la aplicación.

Si tiene un grupo de Azure AD existente para el equipo de desarrollo, puede usar ese grupo. De lo contrario, complete los pasos que se describen a continuación para crear un grupo de Azure AD.

Instrucciones Instantánea
Vaya a la página de Azure Active Directory en Azure Portal. Para ello, escriba Azure Active Directory en el cuadro de búsqueda de la parte superior de la página y, a continuación, seleccione Azure Active Directory en los servicios. A screenshot showing how to use the top search bar in the Azure portal to search for and navigate to the Azure Active Directory page.
En la página Azure Active Directory, seleccione Grupos en el menú de la izquierda. A screenshot showing the location of the Groups menu item in the left-hand menu of the Azure Active Directory Default Directory page.
En la página Todos los grupos, seleccione Nuevo grupo. A screenshot showing the location of the New Group button in the All groups page.
En la página Nuevo grupo:
  1. Tipo de grupo: Seguridad
  2. Nombre de grupo → Nombre del grupo de seguridad, que normalmente se crea a partir del nombre de la aplicación. También resulta útil incluir una cadena como local-dev en el nombre del grupo para indicar el propósito del grupo.
  3. Descripción del grupo → Descripción del propósito del grupo.
  4. Seleccione el vínculo Sin miembros seleccionados en Miembros para agregar miembros al grupo.
A screenshot showing how to fill out the form to create a new Azure Active Directory group for the application. This screenshot also shows the location of the link to select to add members to this group
En el cuadro de diálogo Agregar miembros:
  1. Use el cuadro de búsqueda para filtrar la lista de nombres de usuario en la lista.
  2. Seleccione los usuarios para el desarrollo local de esta aplicación. A medida que se seleccionan los objetos, se moverán a la lista Elementos seleccionados de la parte inferior del cuadro de diálogo.
  3. Cuando haya terminado, pulse el botón Seleccionar.
A screenshot of the Add members dialog box showing how to select developer accounts to be included in the group.
De nuevo en la página Nuevo grupo, seleccione Crear para crear el grupo.

El grupo se creará y volverá a la página Todos los grupos. El grupo puede tardar hasta 30 segundos en aparecer y es posible que tenga que actualizar la página debido al almacenamiento en caché en Azure Portal.
A screenshot of the New Group page showing how to complete the process by selecting the Create button.

2: Asignación de roles al grupo de Azure AD

A continuación, debe determinar qué roles (permisos) necesita la aplicación y en qué recursos para, a continuación, asignar dichos roles a la aplicación. En este ejemplo, los roles se asignarán al grupo de Azure Active Directory que se creó en el paso 1. Los roles se pueden asignar a un rol en el ámbito de recurso, grupo de recursos o suscripción. En este ejemplo se muestra cómo asignar roles en el ámbito del grupo de recursos, ya que la mayoría de las aplicaciones agrupan todos sus recursos de Azure en un único grupo de recursos.

Instrucciones Instantánea
Busque el grupo de recursos de la aplicación; para ello, busque el nombre del grupo de recursos mediante el cuadro de búsqueda situado en la parte superior de Azure Portal.

Vaya al grupo de recursos. Para ello, seleccione el nombre del grupo de recursos en el encabezado Grupos de recursos del cuadro de diálogo.
A screenshot showing how to use the top search box in the Azure portal to locate and navigate to the resource group you want to assign roles (permissions) to.
En la página del grupo de recursos, seleccione Control de acceso (IAM) en el menú izquierdo. A screenshot of the resource group page showing the location of the Access control (IAM) menu item.
En la página Control de acceso (IAM):
  1. Seleccione la pestaña Asignaciones de roles.
  2. Seleccione + Agregar en el menú superior y, a continuación, Agregar asignación de roles en el menú desplegable resultante.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
La página Agregar asignación de roles muestra todos los roles que se pueden asignar para el grupo de recursos.
  1. Use el cuadro de búsqueda para filtrar la lista a un tamaño más fácil de administrar. En este ejemplo se muestra cómo filtrar los roles de Storage Blob.
  2. Seleccione el rol que quiere asignar.
Seleccione Siguiente para ir a la pantalla siguiente.
A screenshot showing how to filter and select role assignments to be added to the resource group.
La siguiente página Agregar asignación de roles permite especificar a qué usuario se debe asignar el rol.
  1. Seleccione Usuario, grupo o entidad de servicio en Asignar acceso a.
  2. Seleccione + Seleccionar miembros en Miembros.
Se abrirá un cuadro de diálogo en el lado derecho de Azure Portal.
A screenshot showing the radio button to select to assign a role to an Azure AD group and the link used to select the group to assign the role to.
En el cuadro de diálogo Seleccionar miembros:
  1. El cuadro de texto Seleccionar se puede usar para filtrar la lista de usuarios y grupos de la suscripción. Si es necesario, escriba los primeros caracteres del grupo de desarrollo local de Azure AD que creó para la aplicación.
  2. Seleccione el grupo de desarrollo local de Azure AD asociado a la aplicación.
Pulse Seleccionar en la parte inferior del cuadro de diálogo para continuar.
A screenshot showing how to filter for and select the Azure AD group for the application in the Select members dialog box.
El grupo de Azure AD se mostrará ahora como seleccionado en la pantalla Agregar asignación de roles.

Seleccione Revisar y asignar para ir a la página final y, a continuación, Revisar y asignar de nuevo para completar el proceso.
A screenshot showing the completed Add role assignment page and the location of the Review + assign button used to complete the process.

3: Inicio de sesión en Azure mediante herramientas de .NET

A continuación, debe iniciar sesión en Azure mediante una de varias opciones de herramientas de .NET. La cuenta en la que inicie sesión también debe existir en el grupo de Azure Active Directory que creó y configuró anteriormente.

En el menú superior de Visual Studio, vaya a Herramientas>Opciones para abrir el cuadro de diálogo de opciones. En la barra de búsqueda de la parte superior izquierda, escriba Azure para filtrar las opciones. En Autenticación de servicio de Azure, elija Selección de cuenta.

Seleccione el menú desplegable en Elegir una cuenta y elija agregar una cuenta Microsoft. Se abrirá una ventana que le pedirá que elija una cuenta. Escriba las credenciales de la cuenta de Azure deseada y, a continuación, seleccione la confirmación.

A screenshot showing how to sign in to Azure using Visual Studio.

4: Implementación de DefaultAzureCredential en la aplicación

DefaultAzureCredential admite varios métodos de autenticación y determina el método de autenticación que se usa en tiempo de ejecución. De esta manera, la aplicación puede usar diferentes métodos de autenticación en distintos entornos sin implementar código específico del entorno.

El orden y las ubicaciones en las que DefaultAzureCredential busca las credenciales se encuentran en DefaultAzureCredential.

Para implementar DefaultAzureCredential, agrega primero Azure.Identity y, opcionalmente, los paquetes Microsoft.Extensions.Azure a la aplicación. Puedes realizar esta acción mediante la línea de comandos o el Administrador de paquetes de NuGet.

Abre el entorno de terminal que prefieras en el directorio del proyecto de aplicación y escribe el comando siguiente.

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

Por lo general, se accede a los servicios de Azure mediante las clases de cliente correspondientes desde el SDK. Estas clases y sus propios servicios personalizados deben registrarse en el archivo Program.cs para que se pueda acceder a ellas a través de la inserción de dependencias en toda la aplicación. Dentro de Program.cs, sigue los pasos que se indican a continuación para configurar correctamente el servicio y DefaultAzureCredential.

  1. Incluye los espacio de nombres Azure.Identity y Microsoft.Extensions.Azure con una instrucción using.
  2. Registra el servicio de Azure mediante los métodos auxiliares pertinentes.
  3. Pasa una instancia del objeto DefaultAzureCredential al método UseCredential.

En el segmento de código siguiente se muestra un ejemplo de esto.

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

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

Como alternativa, también puede usar DefaultAzureCredential en los servicios de manera más directa sin la ayuda de los métodos de registro de Azure adicionales, tal como se muestra a continuación.

using Azure.Identity;

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

Cuando el código anterior se ejecuta en tu estación de trabajo local durante el desarrollo local, buscará una entidad de servicio de aplicación en las variables de entorno o en Visual Studio, VS Code, la CLI de Azure o Azure PowerShell para un conjunto de credenciales de desarrollador. Cualquiera de estas pueden usarse 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 tu 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.