Łańcuchy własności

Po wielu obiektów bazy danych dostępu wzajemnie sekwencyjnie, kolejność jest znany jako łańcucha.Chociaż takie łańcuchów niezależnie nie istnieją, po SQL Server przechodzi łącza w łańcuchu, SQL Server ocenia uprawnienia do obiektów składowych inaczej, niż gdyby zostały oddzielnie dostęp obiekty.Różnice te mają 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 także korzyści nieznaczne wydajności w scenariuszach, umożliwiające pomijanie kontroli uprawnień.

W jaki sposób uprawnienia są sprawdzane w łańcuchu

Gdy obiekt jest dostępny w łańcuchu SQL Server najpierw porównuje właściciel obiektu do właściciela obiektu wywołującego.Jest to łącze poprzedni w łańcuchu.Jeśli oba obiekty tego samego właściciela, nie są uwzględniane uprawnienia do obiektu.

Przykład tworzenie łańcucha własności

Na poniższej ilustracji July2003 widok jest własnością Maria.Anna ma przyznane uprawnienia Alexowi w widoku.Ma on żadnych innych uprawnień do obiektów bazy danych w tym wystąpienie.Zdarzenia występujące podczas Alexowi wybiera widok?

Diagram łańcucha własności

  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.Ponieważ ten widok ma tego samego właściciela (Maria) jako widok, który wywołuje ona uprawnienia na SalesXZ nie są sprawdzane.Wymagane informacje są zwracane.

  3. The SalesXZ view requires information from the InvoicesXZ view.SQL Server checks the ownership of the InvoicesXZ view.Ponieważ ten widok ma tego samego właściciela jako poprzedni obiekt uprawnienia na InvoicesXZ nie są sprawdzane.Wymagane informacje są zwracane.Do tego momentu wszystkie elementy w sekwencji miały jednego właściciela (Maria).Jest to określane jako łańcuch własności nieprzerwany.

  4. 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 właściciela poprzedni obiekt (Sam, nie Maria), pełne informacje o uprawnieniach w tym widoku jest pobierana.Jeśli AcctAgeXZ widok ma uprawnienia umożliwiające dostęp przez Alexowi, informacje zostaną zwrócone.

  5. The AcctAgeXZ view requires information from the ExpenseXZ table.SQL Server checks the ownership of the ExpenseXZ table.Ponieważ właściciela tej tabela różni się od właściciela poprzedni obiekt (Joe, nie Sam), pełne informacje o uprawnieniach w tej tabela jest pobierana.Jeśli ExpenseXZ tabela ma uprawnienia umożliwiające dostęp przez Alexowi, zwracane są informacje.

  6. Gdy July2003 widok usiłuje pobrać informacje z ProjectionsXZ tabela, serwer sprawdza najpierw czy włączone jest łańcuch między bazami danych między 1 bazy danych i 2 bazy danych.Jeśli między bazami danych łańcuch jest włączona, serwer sprawdza własność ProjectionsXZ tabela.Ponieważ ta tabela ma tego samego właściciela jako widok wywołującego (Maria), nie są sprawdzane uprawnienia w tej tabeli.Żądana informacja jest zwracana.

Tworzenie łańcucha własności między bazami danych

SQL Servermożna skonfigurować tak, aby umożliwić tworzenie łańcucha własności między bazami danych określonych lub wszystkich baz danych wewnątrz pojedynczego wystąpienie SQL Server.Tworzenie łańcucha własności między bazami danych jest domyślnie wyłączone i nie powinna być włączona, chyba że jest wyraźnie wymagane.

Potencjalne zagrożenia

Tworzenie łańcucha własności jest bardzo przydatne w Zarządzanie uprawnieniami do bazy danych, ale założono, że przewiduje się pełne skutki każdej decyzji o przyznaniu uprawnienie do zabezpieczany właścicieli obiektów.Na poprzedniej ilustracji Mary jest właścicielem większości obiektów z lipca 2003 widok.Ponieważ Maria ma prawo do obiektów, które użytkownik jest właścicielem dostępne dla innych użytkowników, SQL Server zachowuje się jakby ilekroć Maria udziela dostępu do pierwszego widoku w łańcuchu, użytkownik dokonał świadome decyzji udostępnianie widoki i jego tabela odwołań.W świecie rzeczywistym to może nie być prawidłowym założeń.Bazy danych produkcji są znacznie bardziej złożone niż na ilustracji i uprawnienia, które regulują dostęp do nich rzadko mapowania doskonale struktur administracyjnych organizacji, które ich używają.

Należy wiedzieć, że członkowie ról wysoko uprzywilejowane bazy danych można użyć międzybazowy łańcuch własności do obiektów programu access w bazach danych zewnętrznych do własnych.Na przykład, jeśli włączono tworzenie łańcucha własności między bazami danych między bazą danych a i bazy danych b, element członkowski db_owner stała rola bazy danych albo bazy danych może sfałszować sposób jej do bazy danych.Proces jest prosty: Diane (element członkowski db_owner w bazie danych a) tworzy użytkownika Stuart w bazie danych a.Stuart już istnieje jako użytkownika w bazie danych b.Diane następnie tworzy obiekt (własnością Stuart) w bazie danych a wywołującym dowolny obiekt własnością Stuart w bazie danych b.Ponieważ obiekty wywołujące i nazwie mają wspólne właściciela, uprawnienia do obiektu w bazie danych b nie będzie sprawdzana po Diane korzysta ona za pośrednictwem obiektu użytkownik utworzył.

Zobacz także

Koncepcje