Servidor vinculado disponible para usuarios sin permisos

9

Tengo usuarios que ven un servidor vinculado que no deben ver.

El servidor vinculado está definido para que solo yo tenga acceso a él, pero todos puedan verlo y usarlo.

He creado el nuevo servidor vinculado mediante los siguientes pasos:

  1. Conecte SSMS Object Explorer a la instancia de SQL Server
  2. Expandir Server Objects, clic derecho Linked Serversy clic izquierdoNew Linked Server...
  3. Bajo Generalla pestaña elegir SQL Serverde Server typey escribir el nombre del servidor
  4. En la Securitypestaña de la parte superior Add, haga clic en , elija "sa" como Local Login, ingrese Remote Userel nombre yRemote Password
  5. En la Securitypestaña de la parte inferior (debajo For a login not defined in the list above, connections will:), elija la primera opción:Not be made
  6. Haga clic OKy comience a probar

Ahora la única persona que se supone que ve el servidor vinculado soy yo ("sa"), pero de alguna manera otros usuarios pueden verlo y usarlo.

Nota 1: Los usuarios que pueden usar el servidor vinculado tienen permisos en el servidor remoto, no ven datos que no deberían ver, solo pueden acceder a ellos desde el servidor vinculado cuando no deberían poder hacerlo.

Nota 2: Soy el único sysadminen ambas instancias.

Roi Gavish
fuente
1
Bueno, realmente no puede ocultar el servidor vinculado, pero cuando intentan usarlo, si su contexto de inicio de sesión actual no tiene ningún permiso en el otro extremo ...
Aaron Bertrand
@AaronBertrand Puede ocultar un servidor vinculado simplemente no proporcionando acceso a él. Un inicio de sesión que no está definido en la lista de inicios de sesión permitidos y que no es un administrador de sistemas no puede ver el servidor vinculado en el explorador de objetos.
Roi Gavish
@AaronBertrand Si su contexto de inicio de sesión actual tiene permisos en el otro extremo, todavía no se supone que puedan conectarse a través del servidor vinculado si no se les permite.
Roi Gavish
1
No, no puede ocultar el servidor vinculado de esa manera. ¿Has probado esto?
Aaron Bertrand

Respuestas:

7

No hay forma de "ocultar" un servidor vinculado o evitar que usuarios no autorizados intenten usarlo. Todo lo que puede controlar es si realmente tienen acceso al otro lado. Un servidor vinculado en sí mismo no es un objeto real; como sinónimo, no otorga acceso al alias, solo a las cosas a las que hace referencia.

Pruébelo y verá que algunos de sus supuestos (por ejemplo, "un inicio de sesión ... no puede ver el servidor vinculado en el explorador de objetos") son falsos. Hice esto:

  1. Creé un inicio de sesión y no obtuve privilegios de ningún tipo, solo CONECTAR / función pública.
  2. Creó un servidor vinculado y no agregó este inicio de sesión a la lista de inicios de sesión.
  3. Abrió una nueva instancia de Management Studio, conectándose con este inicio de sesión.
  4. Pude ver todos los servidores vinculados en Objetos del servidor> Servidores vinculados.
  5. También pude consultar sys.serverspara ver la lista de servidores vinculados.

Pude ejecutar la siguiente consulta sin problema:

SELECT name FROM [linked server].master.sys.objects;

Sin embargo, no pude ejecutar consultas en bases de datos que no son del sistema, ya que no había otorgado acceso explícito a ninguna base de datos que no sea del sistema ni a los objetos que contiene. P.ej:

SELECT SalesOrderID FROM [linked server].AdventureWorks2012.Sales.SalesOrderHeader;

Dio este error:

Mensaje 7314, Nivel 16, Estado 1, Línea 1
El proveedor OLE DB "SQLNCLI11" para el servidor vinculado "servidor vinculado" no contiene la tabla "" AdventureWorks2012 "." Ventas "." SalesOrderHeader "". La tabla no existe o el usuario actual no tiene permisos en esa tabla.

Espero que pueda lograr resultados más restrictivos al negar explícitamente el acceso a objetos específicos en el servidor vinculado (o por DENY CONNECT SQLese inicio de sesión por completo), pero esto no limita su efecto al servidor vinculado; También afecta las conexiones directas.

En cualquier caso, no veo el punto de lo que estás tratando de lograr:

  1. Si el usuario no tiene acceso al otro lado, ¿cuál es el daño al dejarlo intentar ? (Es posible que tenga mejor suerte diciéndoles que no lo hagan y auditándolos que intentando evitar que lo intenten en primer lugar)
  2. Si el usuario hace tener acceso en el otro lado, por qué no pueden utilizar el servidor vinculado?
Aaron Bertrand
fuente
2

Puede usar la primera opción "No hacerse con" una asignación de inicio de sesión como a continuación:

ingrese la descripción de la imagen aquí

Aquí está el resultado con el inicio de sesión asignado:

ingrese la descripción de la imagen aquí

Y esto es lo que sucede con otra cuenta.

ingrese la descripción de la imagen aquí

PollusB
fuente