Cross Database Ownership Chaining


SQL Server, sahiplik zinciri kırıldığında, hakları yeniden kontrol eder.

Mesela A tablonuz, B görünümünüz (view) var. B, A’nın bazı kolonlarını içeriyor. Eğer tablonun da görünümün de sahibi sizseniz, sadece görünümde hak verdiğiniz birisi alttaki tabloda hakkı olmasa bile görünümü kullanabilir.

Ama sizin A tablonuz üzerinde, bir başkası B görünümünü oluşturdu diyelim. Bunun için görünüm oluşturma hakkı ve sizin tablonuza erişim hakkı olması yeterli. Farklı olan, sahiplik zincirinin kırılmış olması. Tablo sizin, bu tabloyu referans alan görünüm ise başkasına ait. Görünümü oluşturan kişi üçüncü bir kişiye izin verirse, bu üçüncü kişinin görünümü kullanmak için alttaki tablodan kullanılan kolonlara da erişim hakkının olması ayrıca gerekir.

SQL Server, server çapındaki bir opsiyonla, birden fazla veritabanında ownership chain (sahiplik zinciri) kurulmasına izin verebilir. Varsayılan ayarda bu sahiplik zincirine izin verilmemektedir. İzin vermenizi tavsiye etmem. Tasarımınız bunu gerektiriyorsa izin vermek zorunda kalabilirsiniz ama bakın nasıl bir riski var.

Diyelim ki İK diye bir insan kaynakları veritabanınız ve bunun altında Maaşlar diye bir tablonuz var. İçeriden meraklı bir arkadaş bu tabloya erişmek istiyor ama hakları buna yeterli değil. Öte yandan Sacit diye bir arkadaşın bu tabloya erişim hakkı olduğunu da biliyor. Meraklı, eğer veritabanı oluşturma hakkına sahipse, kendisine ait bir veritabanı oluşturur. Bu veritabanında vMaaşlar diye bir görünüm yapar. Bu görünümde İK veritabanındaki Maaşlar tablosunu baz alır. Görünümün sahibi olarak da Sacit’i atar.

Durumu bir değerlendirelim:

Meraklı’nın veritabanında Sacit’e ait bir görünüm var. Bu görünüm, Sacit’in erişim hakkı olan İK veritabanındaki Maaşlar tablosunu baz almış. SQL Server’da Cross Database Ownership Chaining’e izin verilmişse, sorun yok. Yasal bir erişim bu. İlginç olan, Meraklı’nın vMaaşların yer aldığı veritabanında tüm haklara sahip olması. Yani, aslında erişimi olmayan maaş bilgilerine bu şekilde erişmiş oldu.

Aklınızda bulunsun…

Bu yazı SQL Server içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s