Share via


Migración de una aplicación .NET para usar conexiones sin contraseña con Azure SQL Database

Se aplica a:Azure SQL Database

Las solicitudes de aplicación a Azure SQL Database deben autenticarse. Aunque hay varias opciones para autenticarse en Azure SQL Database, 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 a Azure SQL Database y utilizar conexiones sin contraseña en lugar de una solución basada en nombre de usuario y contraseña.

Configuración de Azure SQL Database

Las conexiones sin contraseña usan la autenticación de Microsoft Entra para conectarse a los servicios de Azure, incluida la base de datos de Azure SQL. Con la autenticación de Microsoft Entra, puede administrar identidades en una ubicación central para simplificar la administración de permisos. Obtenga más información sobre cómo configurar la autenticación de Microsoft Entra para la base de datos de Azure SQL:

Para esta guía de migración, asegúrese de que tiene asignado un administrador de Microsoft Entra a la base de datos de Azure SQL.

  1. Vaya a la página de Microsoft Entra del servidor lógico.

  2. Seleccione Establecer administrador para abrir el menú de control flotante de Microsoft Entra ID.

  3. En el menú de control flotante de Microsoft Entra ID, busque el usuario que quiere asignar como administrador.

  4. Seleccione el usuario y elija Seleccionar.

    A screenshot showing how to enable Microsoft Entra admin.

Configuración del entorno de desarrollo local

Las conexiones sin contraseña se pueden configurar para que funcionen en entornos locales y hospedados en Azure. En esta sección, aplicará configuraciones para permitir que los usuarios individuales se autentiquen en Azure SQL Database para el desarrollo local.

Inicio de sesión en Azure

Para el desarrollo local, asegúrese de que ha iniciado sesión con la misma cuenta de Azure AD que quiere usar para acceder a Azure SQL Database. 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

Creación del usuario de la base de datos y asignación de roles

Cree un usuario en Azure SQL Database. El usuario debe corresponder a la cuenta de Azure que usó para iniciar sesión localmente mediante herramientas de desarrollo como Visual Studio o IntelliJ.

  1. En Azure Portal, vaya a la base de datos SQL y seleccione Editor de consultas (versión preliminar).

  2. Seleccione Continuar como <your-username> en el lado derecho de la pantalla para iniciar sesión en la base de datos con su cuenta.

  3. En la vista del editor de consultas, ejecute los siguientes comandos de T-SQL:

    CREATE USER [user@domain] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user@domain];
    ALTER ROLE db_datawriter ADD MEMBER [user@domain];
    ALTER ROLE db_ddladmin ADD MEMBER [user@domain];
    GO
    

    A screenshot showing how to use the Azure Query editor.

    Al ejecutar estos comandos, se asigna el rol Colaborador de base de datos SQL a la cuenta especificada. Este rol permite que la identidad lea, escriba y modifique los datos y el esquema de la base de datos. Para más información sobre los roles asignados, consulte Roles fijos de base de datos.

Actualización de la configuración de conexión local

El código de aplicación existente que se conecta a Azure SQL Database mediante la biblioteca Microsoft.Data.SqlClient o Entity Framework Core seguirá funcionando con conexiones sin contraseña. Sin embargo, debe actualizar la cadena de conexión de la base de datos para usar el formato sin contraseña. Por ejemplo, el código siguiente funciona con la autenticación de SQL y las conexiones sin contraseña:

string connectionString = app.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING")!;

using var conn = new SqlConnection(connectionString);
conn.Open();

var command = new SqlCommand("SELECT * FROM Persons", conn);
using SqlDataReader reader = command.ExecuteReader();

Para actualizar la cadena de conexión a la que se hace referencia (AZURE_SQL_CONNECTIONSTRING) para usar el formato de cadena de conexión sin contraseña:

  1. Busque la cadena de conexión. Para el desarrollo local con aplicaciones .NET, normalmente se almacena en una de las siguientes ubicaciones:

    • El archivo de configuración appsettings.json para el proyecto.
    • El archivo de configuración launchsettings.json para proyectos de Visual Studio.
    • Variables de entorno del sistema local o del contenedor.
  2. Reemplace el valor de la cadena de conexión por el siguiente formato sin contraseña. Reemplace los marcadores de posición <database-server-name> y <database-name> por sus propios valores.

    Server=tcp:<database-server-name>.database.windows.net,1433;Initial Catalog=<database-name>;
    Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication="Active Directory Default";
    

Prueba de la aplicación

Ejecute la aplicación localmente y compruebe que las conexiones a Azure SQL Database funcionan según lo previsto. Tenga en cuenta que los cambios en los usuarios y roles de Azure pueden tardar varios minutos en propagarse por su entorno de Azure. Ahora la aplicación está configurada para ejecutarse localmente sin que los desarrolladores tengan que administrar los secretos en la propia aplicación.

Configuración del entorno de hospedaje de Azure

Una vez que la aplicación se ha configurado para usar conexiones sin contraseña localmente, el mismo código se puede autenticar en los servicios de Azure SQL Database después de implementarla en Azure. En las secciones siguientes se explica cómo configurar una aplicación implementada para conectarse a Azure SQL Database mediante una identidad administrada. Las identidades administradas proporcionan una identidad administrada automáticamente en Microsoft Entra ID (anteriormente Azure Active Directory) para que las aplicaciones la utilicen al conectarse a los recursos que admiten la autenticación de Microsoft Entra. Más información sobre las identidades administradas:

Creación de la identidad administrada

Cree una identidad administrada asignada por el usuario mediante Azure Portal o la CLI de Azure. La aplicación usa la identidad para autenticarse en otros servicios.

  1. En la parte superior del Azure Portal, busque Identidades administradas. Seleccione el resultado de Identidades administradas.
  2. Seleccione + Crear en la parte superior de la página de información general de Identidades administradas.
  3. 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 que desee.
    • Región: seleccione una región cercana a su ubicación.
    • Nombre: Escriba un nombre reconocible para la identidad, como MigrationIdentity.
  4. En la parte inferior de la página, seleccione Revisar y crear.
  5. 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.

A screenshot showing how to create a managed identity using the Azure portal.

Asociación de la identidad administrada a la aplicación web

Configure la aplicación web para que use la identidad administrada asignada por el usuario que ha creado.

Complete los pasos siguientes en Azure Portal para asociar una identidad administrada asignada por el usuario con 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.
  1. En el menú de navegación de la izquierda, seleccione Identidad.

  2. En la página Identidad, cambie a la pestaña Asignado por el usuario.

  3. Seleccione + Agregar para abrir el control flotante Agregar identidad administrada asignada por el usuario.

  4. Seleccione la suscripción que usó anteriormente para crear la identidad.

  5. Busque MigrationIdentity por nombre y selecciónelo en los resultados de la búsqueda.

  6. Seleccione Agregar para asociar la identidad a la aplicación.

    A screenshot showing how to assign a managed identity.

Creación de un usuario de base de datos para la identidad y asignación de roles

Cree un usuario de SQL Database que vuelva a asignarse a la identidad administrada asignada por el usuario. Asigna los roles SQL necesarios al usuario para permitir que la aplicación lea, escriba y modifique los datos y el esquema de la base de datos.

  1. En Azure Portal, vaya a la base de datos SQL y seleccione Editor de consultas (versión preliminar).

  2. Seleccione Continuar como <username> en el lado derecho de la pantalla para iniciar sesión en la base de datos con su cuenta.

  3. En la vista del editor de consultas, ejecute los siguientes comandos de T-SQL:

    CREATE USER [user-assigned-identity-name] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_datawriter ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_ddladmin ADD MEMBER [user-assigned-identity-name];
    GO
    

    A screenshot showing how to use the Azure Query editor to create a SQL user for a managed identity.

    Al ejecutar estos comandos, se asigna el rol Colaborador de base de datos SQL a la identidad administrada asignada por el usuario. Este rol permite que la identidad lea, escriba y modifique los datos y el esquema de la base de datos.


Importante

Tenga cuidado al asignar roles de usuario de base de datos en entornos de producción empresarial. En esos escenarios, la aplicación no debe realizar todas las operaciones con una única identidad con privilegios elevados. Intente implementar el principio de privilegios mínimos configurando varias identidades con permisos específicos para tareas específicas.

Puede consultar más información sobre cómo configurar roles de base de datos y seguridad en los siguientes recursos:

Actualización de la cadena de conexión

Actualice la configuración de la aplicación de Azure para usar el formato de cadena de conexión sin contraseña. Las cadenas de conexión se almacenan normalmente como variables de entorno en el entorno de hospedaje de aplicaciones. Las instrucciones siguientes se centran en App Service, pero otros servicios de hospedaje de Azure proporcionan configuraciones similares.

  1. Vaya a la página de configuración de la instancia de App Service y busque la cadena de conexión de Azure SQL Database.

  2. Seleccione el icono de edición y actualice el valor de la cadena de conexión para que coincida con el formato siguiente. Cambie los marcadores de posición <database-server-name> y <database-name> por los valores de su propio servicio.

    Server=tcp:<database-server-name>.database.windows.net,1433;Initial Catalog=<database-name>;
    Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication="Active Directory Default";
    
  3. Guarde los cambios y reinicie la aplicación si no lo hace automáticamente.

Prueba de la aplicación

Pruebe la aplicación para asegurarse de que todo sigue funcionando. Los cambios pueden tardar unos minutos en propagarse a través del entorno de Azure.

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: