¡Hola, chicos!
En esta publicación me gustaría compartir con ustedes cómo crear y administrar usuarios e inicios de sesión. Explicaré qué es el usuario/grupo administrador de Azure Active Directory, qué es el servidor de administración, cómo crearlo y cuáles son las diferencias entre un inicio de sesión creado en la instancia y un usuario creado en la base de datos.
Vale la pena recordar que la interfaz de Management Studio aún no admite la creación de inicios de sesión y usuarios, por lo que esto debe hacerse mediante comandos T-SQL.
Métodos de autenticación
Haga clic aquí para ver el contenidoEsto definirá si su servidor aceptará conexiones usando Azure Active Directory (Azure AD) únicamente, si solo aceptará conexiones usando autenticación SQL o si aceptará ambas formas de autenticación.

La forma más segura, y la recomendación oficial de Microsoft, es utilizar la opción de aceptar solo la autenticación de Azure Active Directory (Azure AD), ya que la responsabilidad de administrar contraseñas y credenciales recae en Azure Active Directory y no en la base de datos. Además, puede configurar la autenticación de dos factores, por ejemplo, solicitando al usuario que confirme el inicio de sesión en un dispositivo externo, como su teléfono celular o correo electrónico.
Los usuarios con autenticación SQL también son susceptibles a ataques de fuerza bruta, ya que la base de datos no monitorizará ni bloqueará los intentos excesivos de fallo de conexión de forma predeterminada, mientras que Azure AD tiene este bloqueo de forma predeterminada, informa sobre fallos de conexión, Inteligencia Artificial analiza todos los inicios de sesión y bloquea los inicios de sesión sospechosos, etc.
Otro punto positivo de esta elección es que si esta persona deja la empresa, simplemente desactiva su inicio de sesión en Azure Active Directory y automáticamente perderá el acceso a todos los bancos. Usando la autenticación SQL, tendrás que ir banco por banco, verificar si este usuario tenía acceso y eliminar/desactivar esta cuenta.
Sin embargo, sabemos que no siempre es posible bloquear la autenticación mediante credenciales SQL, especialmente cuando hablamos de sistemas heredados, algunas herramientas de BI o algunos tipos de integraciones. En estos casos, la autenticación SQL acaba siendo necesaria. Si este no es su caso, le sugiero simplemente mantener la autenticación mediante Azure AD.
Dependiendo del método de autenticación elegido, las opciones de administrador de Azure Active Directory y administrador del servidor se muestran/ocultan.
Utilice solo la autenticación de Azure Active Directory (Azure AD)

Administrador de Azure Active Directory
Haga clic aquí para ver el contenidoEste usuario o grupo tendrá acceso ilimitado a las bases de datos del servidor, con permiso para administrar usuarios/inicios de sesión, todas las bases de datos y también acceso ilimitado a los datos, y podrá usarse para conectarse a la base de datos.
El usuario asignado como administrador de Azure Active Directory no puede cambiar ninguna propiedad del servidor a través del Portal de Azure (si no tiene otros permisos en el recurso y/o suscripción/grupo de recursos) ni puede cambiar el usuario administrador. Solo con esta asignación, no podrá abrir ni ver el recurso a través del Portal.
Sus permisos son solo a nivel de instancia, conectados a la base de datos. Desde el momento en que este usuario se conecte, tendrá acceso para hacer todo lo posible utilizando T-SQL.
Algunas configuraciones, como Firewall, nivel de servicio y creación de otras bases de datos, este usuario puede realizarlas mediante comandos T-SQL, pero no puede hacerlo a través del portal de Azure.
Vale la pena recordar que solo se puede asignar UN usuario como administrador de Azure Active Directory. Si desea tener más de una persona con este nivel de acceso, cree un grupo, agregue los usuarios a ese grupo y asígnelo como administrador de Azure Active Directory.
Alerta: El usuario/grupo que es administrador de Azure Active Directory tiene acceso automáticamente a la base de datos.
Una vez creado el servidor, aún puede habilitar/deshabilitar la autenticación a través de Azure Active Directory (Azure AD) y también administrar el usuario administrador.

Si intenta activar la opción “Solo autenticación de Azure Active Directory”, para permitir solo la autenticación usando Azure AD, verá una confirmación que le preguntará si realmente desea activar esta opción, porque DESHABILITARÁ la autenticación SQL y todos los usuarios que usen este tipo de autenticación, incluido el usuario “sa” (Administrador del servidor).

