Bağlı Sunucu Riskleri


10

Birden çok sunucudaki veritabanlarından veri gerektiren yeni bir özellik uyguluyorum. Sadece tüm bu sunuculardan veri birliği ve sıralamak gerekir. Akla gelen iki seçenek:

  1. Bağlantılı sunucuları kullanın ve bir sunucudan çalışacak verileri sıralamak ve sıralamak ve diğerlerinden veri toplamak için basit bir sorgu yazın.

  2. Tüm sunuculardan veri toplamak için uygulamayı kullanın ve sıralamak için SQL Server'a geri gönderin (sıralamayı uygulamada uygulamak istemiyorum).

Sunucularımızı SQL Server 2008 r2'deki etkin / etkin kümelerde çalıştırıyoruz. Tüm veritabanları aynı izinlere sahiptir, bir veritabanına / sunucuya erişiminiz varsa, hepsine izin verebilirsiniz. Bu halka açık bir uygulamadır (kullanıcı girişi gerektirir).

Bağlantılı sunucuları kullanmanın riskleri nelerdir? İlgilenmem gereken herhangi bir güvenlik açığı var mı? Etkin / etkin kümelerde bağlı sunucuları çalıştırırken herhangi bir sorun var mı? Alternatifle karşılaştırıldığında önemli performans sorunları olur mu?

Bağlantılı sunucular hakkında genel bir negatif "vızıltı" var gibi görünüyor, ama orada herhangi bir gerçek endişeler olduğuna inanmam için somut bir şey bulamıyorum.


Gelecekte başvurmak, soruları birden çok kez göndermemektir. Sorunuzla ilgili SO hakkında zaten yorumlarınız var, soruyu moderatörlerin dikkatine işaret edebilir ve soruyu DBA.SE'ye taşımasını isteyebilirsiniz. stackoverflow.com/questions/16045441/linked-server-risks

Yanıtlar:


13

Bağlantılı sunucular, sonuçları düşündüğünüz sürece çok iyi çalışabilir:

  1. Güvenlik: Önemli bir nokta, bağlı sunucularınız varsa, birinden ödün verilirse hepsinin önemli risk altında olmasıdır. Her kullanıcı için farklı kimlik bilgileriniz olsa bile (tek bir saldırı vektörü sızdırılmış / keşfedilmiş / tahmin edilmiş kimlik bilgileri varsa, bir saldırganın diğer kaynaklara ulaşmasını durduracaktır) bağlantı tüm bunları etkili bir şekilde atlayabilir. Bağlantı ayrıca, sunucuların bir veya daha fazlasının genel bir arabirime veri sağlamadığı, yani normalde güvenlik duvarlarınız üzerinden hiçbir şekilde görünmeyeceği bir durum gibi, diğer veritabanlarını genel ağdan gizleyen korumaları atlar. "Pekala, aynı risk çoğaltma ile ilgili bir sorun değil mi?" cevabının evet olduğu, ancakçoğaltma tek tek uygulama veritabanları arasındadır ve bağlantılı sunucu yolu, bağlantı DB düzeyinde değil sunucu düzeyinde olduğu için aynı sunucularda diğer veritabanlarının güvenliğini tehlikeye atabilir (elbette bu riski kullanıcı erişiminin dikkatli bir şekilde kontrol edilmesiyle azaltabilirsiniz. ancak en azından planlamanızda bunun farkında olmanız gerekir). Güvenlikle ilgili bir yan not olarak: sunucular aynı sitede değilse, SQL Server'ı genel bir arayüzde kullanılabilir hale getirmek yerine, onları bağlamak için bir çeşit VPN kullandığınızdan emin olun.

  2. Bant genişliği: Tüm sunucular kendi aralarında hoş, hızlı, ölçülmemiş bağlantı ile aynı DC'de ise, bu konuda endişelenmenize gerek olmayabilir, ancak özellikle kullanıcılarınız reklam yayınlayabilecekse daha uzak bağlantılarda daha dikkatli olun. çeşitli hoc sorguları. VPN bağlantı seviyesindeki sıkıştırma, çoğu veri seti için burada büyük ölçüde yardımcı olacaktır, ancak bunun verimlilik sorununu artırabilecek daha fazla gecikme pahasına olacağını unutmayın (aşağıya bakın).

  3. Verimlilik: Sadece veri yığınlarını çizgiden aşağı çekiyorsanız, bu büyük bir sorun değildir (ancak kilitlemeyi düşünün: bir sonraki noktama bakın), ancak birleşme yoluyla herhangi bir şey yapar yapmaz, sorgu planlayıcı isteklerinizi optimize etmek için yapabilir. Ağ gecikmesi nedeniyle sunucular birbirlerine yerel değilse çok yavaş çalışan sorgular oluşturacak birçok dizin araması yapılması gerekiyorsa (aynı sorun yerel sunucular için de kesinlikle vardır, ancak daha az ölçüde), bunun yerine bant genişliği yiyen bir indeks taraması (bant genişliği kullanımında gecikme faydaları elde etmek için kullanılabilir) kullanabilir ve kilitler tutuyorsa (kirli okuma sorunlarını önlemek için) bu uygulamanın diğer bölümlerini de etkileyecektir.

  4. Kilitleme / Eşzamanlılık: Sunucu dışına çıkmak, sorguların çalışma süresini artıracak, bu da henüz bilmediğiniz kilitleme sorunlarını artıracak ve böylece uygulamanızın eşzamanlılığını ve ölçeklenebilirliğini ciddi şekilde azaltacaktır. Kilitleme konusuna dikkat ettiğiniz ve planlayıcı ipuçlarını uygun şekilde verdiğiniz düzenli ve / veya uzun süredir çalışan çapraz sunucu sorguları kullanıyorsanız çok dikkatli olmanız gerekir.

