Riesgos del servidor vinculado

10

Estoy implementando una nueva característica que requiere datos de bases de datos en varios servidores. Solo necesito unir datos de todos estos servidores y ordenarlos. Las dos opciones que vienen a la mente son:

  1. Utilice servidores vinculados y escriba una consulta simple para unir y clasificar los datos que se ejecutarán desde un servidor y recopilarán datos de los demás.

  2. Use la aplicación para recopilar los datos de todos los servidores y envíelos de vuelta a SQL Server para ordenarlos (no desea implementar el orden en la aplicación).

Ejecutamos nuestros servidores en clústeres activos / activos en SQL Server 2008 r2. Todas las bases de datos tienen los mismos permisos, si tiene acceso a una base de datos / servidor, tiene permiso para todas ellas. Esta es una aplicación pública (que requiere inicio de sesión del usuario).

¿Cuáles son los riesgos de usar servidores vinculados? ¿Hay alguna falla de seguridad que deba preocuparme? ¿Hay algún problema al ejecutar servidores vinculados en clústeres activos / activos? ¿Habría problemas de rendimiento significativos en comparación con la alternativa?

Parece que hay un "zumbido" negativo general sobre los servidores vinculados, pero no puedo encontrar nada concreto que me haga creer que hay preocupaciones reales allí.

Aepheus
fuente
Referencia futura es mejor no publicar preguntas varias veces. Ya tiene comentarios sobre SO con respecto a su pregunta, simplemente puede marcar la pregunta para atención del moderador y pedirles que migren la pregunta a DBA.SE. stackoverflow.com/questions/16045441/linked-server-risks

Respuestas:

13

Los servidores vinculados pueden funcionar muy bien siempre que haya pensado en las implicaciones:

  1. Seguridad: una consideración clave es que si tiene servidores vinculados, si uno se ve comprometido, todos corren un riesgo significativo. Incluso si tiene diferentes credenciales para cada usuario, diferentes servidores (lo que evitaría que un atacante acceda a otros recursos si el único vector de ataque se filtró / descubrió / adivinó credenciales), el enlace puede omitir todo eso de manera efectiva. El enlace también omitirá las protecciones que ocultan las otras bases de datos de la red pública, como una circunstancia en la que uno o más de los servidores no están suministrando datos a una interfaz pública, por lo que normalmente no serían visibles a través de sus firewalls de ninguna manera. Puede pensar "bueno, ¿no es ese mismo riesgo un problema con la replicación?" a lo que la respuesta es sí, perola replicación es entre bases de datos de aplicaciones individuales y la ruta del servidor vinculado podría comprometer otras bases de datos en el mismo servidor (s) ya que el enlace está en el nivel del servidor y no en el nivel de la base de datos (por supuesto, puede mitigar este riesgo mediante un control cuidadoso del acceso del usuario derechos, pero al menos debe ser consciente de ello en su planificación). Como nota al margen sobre seguridad: si los servidores no están en el mismo sitio, asegúrese de usar alguna forma de VPN para vincularlos, en lugar de hacer que SQL Server esté disponible en una interfaz pública.

  2. Ancho de banda: si todos los servidores están en el mismo DC con una conectividad agradable, rápida y no medida entre ellos, entonces es posible que no deba preocuparse por este, pero tenga más cuidado con las conexiones más distantes, especialmente si sus usuarios podrán ejecutar anuncios. consultas puntuales de cierta variedad. La compresión en el nivel de enlace VPN será de gran ayuda aquí para la mayoría de los conjuntos de datos, pero tenga en cuenta que esto será a expensas de una mayor latencia que podría exacerbar el problema de eficiencia (ver más abajo).

  3. Eficiencia: si simplemente está tirando fragmentos de datos por la línea, entonces este no es un problema masivo (pero considere bloquear: vea mi siguiente punto), pero tan pronto como haga algo por medio de uniones y demás, hay límites para lo que el planificador de consultas puede hacer para optimizar sus solicitudes. Si necesita hacer muchas búsquedas de índice que crearán consultas de ejecución muy lenta si los servidores no son locales entre sí debido a la latencia de la red (el mismo problema definitivamente también está presente para los servidores locales, pero en menor medida, por supuesto), y en su lugar puede usar un escaneo de índice (compensando el uso del ancho de banda para obtener beneficios de latencia) comiendo ancho de banda y si mantiene bloqueos (para evitar problemas de lectura sucia, etc.) esto también afectará a otras partes de la aplicación.

  4. Bloqueo / concurrencia: Salir del servidor aumentará el tiempo de ejecución de las consultas, lo que exacerbará los problemas de bloqueo que aún no sabe que tiene y, por lo tanto, reducirá severamente la concurrencia y la escalabilidad de su aplicación. Debe tener mucho cuidado si usa consultas cruzadas de servidores regulares y / o de larga duración para vigilar el problema de bloqueo y dar sugerencias de planificación según corresponda.

Mientras tenga suficientes provisiones para gestionar los problemas de seguridad y rendimiento, no vería un problema con el uso de servidores vinculados, aunque puede haber formas mejores / más seguras / más confiables / más fáciles de lograr lo mismo. resultado.

David Spillett
fuente
1

He experimentado el mismo "zumbido" negativo, pero el único problema que he enfrentado con los servidores vinculados es la facilidad con la que puede extraer grandes cantidades de datos a través de la red. Desde el punto de vista del DBA, esto es aterrador si tiene no DBA que pueden hacer esto, incluso si prometen no abusar de él.

En su caso, no parece haber ningún beneficio al escribir su propia aplicación, ya que aún tendrá que mover los datos. Parece que tiene un modelo de permisos muy simple, por lo que, dependiendo del entorno, puede valer la pena configurar algunos permisos especiales para que el enlace no se use donde no es necesario.

Mate
fuente
0

Los servidores vinculados crean un estado casi "mágico" para los desarrolladores. Pero puede ser muy fácil abrumar a la red con una consulta que puede devolver cientos de miles de registros de 5 servidores en una sola solicitud, y también puede bloquear registros en los 5 servidores. No dejaría que nadie más que los DBA experimentados escriban las consultas hasta que haya capacitado a 1 o 2 desarrolladores principales sobre los peligros de bloquear todas las bases de datos con una sola consulta.

Los servidores vinculados son como una droga, una vez que los usa, nunca volverá y se preguntará por qué nunca los usó antes. Nunca he tenido un problema, pero siempre he sido cuidadoso.

Clark Vera
fuente