Migración de una aplicación para usar conexiones sin contraseña con Azure Blob Storage
Las solicitudes de aplicación a servicios de Azure se deben autenticar mediante configuraciones como claves de acceso de cuenta o conexiones sin contraseña. Sin embargo, debe priorizar las conexiones sin contraseña en las aplicaciones siempre que sea posible. Los métodos de autenticación tradicionales que usan contraseñas o claves secretas crean riesgos y complicaciones de seguridad. Visite el centro de Conexiones sin contraseña para servicios de Azure para obtener más información sobre las ventajas de pasar a conexiones sin contraseña.
El siguiente tutorial explica cómo migrar una aplicación existente para conectarse mediante conexiones sin contraseña. Estos mismos pasos de migración deben aplicarse si usa claves de acceso, cadenas de conexión u otro enfoque basado en secretos.
Configuración de roles y usuarios para la autenticación de desarrollo local
Al desarrollar localmente, asegúrese de que la cuenta de usuario que accede a los datos de blob tenga los permisos correctos. Necesitará el Colaborador de datos de blobs de almacenamiento para leer y escribir datos de blob. Para asignarse este rol a sí mismo, necesitará que se le asigne el rol Administrador de acceso de usuario u otro rol que incluya la acción Microsoft.Authorization/roleAssignments/write. Puede asignar roles RBAC de Azure a un usuario mediante Azure Portal, la CLI de Azure o Azure PowerShell. Puede obtener más información sobre los ámbitos disponibles para las asignaciones de roles en la página de información general del ámbito.
En este escenario, asignará permisos a la cuenta de usuario, cuyo ámbito es la cuenta de almacenamiento, a fin de seguir el principio de privilegios mínimos. Esta práctica solo proporciona a los usuarios los permisos mínimos necesarios y crea entornos de producción más seguros.
En el ejemplo siguiente se asignará el rol Colaborador de datos de blobs de almacenamiento a la cuenta de usuario, que proporciona acceso de lectura y escritura a los datos de blobs de la cuenta de almacenamiento.
Importante
En la mayoría de los casos, la asignación de roles tardará un minuto o dos en propagarse en Azure, pero en casos excepcionales puede tardar hasta ocho minutos. Si recibe errores de autenticación al ejecutar por primera vez el código, espere unos instantes e inténtelo de nuevo.
En Azure Portal, busque la cuenta de almacenamiento mediante la barra de búsqueda principal o el panel de navegación de la izquierda.
En la página de información general de la cuenta de almacenamiento, seleccione Control de acceso (IAM) en el menú de la izquierda.
En la página Control de acceso (IAM), seleccione la pestaña Asignación de roles.
Seleccione + Agregar en el menú superior y, a continuación, Agregar asignación de roles en el menú desplegable resultante.
Puede usar el cuadro de búsqueda para filtrar los resultados por el rol deseado. En este ejemplo, busque Colaborador de datos de blobs de almacenamiento y seleccione el resultado coincidente y, a continuación, elija Siguiente.
En la pestaña Asignar acceso a, seleccione Usuario, grupo o entidad de servicio y, a continuación, elija + Seleccionar miembros.
En el cuadro de diálogo, busque el nombre de usuario de Microsoft Entra (normalmente su dirección de correo electrónico de user@domain) y, a continuación, elija Seleccionar en la parte inferior del cuadro de diálogo.
Seleccione Revisar y asignar para ir a la página final y, a continuación, de nuevo Revisar y asignar para completar el proceso.
Inicio de sesión y migración del código de la aplicación para usar conexiones sin contraseña
En el caso del desarrollo local, asegúrese de realizar la autenticación con la misma cuenta de Microsoft Entra a la que ha asignado el rol. Puede autenticarse a través de herramientas de desarrollo populares, como la CLI de Azure o Azure PowerShell. Las herramientas de desarrollo con las que puede autenticarse varían en todos los idiomas.
Inicie sesión en Azure a través de la CLI de Azure mediante el siguiente comando:
az login
A continuación, actualice el código para usar conexiones sin contraseña.
Para usar
DefaultAzureCredential
en una aplicación .NET, instale el paqueteAzure.Identity
:dotnet add package Azure.Identity
En la parte superior del archivo, agregue el código siguiente:
using Azure.Identity;
Identifique las ubicaciones del código que crean un
BlobServiceClient
para conectarse a Azure Blob Storage. Actualice su código para que coincida con el ejemplo siguiente:DefaultAzureCredential credential = new(); BlobServiceClient blobServiceClient = new( new Uri($"https://{storageAccountName}.blob.core.windows.net"), credential);
Asegúrese de actualizar el nombre de la cuenta de almacenamiento en el URI de
BlobServiceClient
. El nombre de la cuenta de almacenamiento se puede encontrar en la página de información general de Azure Portal.
Ejecución de la aplicación de forma local
Después de realizar estos cambios de código, ejecute la aplicación localmente. La nueva configuración debe recoger las credenciales locales, como la CLI de Azure, Visual Studio o IntelliJ. Los roles que asigne al usuario de desarrollo local en Azure permitirán a la aplicación conectarse al servicio de Azure localmente.
Configuración del entorno de hospedaje de Azure
Una vez que la aplicación se ha configurado para usar conexiones sin contraseña y se ejecuta localmente, el mismo código se puede autenticar en los servicios de Azure después de implementarla en Azure. En las secciones siguientes se explica cómo configurar una aplicación implementada para conectarse a Azure Blob Storage mediante una identidad administrada.
Creación de la identidad administrada
Puede crear una identidad administrada asignada por el usuario mediante el Azure Portal o la CLI de Azure. La aplicación usa la identidad para autenticarse en otros servicios.
- En la parte superior del Azure Portal, busque Identidades administradas. Seleccione el resultado de Identidades administradas.
- Seleccione + Crear en la parte superior de la página de información general de Identidades administradas.
- En la pestaña Datos básicos, escriba los valores siguientes:
- Suscripción: Seleccione la opción de suscripción que desee.
- Grupo de recursos: Seleccione el grupo de recursos deseado.
- Región: seleccione una región cercana a su ubicación.
- Nombre: Escriba un nombre reconocible para la identidad, como MigrationIdentity.
- En la parte inferior de la página, seleccione Revisar y crear.
- Cuando finalicen las comprobaciones de validación, seleccione Crear. Azure crea una nueva identidad asignada por el usuario.
Una vez creado el recurso, seleccione Ir al recurso para ver los detalles de la identidad administrada.
Asociación de la identidad administrada a la aplicación web
Debe configurar la aplicación web para usar la identidad administrada que ha creado. Asigne la identidad a la aplicación mediante el Azure Portal o la CLI de Azure.
Complete los pasos siguientes en el Azure Portal para asociar una identidad a la aplicación. Estos mismos pasos se aplican a los siguientes servicios de Azure:
- Azure Spring Apps
- Azure Container Apps
- Máquinas virtuales de Azure
- Azure Kubernetes Service
Vaya a la página de información general de la aplicación web.
En el menú de navegación de la izquierda, seleccione Identidad.
En la página Identidad, cambie a la pestaña Asignado por el usuario.
Seleccione + Agregar para abrir el control flotante Agregar identidad administrada asignada por el usuario.
Seleccione la suscripción que usó anteriormente para crear la identidad.
Busque MigrationIdentity por nombre y selecciónelo en los resultados de la búsqueda.
Seleccione Agregar para asociar la identidad a la aplicación.
Asignación de roles a la identidad administrada
A continuación, debe conceder permisos a la identidad administrada que ha creado para acceder a la cuenta de almacenamiento. Conceda permisos mediante la asignación de un rol a la identidad administrada, tal como hizo con el usuario de desarrollo local.
Vaya a la página de información general de la cuenta de almacenamiento y seleccione Access Control (IAM) en el panel de navegación de la izquierda.
Elija Agregar asignación de roles
En el cuadro de búsqueda Rol, busque Colaborador de datos de blobs de almacenamiento, que es un rol común que se usa para administrar las operaciones de datos para blobs. Puede asignar cualquier rol que sea adecuado para el caso de uso. Seleccione Colaborador de datos de blobs de almacenamiento en la lista y elija Siguiente.
En la pantalla Agregar asignación de roles, en la opción Asignar acceso a, seleccione Identidad administrada. A continuación, elija +Seleccionar miembros.
En el control flotante, busque la identidad administrada que creó por nombre y selecciónela en los resultados. Elija Seleccionar para cerrar el menú del control flotante.
Seleccione Siguiente un par de veces hasta que pueda seleccionar Revisar y asignar para finalizar la asignación de roles.
Actualización del código de la aplicación
Debe configurar el código de la aplicación para buscar la identidad administrada específica que creó cuando se implemente en Azure. En algunos escenarios, establecer explícitamente la identidad administrada para la aplicación también impide que otras identidades del entorno se detecten y usen automáticamente.
En la página de información general de la identidad administrada, copie el valor del id. de cliente en el Portapapeles.
Aplique los siguientes cambios específicos de idioma:
Cree un objeto
DefaultAzureCredentialOptions
y páselo aDefaultAzureCredential
. Establezca la propiedad ManagedIdentityClientId en el identificador de cliente.DefaultAzureCredential credential = new( new DefaultAzureCredentialOptions { ManagedIdentityClientId = managedIdentityClientId });
Vuelva a implementar el código en Azure después de realizar este cambio para que se apliquen las actualizaciones de configuración.
Prueba de la aplicación
Después de implementar el código actualizado, vaya a la aplicación hospedada en el explorador. La aplicación debe poder conectarse correctamente a la cuenta de almacenamiento. Tenga en cuenta que las asignaciones de roles pueden tardar varios minutos en propagarse a través del entorno de Azure. Ahora la aplicación está configurada para ejecutarse localmente y en un entorno de producción sin que los desarrolladores tengan que administrar los secretos en la propia aplicación.
Pasos siguientes
En este tutorial, ha aprendido a migrar una aplicación a conexiones sin contraseña.
Puede leer los siguientes recursos para explorar los conceptos que se describen en este artículo con más detalle:
- Autorización del acceso a blobs mediante Microsoft Entra ID
- Para más información sobre .NET Core, consulte Get started with .NET in 10 minutes (Introducción a .NET en 10 minutos).