Güvenlik ve performans sorunlarını yönetmek için yeterli hükümleriniz olduğu sürece, bağlantılı sunucuları kullanmayla ilgili bir sorun görmüyorum, ancak aynı şeyi elde etmek için daha iyi / daha güvenli / daha güvenilir / daha kolay güvenli yollar olabilir sonuç.


1

Ben aynı negatif "vızıltı" yaşadım, ama bağlantılı sunucular ile karşı karşıya tek sorun ağ üzerinden büyük miktarda veri çekme kolaylığıdır. DBA açısından bakıldığında, bunu kötüye kullanamayacağına söz vermiş olsalar bile, bunu yapabilecek DBA olmayanlarınız varsa korkutucu olur.

Sizin durumunuzda, kendi uygulamanızı yazmak için herhangi bir faydası görünmemektedir, çünkü bu yine de verileri taşımalıdır. Çok basit bir izin modeliniz var gibi görünüyor, bu nedenle ortama bağlı olarak, bağlantının olması gerekmediği yerlerde kullanılmaması için bazı özel izinler ayarlamaya değer olabilir.


0

Bağlı sunucular, geliştiriciler için neredeyse "büyülü" bir durum oluşturur. Ancak, tek bir istekte 5 sunucudan yüz binlerce kaydı döndürebilen bir sorgu ile ağı boğmak çok kolay olabilir ve kayıtları 5 sunucuda da kilitleyebilirsiniz. Kimseye izin vermezdim ama tecrübeli DBA'lar tek bir sorgu ile tüm veritabanlarını kilitlemenin tehlikeleri hakkında 1 veya 2 üst geliştiriciyi eğitene kadar sorguları yazsın.

Bağlantılı sunucular bir ilaç gibidir, bunları kullandıktan sonra asla geri dönmeyecek ve neden daha önce hiç kullanmadığınızı merak etmeyeceksiniz. Hiç sorun yaşamadım ama her zaman dikkatli davrandım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.