Ownership Chains
Po wielu obiektów bazy danych dostępu wzajemnie sekwencyjnie, kolejność jest znany jako łańcuch.Mimo że takie łańcuchów niezależnie od siebie nie istnieją, gdy SQL Server który przechodzi i łącza w łańcuchu, SQL Server oblicza uprawnienia do obiektów składowych inaczej niż w przypadku, gdy dostęp go zostały do obiektów oddzielnie. Różnice te mieć istotny wpływ na zarządzanie zabezpieczeniami.
Tworzenie łańcucha własności umożliwia zarządzanie dostęp do wielu obiektów, takich jak wiele tabel, przez ustawienie uprawnień na jeden obiekt, taki jak widok.Tworzenie łańcucha własności oferuje korzyści nieznaczne wydajności w scenariuszach, która pozwala na pominięcie kontroli uprawnień.
W jaki sposób uprawnienia są zaznaczone w łańcuchu
Kiedy obiekt jest dostępny w łańcuchu SQL Server najpierw porównuje z właścicielem obiektu właściciel obiektu wywołującego. Jest to poprzednia łącze w łańcuchu.Jeśli oba obiekty tego samego właściciela, nie są uwzględniane uprawnienia dotyczące obiektu, do którego istnieje odwołanie.
Przykładem tworzenie łańcucha własności
Na poniższej ilustracji July2003 widoku jest własnością Mary.Użytkownik ma przyznane uprawnienia Alexowi w widoku.Ma on nie innych uprawnień dla obiektów bazy danych w tym wystąpieniu.Zdarzenia występujące podczas Alexowi wybiera widok?
Alex executes SELECT * on the July2003 view.SQL Server checks permissions on the view and confirms that Alex has permission to select on it.
The July2003 view requires information from the SalesXZ view.SQL Server checks the ownership of the SalesXZ view.Ponieważ widok ten ma takie same (właścicielaAnna) w widoku, który wywołuje ona uprawnienia SalesXZ nie są sprawdzane.Wymagane informacje są zwracane.
The SalesXZ view requires information from the InvoicesXZ view.SQL Server checks the ownership of the InvoicesXZ view.Ponieważ widok ten ma tego samego właściciela, jak poprzedni obiekt, uprawnienia InvoicesXZ nie są sprawdzane.Wymagane informacje są zwracane.Do tego punktu wszystkie elementy w sekwencji miały jednego właściciela)Anna).Jest to określane jako łańcuch własności nieprzerwane.
The InvoicesXZ view requires information from the AcctAgeXZ view.SQL Server checks the ownership of the AcctAgeXZ view.Ponieważ właściciela tego widoku, który różni się od poprzedniego właściciela obiektu)Sam, not Anna), pełne informacje o uprawnieniach w tym widoku są pobierane.Jeśli AcctAgeXZ widok ma uprawnienia, które umożliwiają dostęp przez Alexowi, informacje zostaną zwrócone.
The AcctAgeXZ view requires information from the ExpenseXZ table.SQL Server checks the ownership of the ExpenseXZ table.Ponieważ właścicielem tej tabela różni się od poprzedniego właściciela obiektu)Janusz, not Sam), pełne informacje o uprawnieniach w tej tabela jest pobierana.Jeśli ExpenseXZ tabela ma uprawnienia, które umożliwiają dostęp przez Alexowi, informacje są zwracane.
Gdy July2003 próbuje pobrać informacje z widokuProjectionsXZ tabela, serwer sprawdza najpierw czy włączone jest tworzenie łańcuchów bazy danych między między 1 Bazy danych and Bazy danych 2.Jeśli tworzenie łańcuchów bazy danych między jest włączona, serwer sprawdza, czy własność ProjectionsXZ tabela.Ponieważ w tej tabela zawiera tego samego właściciela jako wywołania (widokuAnna), nie są sprawdzane uprawnienia do tej tabela.Wymagane informacje są zwracane.
międzybazowy łańcuch własności
SQL Server można skonfigurować w taki sposób, aby zezwolić na własność, tworzenie łańcuchów między bazami danych określonych lub wszystkich baz danych wewnątrz jednej instancji SQL Server. Tworzenie łańcucha własności między-bazy danych jest domyślnie wyłączone i nie powinna być włączona, o ile nie jest wyraźnie wymagane.
Potencjalnych zagrożeń
Tworzenie łańcucha własności jest bardzo przydatne w zarządzaniu uprawnień do bazy danych, ale założono, że właścicieli obiektów przewiduje się pełne konsekwencje decyzji co do udzielania uprawnień na zabezpieczany.Na poprzedniej ilustracji Mary jest właścicielem większości obiektów z Lipca 2003 widoku.Ponieważ Joanna ma prawo do obiektów, które użytkownik jest właścicielem dostępne dla innych użytkowników SQL Server zachowuje się tak, jakby za każdym razem, gdy Mary udziela dostępu do pierwszego widoku w łańcuchu, użytkownik wprowadził świadome decyzji widoków i odwołuje się ono do tabela. W życiu rzeczywistego to może nie być prawidłowy założeń.Bazy danych produkcji są znacznie bardziej złożone niż na rysunku, a uprawnienia, które rzadko regulują dostęp do nich mapowania idealnie do struktur administracyjnych w organizacji, które ich używają.
Należy wiedzieć, że członkowie ról wysoko uprzywilejowany bazy danych można użyć obiektów dostępu w bazach danych zewnętrznych do ich własnych międzybazowy łańcuch własności.Na przykład, jeśli włączono międzybazowy łańcuch własności między bazą danych A i bazy danych B, jest członkiem db_owner stała rola bazy danych albo bazy danych może sfałszować sposób jej do innej bazy danych.Ten proces jest proste: Diane (element członkowski członkowski db_owner w bazie danych A) tworzy użytkownika Stuartowi w bazie danych A.Stuartowi już istnieje jako użytkownika w bazie danych B.Diane tworzy obiekt (posiadanych przez Stuartowi) w bazie danych A wywołuje dowolny obiekt własnością Stuartowi w bazie danych B.Ponieważ obiekty wywołującego i o nazwie mają wspólne właściciela, uprawnienia do obiektu w bazie danych B nie będzie sprawdzana, gdy Diane go za pośrednictwem obiektu Użytkownik został utworzony.