Niedawno chciałem podzielić regularne prawa dostępu z jednego użytkownika na serwerze i zdałem sobie sprawę, że proste CREATE USER
i GRANT ALL ON DATABASE
polecenia nie pozwolił mu uruchomić prosty SELECT
na danych.
Chciałbym przyznać prawa do wszystkich tabel z danej bazy danych określonemu użytkownikowi, ale nie jestem pewien, czy to najlepszy pomysł, aby przyznać mu dostęp do całego schematu, public
ponieważ nie wiem, czy pozwoliłoby to na jakieś przywileje eskalacja. Czy jest jakiś inny sposób?
GRANT SELECT ON TableName TO [Domain\User]
? Zwykle przypisuję użytkowników dodb_datareader
roli, jeśli wszystko, czego potrzebują, to dostęp do odczytu do wszystkich tabel, ale nie jestem pewien, jak bardzo chcesz być szczegółowy.Odpowiedzi:
Przywilej
DATABASE
tylko przyznaje ogólne prawa do połączenia z bazą danych i nie więcej. Użytkownik posiadający tylko to uprawnienie może zobaczyć tylko to, co może zobaczyć ogół społeczeństwa.Aby przyznać dostęp do odczytu do wszystkich tabel , potrzebujesz również uprawnień do wszystkich schematów i tabel:
Możesz także ustawić domyślne uprawnienia dla przyszłych schematów i tabel. Uruchom dla każdej roli, która tworzy obiekty w db
Ale naprawdę musisz najpierw zrozumieć całą koncepcję .
I prawie zawsze lepiej jest łączyć uprawnienia w role grupy, a następnie nadawać / odwoływać role grupy do / z ról użytkowników. Związane z:
źródło
myusr
literówka? Nie powinno tak byćmyuser
?