Administrador del servidor (sa)
Haga clic aquí para ver el contenidoEsto significa que este usuario no tiene ningún acceso al portal de Azure y no puede cambiar nada allí ni cambiar ninguna propiedad. Sin embargo, se puede utilizar para iniciar sesión en la instancia y tendrá acceso a todos los datos, de todas las tablas, además de poder cambiar/crear/eliminar cualquier usuario, inicio de sesión, permiso u objeto en la base de datos, además de administrar la base de datos y el firewall del servidor mediante comandos T-SQL.
Como ya comenté en este post, esta alternativa es la menos segura posible, ya que la base de datos se encarga de administrar las contraseñas y los usuarios. No es compatible con MFA y cada usuario puede tener una contraseña diferente en diferentes bancos.
Si quieres desactivar el mismo usuario en varios bancos, tendrás que ir banco por banco para desactivar/eliminar la cuenta (o crear un script para automatizar esto), en lugar de simplemente desactivar la cuenta en AD.
No es posible cambiar el nombre del administrador del servidor una vez creado el servidor, pero es posible restablecer la contraseña si es necesario.

Este usuario solo está disponible si selecciona el método de autenticación "Usar autenticación SQL" o "Usar autenticación SQL y Azure AD".
Si elige estas opciones y luego cambia el método de autenticación y luego lo cambia para permitir solo la autenticación con Azure Active Directory, este usuario se desactivará, al igual que todos los demás que usen autenticación SQL.

Creación de inicio de sesión
Haga clic aquí para ver el contenidoEl inicio de sesión es una forma de conectarse al banco, donde el banco inicial será el "maestro" y luego podrá cambiar el contexto al banco deseado. Además, el inicio de sesión se puede agregar a cualquier rol del servidor para recibir permisos a nivel de servidor.
Crear un inicio de sesión con autenticación SQL
Simple. Rápido. Práctico. Inseguro. Y un usuario más tendrá que mantener actualizada su contraseña, cambiándola cada cierto tiempo (y cambiándola en las apps), preocupándose por intentos de ataque de fuerza bruta, filtración de contraseñas, etc.
Para crear un inicio de sesión con autenticación SQL, simplemente siga el siguiente script:
USE [master]
GO
CREATE LOGIN [dirceuresende]
WITH PASSWORD = 'zlg*I1MoPZ^Xk8TNCNs%'
Crear un inicio de sesión con autenticación de Azure Active Directory
El primer paso para esto es acceder a Azure Active Directory para obtener el "Nombre de usuario principal" (UPN) del inicio de sesión que quiero agregar a la base de datos:

Ahora que conozco el nombre principal del usuario, puedo crear un inicio de sesión en el banco "maestro".
USE [master]
GO
CREATE LOGIN [difilho_msn.com#EXT#@difilhomsn.onmicrosoft.com]
FROM EXTERNAL PROVIDER
Tenga en cuenta que no necesitaba establecer ninguna contraseña para iniciar sesión. La contraseña será la propia contraseña de Azure Active Directory, una única ubicación centralizada para administrar usuarios y contraseñas.
Consejo: Si va a utilizar la autenticación SQL, le sugiero que utilice sitios web generadores de contraseñas, como último pase y elige una contraseña muy compleja (normalmente uso más de 50 caracteres)
Creación de usuarios
Haga clic aquí para ver el contenidoA continuación enumero las diferencias entre Iniciar sesión y Usuario:
| Acceso | Usuario |
|---|---|
| Creado en el banco "maestro" | Creado en el banco donde se conectará. |
| La conexión se realiza sin tener que especificar la base de datos. | La conexión se realiza especificando la base de datos. |
| El inicio de sesión puede recibir permisos a nivel de servidor (a través de roles de servidor) | No se pueden conceder permisos a nivel de servidor al usuario |
| Al iniciar sesión no se le pueden otorgar permisos en una base de datos | Al usuario se le pueden otorgar permisos en una base de datos |
| Iniciar sesión NO puede acceder a ninguna base de datos | El usuario puede acceder a las bases de datos a las que tiene acceso, incluso si no están asociadas con un inicio de sesión |
| El inicio de sesión debe estar asociado con un usuario para acceder a una base de datos. | El usuario NO necesita estar asociado con un inicio de sesión (es incluso mejor si no lo está) |
Si elige crear un inicio de sesión y luego crear un usuario asociado con un inicio de sesión, la autenticación se realizará mediante inicio de sesión, sin tener que especificar el nombre de la base de datos. Al conectarse al servidor, esta persona verá todas las bases de datos, facilitando un posible ataque.
Crear un usuario usando autenticación SQL
Como mencioné anteriormente, esta opción es la menos segura, pero es la más simple, práctica y fácil de usar, especialmente si estás usando sistemas heredados o aplicaciones que no admiten la conexión mediante Azure Active Directory.
-- Crio o usuário no banco desejado
CREATE USER [dirceuresende]
WITH PASSWORD = 'sd9s8d98asd989*(334'
GO
-- Adiciono o usuário na role "db_datareader",
-- para ter acesso de leitura em todas as tabelas
ALTER ROLE [db_datareader] ADD MEMBER [dirceuresende]
GO
-- Libero a permissão de "EXECUTE"
-- em todos os objetos do banco
GRANT EXECUTE TO [dirceuresende]
GO
Crear un usuario asociado con un inicio de sesión
En este escenario, ya existe un inicio de sesión creado previamente, ya sea mediante autenticación SQL o Azure Active Directory y ahora crearé un usuario en la base de datos deseada, utilizando este inicio de sesión existente. En este caso, no especificaré una contraseña al crear el usuario, ya que aprovechará el método de autenticación de inicio de sesión.
/*
Crio o usuário "dirceuresende" usando o login "dirceuresende"
no banco desejado
*/
CREATE USER [dirceuresende]
FOR LOGIN [dirceuresende] -- Sem senha (vai usar a autenticação do login)
/*
Adiciono o usuário na role "db_datareader",
para ter acesso de leitura em todas as tabelas
*/
ALTER ROLE [db_datareader] ADD MEMBER [dirceuresende]
GO
/*
Libero a permissão de "EXECUTE"
em todos os objetos do banco
*/
GRANT EXECUTE TO [dirceuresende]
GO
Crear un usuario usando Azure Active Directory (Azure AD)
Al igual que con la creación de un inicio de sesión, el primer paso para crear un usuario usando Azure Active Directory (Azure AD) es acceder a Azure Active Directory para obtener el "Nombre de usuario principal" (UPN) del usuario que deseo agregar a la base de datos:

Ahora que sé el nombre principal del usuario, puedo crear el usuario en el banco deseado.
-- Crio o usuário vindo do Azure Active Directory no banco desejado
CREATE USER [difilho_msn.com#EXT#@difilhomsn.onmicrosoft.com]
FOR EXTERNAL PROVIDER -- Aqui pode usar FROM/FOR EXTERNAL PROVIDER
/*
Adiciono o usuário na role "db_datareader",
para ter acesso de leitura em todas as tabelas
*/
ALTER ROLE [db_datareader] ADD MEMBER [difilho_msn.com#EXT#@difilhomsn.onmicrosoft.com]
GO
/*
Libero a permissão de "EXECUTE"
em todos os objetos do banco
*/
GRANT EXECUTE TO [difilho_msn.com#EXT#@difilhomsn.onmicrosoft.com]
GO
Crear un usuario para Azure Data Factory (identidad administrada)
Siempre que sea posible, elija utilizar la autenticación de "Identidad administrada" en su aplicación o recurso de Azure. Esto significa que solo necesitas crear el usuario en la base de datos, sin tener que ingresar ningún nombre de usuario, contraseña o KeyVault para acceder a la base de datos. Para crear el login/usuario en el banco, es de la misma manera que cualquier otro login/usuario con autenticación de Azure AD, con la diferencia que ingresarás el nombre del recurso en lugar del Nombre Principal del Usuario.
Ejemplo práctico
Tengo un recurso de Azure Data Factory y quiero agregarlo a la base de datos para que tenga acceso para leer y modificar datos y estructuras.

Agregaré el nombre del recurso ahora como usuario (depende de usted iniciar sesión o ser usuario) en la base de datos.
-- Crio o usuário com o nome do recurso do Azure Data Factory
CREATE USER [live-adf] -- Mesmo nome do recurso, conforme destaquei no print anterior
FOR EXTERNAL PROVIDER
-- Adiciono as permissões necessárias
ALTER ROLE [db_datareader] ADD MEMBER [live-adf]
ALTER ROLE [db_datawriter] ADD MEMBER [live-adf]
ALTER ROLE [db_ddladmin] ADD MEMBER [live-adf]
GRANT EXECUTE TO [live-adf]
GO
Crear un usuario para un registro de aplicación/principal de servicio
Para crear un usuario para un registro de aplicación/principal de servicio usando identidad administrada, el proceso es el mismo, simplemente ingrese el nombre de AppRegistration y agréguelo normalmente a la base de datos.
Script para agregar esta entidad de servicio a la base de datos
CREATE USER [AppRegistration_DirceuResende]
FOR EXTERNAL PROVIDER
Otro consejo: ¿Necesita ayuda para implementar la identidad administrada en su aplicación? Lee el artículo. Cadena de conexión sin contraseña a la base de datos SQL de Azure mediante una identidad administrada de Azure
¡Eso es todo, amigos!
Espero que hayas disfrutado este artículo y ¡hasta la próxima!
Dirceu Resende
Arquitecto de Bases de Datos y BI · Microsoft MVP · MCSE, MCSA, MCT, MTA, MCP.
Publicaciones relacionadas
Cargando…





Comentários (0)
Carregando comentários…