MSSQL Server’de “Be made using this security context” Bağlantısı ile LINKED SERVER  Oluşturma-2

Bu makalede mssql’den mssql’e linked server kullanarak bağlanmayı anlatacağım. Bağlanma türlerine değinmeye çalışacağım. İkinci bahsedeceğim bağlanma türü linked server security ekranında bulanan Be made using this security context  seçeneği olmuş olacaktır.

Linked Server kurarken “Be made using this security context” seçeneği, SQL Server’ın bağlı olduğu uzak sunucuya bağlanırken belirli bir kullanıcı adı ve şifre kullanmasını sağlar. Bu, genellikle SQL Server Authentication yöntemiyle çalışır. Burada girilen bilgiler karşıda bağlanılmaya çalışılan sunucuda mevcut değilse kullanıcı olmadığına dair bir hata ekranı karşınıza çıkar.

Bu seçenek, SQL Server Authentication kullanan bir bağlantıdır. Windows Authentication (Windows kimlik doğrulaması) ile bağlantı kurulmaz. Yani, SQL Server’ın mevcut kullanıcısının kimlik bilgileri yerine, burada belirlediğiniz bir SQL Server kullanıcı adı ve şifresi kullanılacaktır. Gerçek sistemde kullanılan kullanıcı adı ve şifresinin girilmesi gerekmektedir.

Burada önemli bir not olarak  Be made using this security context bu bağlanma şekli oluşturulduğunda dikkat ederseniz oluşturulduktan sonra linked server sunucusunda oluşturulacak iki sunucuda aynı kullanıcının olmasına gerek yok ben örneğimi A1 kullanıcı üzerinden yaptım aşağıdaki resimde görüldüğü gibi sadece hedef instance’da ki bir kullanıcı adı ve şifresiyle de linked server kullanılır.

P1BAGLANTI adında Be made using this security context bağlantı şekliyle paylaşım sunucusu olan S2 sunucusunda linked server bağlantısı oluşturulur.

Günlük hayatta bu linked server bağlantı şekli farklı bir instance altında yapılmaktadır.

Bu bağlantı şekli  şu an bulunmuş olduğumuz sunucudaki P1 logininin hedeftedeki sunucuda ne yetkisi varsa aynı yetkilere sahip olurlar. Çünkü hedef sunucudaki kullanıcı adı ve şifresini girmiş olduk. Yetki derken linked server da P1 kullanıcısının linked serverda gördüklerini S2 sunucusundaki rastgele kullanıcı tanımlanan her şeyi görmektedir.(B1 kullanıcısı). Gerçek ortama uyarlayacak olursak farklı bir instance altında bu linked server bağlantı şekli oluşturulduktan sonra ilgili instance altında farklı bir kullanıcıda bu linked server bağlantısını görür. Bu sebeplerden ötürü gerçek sistemlerde ilgili kullanıcıya farklı instance altında linked server bağlantısı oluşturulur. Görünür ifadesindeki kasıt sadece linked server adları görülmektedir.

S2 sunucusundaki  tüm loginler hedefteki login’in hedef üzerinde ne yetkisi varsa erişebilir olacaktır. Yetki aykırılığı ilkesine aykırı olduğu için bu linked server bağlantı şekli önerilmez. Çünkü ortak bir instance altında oluşturulan bu bağlantı şekliyle diğer kullanıcılar bu linked server altındaki tüm verileri görmektedir.

Bu makalede, önceki makalede oluşturmuş olduğum linked server’ı siliyorum kullanıcılarım her şey yerli yerinde kalıyor. İki sunucuda A1 isminde aynı sid e sahip kullanıcı var S2 sunucusunda B1 kullanıcı  var.

S2 sunucusunda bir linked server oluşturuyorum. SADECE BİR YERİ FARKLI

Other data source diyerekte aynı yapı oluşturulabilir.

Farklı olan kısım burası Be made using this security context

Buradaki A1 kullanıcısı sadece verilerin alınacağı sunucudaki kullanıcı adı ve şifresi ilgili sunucuyla bir bağlantısı  yok.

Security kısmında ayrıca Local login, Remote user ve Remote password alanlarının olduğunu görmekteyiz. Buradaki Local login bölümü sizin linked server oluşturduğunuz veri tabanında var olan kullanıcıları seçebileceğiniz/yazabileceğiniz alan(B1 logini ve yeni oluşturacağım C1 login i). Remote user ve password bölümü ise uzaktaki erişmek istediğiniz sunucuda yer alan kullanıcı ve o kullanıcının şifresini gireceğiniz bölüm. Bu mod da tanımlanmış olan bir instance altındaki linked serverda local login remote user remote password alanlarını kullanmaya gerek yok. Zaten oluşturulduğu instance altındaki tüm login’ler linked server ı kullanabilecek. Çünkü oluşturduğumuz Be made using this security context linked server bağlantısı bu yapıyı destekliyor.

Kullanıcı administrator olsa bile linked server a A1 kullanıcısını tanımladığım için A1 kullanıcısının S1 sunucusundaki tanımlı olduğu veritabanları gelir.

Yukarıdaki şekilde linked server bağlantımızı oluşturalım.

S2/administrator kullanıcısıyla oluşturmuş olduğum linked server A1 kullanıcısı üzerindeki yetkileri kullanarak geldi. A1 kullanıcıyla giriş yapıp linked server ile gelen veritabanlarını görmekteyiz.

Şimdi S2 de local olarak oluşturulan B1 loginiyle girelim.

Bu kullanıcıyla login olduktan sonra aynı linked server bağlantısı geldi çünkü ilgili instance altında Be made using this security context yöntemiyle hangi linked server bağlantısı oluşturulmuşsa oluşturulan instance altında tüm loginler bu linked server bağlantısını görmektedir.

Linked server oluştururken security tabında local login remote login bağlantısı yapılmamasına rağmen aynı instace altında oluşturulan B1 logini bu linked server bağlantısını ve altında bulunan veritabanlarını görmüş oldu. Bu yapının olmasını sağlayan Be made using this security context’dir.

Select sorgusu çektiğimizde ise sonucumuzu görmüş olduk.

Gerçek sistemlerde bir paylaşım sunucusu ve aynı zamanda birden fazla instance var  kişiler bu paylaşım sunucusunda kendi kullanıcı adı ve şifresiyle login oluyor oradan istediği işlemleri tanımlanmış olan linked server dan yapıyor. Tanımlanan linked server ilgili instance altında dba yapmaktadır. Bu instance altında daha sonradan tanımlanan diğer kullanıcılarda bu linked server ı kullanıyor yani linked server a bağlanan ana kullanıcı ve şifresi başka biriyle paylaşılmamış oluyor yeni bir kişi bağlanmaya çalıştığında ilgili paylaşım sunucusundaki instance da bir login oluşturup linked server bağlanıyor gerçek veritabanına bağlanan kullanıcı adı ve şifresini öğrenmeden. Bu şekilde kurulan yapıların hepsi Be made using this security context bu şekilde oluşturulmaktadır. Be made using login’s current security context seçeneğinde ise linked server bağlantısını farklı bir kullanıcı kullanması için sadece remote login password kısmında sid ile oluşturulan kullanıcı adı ve şifresi kullanılmaktadır. İlgili makale okuna bilir.

Kısacası linked server’ın tanımlı olduğu ikinci sunucuda tanımlanan login’ler  linked server’da hiçbir işlem yapmadan bağlanmış olacak. Aşağıda görüldüğü gibi.

Başka bir makalede görüşmek dileğiyle..

“O gün, başlarını dikerek koşacaklar, gözleri kendilerine bile dönmeyecek ve gönülleri bomboş kalacaktır.”İbrahim-43

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir