post icon

Restringir conexión a usuarios de SQL Server basados en su IP como en MySQL

Ayer un usuario del foro del MSDN hacía una pregunta más que interesante, como podía crear un modelo de seguridad semejante al que ofrece MySQL de restringir a ciertos usuarios que puedan acceder únicamente desde ciertas direcciones IP, es decir, por más que las credenciales de autenticación (usuario y password) sean válidos, si éstos no se conectan de las direcciones IP permitidas no podrán loguearse a la base de datos.

Lo típico en un ambiente Windows + SQL Server es que las conexiones sean restringidas por direcciones IP desde el Firewall de Windows, pero este sistema carece de la capacidad de detectar que usuarios de base de datos o dominio son los que se quieren conectar al motor, por lo que ofrece una solución dura que no sirve para este cometido.

Tampoco SQL Server incorpora una solución nativa de este tipo, por lo que es necesario crearlo de manera artificial con una característica con la que MySQL no cuenta, los triggers a nivel de base de datos.

El ejemplo que expondré será bastante simple y estático, pero es posible extenderlo y flexibizarlo utilizando tablas para almacenar la relación de usuarios -> ip permitidas.

create trigger ValidarConexion on all server
for logon
as
begin
declare @IP varchar(500);

select  @IP = client_net_address
  from    sys.dm_exec_connections
  where   session_id = @@spid;

if suser_sname() = 'sa'
and @IP not in ( '192.168.200.100', '192.168.1.50', '127.0.0.1' )
begin
   rollback transaction;
end
end

Comentarios desde Facebook:

Sin Comentarios aun, puedes tú ser el primero en comentar!

Deja tu Comentario

Responder