Jestem bardzo zielony, jeśli chodzi o zarządzanie uprawnieniami do baz danych na serwerze SQL.

Weźmy przykład proste.

Powiedz, że konto „admin” jest właścicielem schematów A, B i C.

Jest jeszcze jedno konto „minion”, do którego chcesz mieć pełne prawa (aktualizacja / usuwanie / insert / select / alter) na jakimkolwiek obiekcie (tabeli / widoku) utworzonym w ramach schematów A, B i C.

Czy to możliwe? A może za każdym razem, gdy dodajesz tabelę / widok pod tymi schematami, musisz wykonywać oświadczenie o przyznaniu grantu? (wydaje mi się to trochę głupie).

Odpowiedź

Możesz GRANT uprawnienia schematu, które mają zastosowanie do wszystkiego, co istnieje i wszystkiego, co będzie istniało w tym schemacie.

Przyznaj uprawnienia schematu

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>; 

Poza tym, jeśli chcesz następnie odmówić uprawnień określonym obiektu w ramach tego schematu, możesz to zrobić.

Odmawianie uprawnień do obiektu

DENY INSERT ON OBJECT::<schema>.<object> TO <user>; 

Komentarze

  • Użyj również nawiasów kwadratowych, jeśli schemat lub nazwa użytkownika zawiera znaki specjalne. Np. .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • Czy ' nie działa na platformie Azure, masz pojęcie dlaczego? (polecenia działają, ale pojawia się SSMS i mówi " nie jesteś właścicielem bazy danych … bla bla bla. Zapisanie tabeli może być niemożliwe " i na pewno możesz ' t (zrobiłeś Grant ALL do bazy danych (pokazuje uprawnienia ' Baza danych ', ' < nazwa db > ', TheUserId, ' Utwórz tabelę ' i state_desc z ' GRANT ') Czy jest jakaś inna magia, która jest potrzebna? A może Azure może być używany tylko przez Dbo?

Odpowiedź

Aby jeszcze bardziej uprościć, możesz używać ról do wykonywania pracy, której szukasz.

Po przypisaniu uprawnienia do roli, możesz po prostu dodać użytkowników do roli. Dzięki temu nie musisz zarządzać uprawnieniami dla poszczególnych użytkowników. Użytkownicy dziedziczą uprawnienia przyznane roli.

Poniżej znajduje się przykład ułatwiający rozpoczęcie pracy:

 -- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the database GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *