Gibt es einen Unterschied zwischen dem Gewähren von SELECT für einen Benutzer und dem Hinzufügen dieser zur Rolle db_datareader?

9

Ich wurde gebeten , zu gewähren SELECT, INSERTund UPDATEauf einen bestimmten Benutzer für alle Tabellen in einer Datenbank. Am Ende habe ich den Benutzer hinzugefügt db_datareaderund ihm INSERTund UPDATEauf Datenbankebene gewährt .

Aber das brachte mich zum Nachdenken, was ist der Unterschied (falls vorhanden) zwischen dem Erteilen einer Benutzerberechtigung SELECTauf Datenbankebene oder dem Hinzufügen dieser Berechtigungen zur db_datareaderRolle? Und gibt es auf die eine oder andere Weise Best Practices?

Kenneth Fisher
quelle

Antworten:

7

Rick Byham hat einen WIKI-Beitrag, in dem die Rollen des festen Servers und der festen Datenbank sowie deren Zuordnung aufgeführt sind. Sie können hier nachsehen: http://social.technet.microsoft.com/wiki/contents/articles/database-engine-fixed-server-and-fixed-database-roles.aspx

Das Diagramm zeigt, dass die Rolle db_datareader mit GRANT SELECT ON [Datenbank] identisch ist . Es ist also immer noch in Ordnung zu verwenden, aber die Empfehlung ist, von diesen Rollen zu den detaillierteren Befehlen überzugehen. Einige der anderen festen Datenbankrollen sind für die meisten Menschen weniger klar definiert. Die Verwendung der expliziten Befehle führt zu mehr Klarheit beim Melden von Rechten.

Offensichtlich wissen Sie, wie Sie feinkörnigere Berechtigungen erteilen. Ich versuche, mich wann immer möglich von den alten Rollen zu lösen, aber db_owner (zum Beispiel) ist eine schwierige Angewohnheit.

RLF
quelle