Sahiplik chains

Birden çok veritabanı nesnesi diğer sırayla eriştiğinizde, sıra olarak bilinen bir Zincir.Tür zincirlerini bağımsız var olsa da, SQL Server bağlantılar, zincirdeki erişir. SQL Server kendisini oluşturan nesnelerle ilgili izinler, farklı nesnelere ayrı ayrı erişmek, onu olduğundan değerlendirir. Bu farklar, güvenlik yönetimi ile ilgili önemli etkiler.

Sahiplik zincirleme görünümü gibi bir nesne için izinleri ayarlama, yönetme, birden çok tablo gibi birden çok nesne erişimi sağlar.Sahiplik zincirleme senaryolarda izin denetimi atlanıyor için izin veren bir küçük bir performans avantaj sunar.

Izinler bir zincir nasıl kontrol

Nesne bir zinciri üzerinden erişilen zaman SQL Server ilk arama nesnenin sahibi nesneye sahibine karşılaştırır. Bu, önceki bağlantı zincirdeki değil.Iki nesne, sahibi aynı varsa, başvurulan nesne üzerindeki izinleri değerlendirilir.

Örnek sahipliği zincirleme

Aşağıdaki örnekte, July2003 görünümü tarafından Mary aittir.Filiz, görünümü Alex izinlerini izni.Kullanıcının bu örnekte, veritabanı nesneleri üzerinde hiçbir izin vardır.Alex görünümünü seçtiğinde ne olur?

Diagram of ownership chaining

  1. Alex executes SELECT * on the July2003 view.SQL Server checks permissions on the view and confirms that Alex has permission to select on it.

  2. The July2003 view requires information from the SalesXZ view.SQL Server checks the ownership of the SalesXZ view.Bu görünüm aynı sahibine (olduğundanebru) Bu izinleri çağıran görünüm olarakSalesXZ işaretlenmemiş.Gerekli bilgileri verir.

  3. The SalesXZ view requires information from the InvoicesXZ view.SQL Server checks the ownership of the InvoicesXZ view.Bu görünüm aynı sahibi olarak önceki nesne izinlerine sahip olduğundan InvoicesXZ işaretlenmemiş.Gerekli bilgileri verir.Bu noktaya sahibine () bir sıradaki tüm öğeleri kalmışlardır.ebru).Bu olarak bilinen bir Kesilen sahiplik zinciri.

  4. The InvoicesXZ view requires information from the AcctAgeXZ view.SQL Server checks the ownership of the AcctAgeXZ view.Önceki nesne (sahibinden bu görünümün sahibini farklıdır, çünküSAM, not ebru), tam izinleri hakkında bilgi bu görünümü alınır.If the AcctAgeXZ view has permissions that enable access by Alex, information will be returned.

  5. The AcctAgeXZ view requires information from the ExpenseXZ table.SQL Server checks the ownership of the ExpenseXZ table.Çünkü bu sahibine tablo önceki nesne (sahibinden farklıdır.CAN, not SAM), bu izinler hakkında bilgi için tam tablo alınır.If the ExpenseXZ tablo has permissions that enable access by Alex, information is returned.

  6. Zaman July2003 bilgi almaya görünümü çalışır.ProjectionsXZ tablo, geçici veritabanı zincirleme etkinleştirilip etkinleştirilmeyeceğini arasında görmek için önce sunucu denetlerVeritabanı 1 and Veritabanı 2.Geçici veritabanı zincirleme etkinleştirilirse, sunucu sahipliğini denetleyecek ProjectionsXZ tablosudur.Bu tabloda sahip olduğu aynı sahibi olarak, arama görüntüleme)ebru), bu tablo izinleri işaretlenmemiş.Istenen bilgileri verir.

veritabanları arası sahiplik zinciri

SQL Server Sahiplik belirli veritabanları arasında veya tek bir örneğini içindeki tüm veritabanları arasında zincirleme izin vermek için yapılandırılmış SQL Server. veritabanları arası sahiplik zinciri varsayılan olarak devre dışıdır ve özel olarak gerekli olmadıkça etkinleştirilmemiş.

Olası tehditler

Sahiplik zincirleme bir veritabanı izinleri yönetme kullanışlıdır, ancak nesne sahiplerinin her karar bir güvenliği sağlanabilir izni vermek için tam bir sonuçlarını değişiklik yapmayı kabul.Önceki örnekte, Mary, arka plandaki nesnelerin çoğunu sahibi Temmuz 2003 görüntüleyin.Mary, Mary başka herhangi bir kullanıcı için erişilebilir sahibi olan nesneleri hakkı olduğundan SQL Server Mary, zincirdeki ilk görünüme erişim verir her Filiz başvurduğu tablo ve görünümleri paylaşmanın getirilen bir karar yaptı ancak gibi davranır. Gerçek hayatta bu geçerli bir varsayım olmayabilir.Üretim veritabanlarıdır şekilde bir çok daha karmaşık ve bunlara erişimi nadiren düzenleyen izinleri, tam, bunları kullanan bir kuruluş yönetim yapıların için eşleme.

Yüksek ayrıcalıklı bir veritabanı rollerini üyeleri kendi için dış veritabanlarındaki nesnelere erişim veritabanları arası sahiplik zincirleme kullanabileceğiniz anlamalısınız.Örneğin, veritabanı arasında veritabanları arası sahiplik zinciri etkinse C ve veritabanı b üyesidb_owner sabit veritabanı rolü her iki veritabanı her şekilde başka bir veritabanına sızdırmasına.Işlem basittir: (Üye Dianedb_owner veritabanıC) kullanıcı oluşturur.Çalışan veritabanıC.Çalışan veritabanına bir kullanıcı olarak zaten var.b.Diane sonra (sahibi olan bir nesne oluşturur. Çalışan) veritabanı içindeC tarafından sahip olunan herhangi bir nesneyi çağıranÇalışan veritabanıb.Arama ve Aranan nesneleri ortak bir sahibi, veritabanındaki nesne üzerindeki izinleri olmadığı b Diane Filiz oluşturduğu nesnesi üzerinden eriştiği zaman için denetlenmeyecek.