Tengo una aplicación para implementar en producción que utiliza la seguridad del 'sistema de honor'. Es decir, todos los usuarios se conectan a la base de datos utilizando una credencial de usuario / contraseña de SQL y la aplicación administra los permisos por sí misma. La última parte no me molesta tanto como el hecho de que el objeto de conexión contiene credenciales incrustadas y se puede copiar libremente. Intento encontrar alguna forma de limitar las conexiones a un conjunto más limitado de clientes. Puedo crear reglas de firewall para limitar por IP, por supuesto. ¿Hay alguna forma de 'precalificar' los inicios de sesión de SQL por cuenta de máquina o membresía de dominio?
sql-server
sql-server-2012
security
Jeff Sacksteder
fuente
fuente
Respuestas:
Puede lograr esto a través de un Logon Trigger . En su activador de inicio de sesión, puede tener la lógica para hacer las verificaciones necesarias que está buscando (como el nombre de la máquina). Desafortunadamente, no creo que haya una manera de obtener la membresía de dominio del usuario si está utilizando la autenticación de SQL Server.
Puede ver el uso de la función EVENTDATA para ver si puede extraer otra información para determinar si se debe permitir o no la conexión. Si no desea que ese inicio de sesión en particular sea exitoso, puede probar y emitir a condicionalmente
ROLLBACK
.fuente
Como Thomas mencionó que se puede hacer usando LOGON Trigger. A continuación se muestra el script que te ayudará
fuente
Host_Name()
es seguro y puede ser engañado fácilmente por casi cualquier persona. Es particularmente fácil de hacer desde Excel. Su sería mucho más fiable para este propósito.@IPAddress