Cómo usar Azure Active Directory para autenticarse en Azure SQL Server
Azure SQL Server es una base de datos relacional en la nube que permite a los usuarios almacenar y administrar grandes cantidades de datos de manera segura y escalable. Configurar Azure Active Directory en Azure SQL Server es una parte fundamental para establecer un sistema de autenticación seguro y confiable que garantice la privacidad de los datos.
Si bien la forma más común de autenticarse en Azure SQL Server es mediante el uso de un usuario y contraseña de SQL, en este artículo te mostraremos una alternativa utilizando Azure Active Directory. Aprenderás cómo configurar y utilizar Azure Active Directory para autenticarte de manera efectiva en Azure SQL Server.
Azure Active Directory es una solución de autenticación basada en la nube que brinda una plataforma escalable y segura para la gestión de identidades. Al utilizar Azure Active Directory para autenticarte en Azure SQL Server, podrás proteger tus datos contra posibles amenazas como la suplantación de identidad y garantizar su seguridad.
Configuración de Azure Active Directory
En este ejemplo, crearemos un grupo denominado «groupsql» de AAD y lo estableceremos como «Azure Active Directory Admin». De esta manera, los usuarios que pertenezcan a este grupo podrán administrar nuestro servidor de Azure SQL Server.
Para comenzar, accedemos a nuestra cuenta de Azure y nos dirigimos a la sección de Azure Active Directory. Luego, seleccionamos la opción de «Grupos» y procedemos a agregar el grupo que necesitamos para nuestros fines específicos.
Ahora agregaremos el usuario «sqluser», quien ya ha sido creado previamente. Si lo deseas, puedes utilizar otro usuario existente o crear uno nuevo.
Es posible que la creación de un usuario en Azure Active Directory requiera algunas tareas adicionales, dependiendo de las políticas de seguridad de la empresa. Por ejemplo, es posible que se requiera cambiar la contraseña del usuario o configurar la autenticación en dos pasos. Si es necesario realizar estas tareas, es importante seguir los pasos específicos para hacerlo en Azure Active Directory. Esto garantizará que la autenticación sea segura y efectiva.
Luego debemos agregar el usuario al grupo que creamos previamente.
Configurar la base datos de Azure SQL Server
En este caso, vamos a utilizar una base de datos que contiene una tabla de «users» ya creada previamente. A través de Azure Active Directory, vamos a consultar los registros que contiene.
Para poder conectarnos usando el mecanismo de Azure Active Directory, es necesario seguir los siguientes pasos:
Configurar las reglas de firewall del servidor de base de datos
Al crear un servidor de base de datos en Azure, por defecto, se establece una regla de firewall que solo permite el acceso desde las direcciones IP configuradas en la lista de permitidos. Si se intenta acceder a la base de datos desde una dirección IP no autorizada, se recibirá un mensaje de error.
En nuestro caso, como vamos a correr una aplicación desde nuestra computadora local, es necesario agregar la dirección IP pública de nuestra máquina a las reglas de firewall del servidor de base de datos. De esta manera, se permitirá la conexión que proviene de nuestra máquina. Es importante destacar que este paso no es exclusivo de una conexión a través de Azure Active Directory, sino que se aplica a cualquier tipo de conexión, incluyendo la autenticación mediante nombre de usuario y contraseña de SQL Server.
Para configurar las reglas de firewall del servidor de base de datos en Azure, es necesario acceder a las opciones de «Networking» de nuestro servidor. Allí encontraremos la sección «Firewall» donde podemos agregar reglas para permitir o denegar conexiones entrantes al servidor de base de datos. Si nuestra aplicación se conectará desde una máquina personal, es importante agregar la dirección IP pública de dicha máquina a las reglas de firewall para permitir la conexión. Una forma sencilla de hacerlo es mediante la opción «Add your client IP» que agregará automáticamente la dirección IP pública de la máquina desde donde se está realizando la configuración.
Configurar el Azure Active Directory Admin
El Azure Active Directory Admin en Azure SQL Server es un rol especial que otorga permisos de administración sobre el servidor y las bases de datos. Al configurar este rol, se establece una conexión entre Azure Active Directory y el servidor de base de datos, lo que permite gestionar y controlar el acceso de los usuarios a la instancia de Azure SQL Server de manera centralizada. Esto proporciona una mayor seguridad y control sobre quién tiene privilegios de administración y acceso a los recursos.
Continuando con la configuración, accedemos al menú de opciones de Azure SQL Server y seleccionamos la opción «Azure Active Directory». Aquí configuraremos el grupo «groupsql» que previamente hemos creado. Esta configuración permitirá establecer una integración entre Azure Active Directory y el servidor de base de datos, brindando a los usuarios del grupo «groupsql» acceso y permisos específicos sobre la instancia de Azure SQL Server.
La configuración de Azure Active Directory en conjunto con el grupo «groupsql» asegurará que los usuarios designados tengan el acceso adecuado a la base de datos y puedan realizar las operaciones necesarias según sus responsabilidades. Esto brinda un mayor control sobre la seguridad y la administración de la instancia de Azure SQL Server.
Es importante tener en cuenta que si al crear el servidor de base de datos se seleccionó la opción de «Solo autenticación SQL», al configurar el Azure Active Directory Admin se nos pedirá habilitar la opción de Azure Active Directory. En este caso, debemos asegurarnos de seleccionar «Sí» para habilitar la integración de Azure Active Directory en el servidor de base de datos.
Esta configuración permitirá que Azure Active Directory Admin sea el administrador principal del servidor y las bases de datos, brindando mayor control sobre los accesos y permisos de los usuarios. Al habilitar Azure Active Directory en un servidor que inicialmente fue configurado solo con autenticación SQL, se amplían las opciones de autenticación y se fortalece la seguridad y la gestión de identidades en la instancia de Azure SQL Server.
Cómo conectarse a la base de datos con Azure Active Directory
Ahora que hemos completado la configuración, es natural preguntarse: «¿Cómo puedo conectarme ahora?». Las opciones para conectarse utilizando Azure Active Directory son bastante similares a las que se utilizan con la autenticación de usuario y contraseña de SQL. Por ejemplo, si estás intentando conectarte con un cliente como Azure Data Studio, deberás seleccionar el tipo de autenticación «Azure Active Directory» y proporcionar un usuario que pertenezca al grupo que hemos configurado previamente. Un ejemplo de cómo se vería esto es el siguiente:
Otra opción para conectarse a la base de datos es mediante el uso de una cadena de conexión. En este caso, la estructura de la cadena es muy similar a la que se utiliza para la autenticación SQL, pero se agrega un parámetro adicional: Authentication=»Active Directory Password«. El resultado final sería algo similar a lo siguiente:
Server=tcp:{your_server};Initial Catalog=prueba;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication="Active Directory Password";
Esta información también se puede obtener en Azure, específicamente en la sección de «Settings» y luego en «Connection Strings». Ahí encontrarás las opciones de conexión disponibles, incluyendo las relacionadas con Azure Active Directory.
Conexión segura a Azure SQL Server con Azure Active Directory: Ejemplo en C#
Ahora que hemos completado la configuración necesaria y sabemos cómo obtener una cadena de conexión basada en la autenticación de Azure Active Directory, vamos a realizar un ejemplo práctico. A continuación, se muestra un ejemplo de una aplicación de consola en C# utilizando .NET 7 que consultará los usuarios de la base de datos:
using Microsoft.Data.SqlClient;
string connectionString = "Your Connection String"; // Reemplace con su cadena de conexión real
using (SqlConnection connection = new(connectionString))
{
string query = "SELECT Id, Email, Name FROM Users";
SqlCommand command = new(query, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Guid id = reader.GetGuid(0);
string email = reader.GetString(1);
string name = reader.GetString(2);
Console.WriteLine("Id: {0}, Email: {1}, Name: {2}", id, email, name);
}
reader.Close();
}
El resultado de la ejecución sería el siguiente:
Conclusión
La implementación de Azure Active Directory para la autenticación en Azure SQL Server brinda numerosos beneficios, como una capa adicional de seguridad, la gestión centralizada de identidades y la protección contra amenazas como la suplantación de identidad, permite establecer conexiones seguras y gestionar eficientemente los permisos de acceso a la base de datos. En definitiva, Azure Active Directory mejora la experiencia de autenticación, simplifica la administración de identidades y fortalece la protección de los datos en entornos de Azure SQL Server.
Sin embargo, es importante tener en consideración que al configurar el Azure Active Directory Admin, estamos otorgando permisos de administración sobre el servidor de base de datos. Esto puede no ser adecuado en todos los casos, ya que puede haber escenarios donde se requiera un control más granular de los permisos. Siempre es necesario evaluar cuidadosamente los requisitos específicos de seguridad y acceso de nuestra aplicación y determinar si la solución de utilizar Azure Active Directory se ajusta a nuestras necesidades.
Te invito a ver mis otros artículos.
Referencias
Soy un Ingeniero en Informática, apasionado de la tecnología y, siempre trato de estar aprendiendo para estar al día con las últimas tecnologías, me especializo en el desarrollo Backend con .NET, pero durante estos años, he trabajado con muchas otras tecnologías que me han ayudado en mi crecimiento profesional.