Czy istnieje różnica między przyznaniem użytkownika SELECT a dodaniem go do roli db_datareader?

9

Poproszono mnie do przyznania SELECT, INSERTa UPDATEdo danego użytkownika dla wszystkich tabel w bazie danych. Skończyło się na dodaniu użytkownika db_datareaderi przyznaniu go INSERToraz UPDATEna poziomie bazy danych.

Ale to sprawiło, że pomyślałem, jaka jest różnica (jeśli w ogóle) między udzieleniem użytkownikowi SELECTuprawnień na poziomie bazy danych, a dodaniem ich do db_datareaderroli? I czy jest jakaś najlepsza praktyka w ten czy inny sposób?

Kenneth Fisher
źródło

Odpowiedzi:

7

Rick Byham ma post WIKI pokazujący ustalone role serwera i bazy danych oraz sposób ich mapowania. Możesz zajrzeć tutaj: http://social.technet.microsoft.com/wiki/contents/articles/database-engine-fixed-server-and-fixed-database-roles.aspx

Wykres pokazuje, że rola db_datareader jest identyczna z rolą GRANT SELECT ON [baza danych]. Nadal można używać, ale zaleca się odejście od tych ról do bardziej szczegółowych poleceń. Niektóre inne stałe role w bazach danych są mniej jasno określone dla większości osób. Użycie jawnych poleceń zapewnia większą przejrzystość przy zgłaszaniu uprawnień.

Oczywiście wiesz, jak udzielać drobniejszych uprawnień. Próbuję zerwać ze starymi rolami, gdy tylko jest to możliwe, ale db_owner (na przykład) jest trudnym nawykiem do zerwania.

RLF
źródło