Published on

April 7, 2024

Comprendiendo el cambio de contexto de usuario y la suplantación de usuario en SQL Server

Cuando se trata de gestionar la seguridad en SQL Server, el cambio de contexto de usuario y la suplantación de usuario son dos conceptos importantes para entender. En este artículo, exploraremos estas características y cómo se pueden implementar en procedimientos almacenados para evaluar la configuración de seguridad y el acceso a los datos.

Cambio de Contexto de Usuario

El cambio de contexto de usuario se refiere a modificar el contexto en el que el código opera de un usuario a otro. Esto es útil cuando el mismo código necesita funcionar de manera diferente según los permisos y las membresías de roles del usuario. En SQL Server, se utiliza la instrucción Execute As para implementar el cambio de contexto. Cada instrucción Execute As agrega un nuevo contexto de usuario a una pila de contextos de usuario, y puedes retroceder en la pila utilizando una instrucción revert.

Por ejemplo, supongamos que tienes diferentes configuraciones de seguridad para diferentes usuarios. Mediante el uso del cambio de contexto, puedes alternar entre los contextos de usuario para evaluar qué configuraciones de seguridad ofrecen el equilibrio adecuado entre las capacidades del usuario y la seguridad apropiada.

Aquí tienes un ejemplo de cómo usar la instrucción Execute As en un procedimiento almacenado:

CREATE PROCEDURE dbo.MyProcedure
WITH EXECUTE AS 'user2'
AS
BEGIN
    -- Código a ejecutar como user2
END

Suplantación de Usuario

La suplantación de usuario permite que un usuario realice tareas con los permisos de otro usuario mientras conserva sus propios permisos. SQL Server tiene un permiso especial llamado “impersonate” que permite que un usuario opere con los permisos de otro usuario. Este permiso se puede otorgar, revocar y denegar.

Por ejemplo, supongamos que tienes un usuario que necesita realizar ciertas tareas con los permisos de otro usuario. Al otorgar el permiso de suplantación, puedes permitir que el usuario opere con los permisos necesarios sin darles acceso directo a esos permisos.

Aquí tienes un ejemplo de cómo otorgar el permiso de suplantación:

GRANT IMPERSONATE ON USER::user2 TO user3;

Implementación de Configuraciones de Seguridad

Para evaluar y cambiar las configuraciones de seguridad para los contextos de usuario, puedes crear un banco de trabajo de configuraciones de seguridad. Este banco de trabajo puede incluir inicios de sesión, usuarios, roles personalizados y permisos de base de datos. Al asignar y supervisar estas configuraciones de seguridad, puedes evaluar las capacidades de los usuarios con diferentes configuraciones de seguridad.

Aquí tienes un ejemplo de cómo configurar un banco de pruebas para evaluar las configuraciones de seguridad:

CREATE LOGIN login1 WITH PASSWORD = 'J345#$)thb';
CREATE LOGIN login2 WITH PASSWORD = 'Uor80$23b';
CREATE LOGIN login3 WITH PASSWORD = 'Yie79$12v';

CREATE USER user1 FOR LOGIN login1;
CREATE USER user2 FOR LOGIN login2;
CREATE USER user3 FOR LOGIN login3;

EXEC sp_addrolemember 'db_owner', 'user1';
EXEC sp_addrolemember 'db_datareader', 'user2';

CREATE ROLE proc_executor;
GRANT EXECUTE TO proc_executor;
ALTER ROLE proc_executor ADD MEMBER user3;

GRANT IMPERSONATE ON USER::user2 TO user3;

CREATE PROCEDURE dbo.MyProcedure
AS
BEGIN
    -- Código a ejecutar
END;

Una vez que hayas configurado el banco de trabajo, puedes verificar el impacto de las configuraciones de seguridad ejecutando declaraciones select y procedimientos almacenados en diferentes contextos de usuario. También puedes desmantelar las configuraciones de seguridad personalizadas después de completar las pruebas eliminando inicios de sesión, usuarios, roles y permisos.

Conclusión

El cambio de contexto de usuario y la suplantación de usuario son características poderosas en SQL Server que te permiten evaluar y gestionar las configuraciones de seguridad para diferentes contextos de usuario. Al entender cómo implementar estas características, puedes asegurarte de que tu base de datos sea segura y que los usuarios tengan los permisos adecuados para realizar sus tareas.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.