Mapowanie wielu loginów serwera do jednego użytkownika bazy danych


11

To wydaje się głupie pytanie, ale pomimo pewnych badań nie byłem w stanie znaleźć żadnych informacji na ten temat (prawdopodobnie z powodu niewłaściwej terminologii).

Czy możliwe jest zalogowanie wielu loginów serwera (uwierzytelnianie serwera SQL) do jednego użytkownika bazy danych (który ma uprawnienia przypisane jako członek roli bazy danych)?

Mam dziesiątki logowań sql (uwierzytelnianie serwera sql), które muszą odczytać jedno ustawienie z centralnej bazy danych i wolę odwzorować wszystkie te loginy na pojedynczego użytkownika DB w docelowej bazie danych niż utworzyć własnego użytkownika DB dla każdego logowania.

Jeśli tak, jaka byłaby poprawna składnia T-SQL?


Kiedy mówisz „logowanie do serwera”, masz na myśli konta Windows lub SQL Server?
Phil Sumner

Mówię o kontach serwera SQL.
Zmieni

A może stworzysz ROLEa następnie dodasz użytkowników do roli. W ten sposób po prostu przyznajesz uprawnienia roli. Pomoże to w lepszym zarządzaniu bezpieczeństwem. Jaka jest wersja serwera SQL - 2008R2, 2012?
Kin Shah

Odpowiedzi:


19

Najpierw sprawdź terminologię. Login to podmiot zabezpieczeń na poziomie instancji ( sys.server_principals), a Użytkownik to podmiot zabezpieczeń na poziomie bazy danych ( sys.database_principals). Łączy je SID (identyfikator bezpieczeństwa). Jeśli spojrzysz na powyższe widoki systemu, możesz zobaczyć, jak są one łączone w formacie 1: 1 przez SID. To 1 Zaloguj się do 1 użytkownika w bazie danych. Login może mieć wielu użytkowników, ale muszą znajdować się w różnych bazach danych.

Musisz więc utworzyć użytkownika w bazie danych dla każdego loginu, do którego chcesz mieć dostęp. To dość proste polecenie.

CREATE USER [UserName] FROM LOGIN [LoginName]

Stamtąd możesz umieścić wszystkich użytkowników w jednej (lub wielu) rolach. Rola jest kontenerem, który ma uprawnienia i współdzieli te uprawnienia z każdym użytkownikiem (dla ról bazy danych) lub logowaniem (na przykład ról). Istnieje wbudowana rola bazy danych o nazwie, db_datareaderktóra daje dostęp do odczytu każdej tabeli i widoku w bazie danych. Możesz dodać wszystkich użytkowników do tej roli. Lepszym pomysłem byłoby jednak utworzenie nowej roli i dodanie jej do db_datareaderroli. Następnie dodaj wszystkich użytkowników do nowej roli. Korzyścią jest to, że jeśli chcesz dodać dodatkowe uprawnienia do grupy, możesz po prostu zmienić uprawnienia do roli.

Utwórz rolę, wykonując:

CREATE ROLE RoleName

Dodaj użytkownika do roli (lub jednej roli do drugiej)

EXEC sp_addrolemember 'RoleName','UserName'

lub jeśli masz rok 2012 lub wyższy

ALTER ROLE [RoleName] ADD MEMBER [UserName]

Dziękuję za szczegółowe wyjaśnienie i za dostarczenie podstawowych informacji Kenneth, czego nie byłem pewien That's 1 Login to 1 User in a database.
leepfrog
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.