Есть ли разница между предоставлением SELECT пользователю и добавлением его в роль db_datareader?

9

Меня попросили предоставить SELECT, INSERTи UPDATEк данному пользователю для всех таблиц в базе данных. Я закончил тем, что добавил пользователя db_datareaderи предоставил его INSERTи UPDATEна уровне базы данных.

Но это заставило меня задуматься, в чем разница (если есть) между предоставлением пользователю SELECTразрешения на уровне базы данных или добавлением его к db_datareaderроли? И есть ли лучшая практика так или иначе?

Кеннет Фишер
источник

Ответы:

7

У Рика Бихама есть пост в WIKI, в котором показаны фиксированные серверные и фиксированные роли базы данных и их отображение. Вы можете посмотреть здесь: http://social.technet.microsoft.com/wiki/contents/articles/database-engine-fixed-server-and-fixed-database-roles.aspx

Диаграмма показывает, что роль db_datareader идентична роли GRANT SELECT ON [база данных]. Так что все еще в порядке, но рекомендуется перейти от этих ролей к более детальным командам. Некоторые из других фиксированных ролей базы данных менее четко определены для большинства людей. Использование явных команд обеспечивает большую ясность при сообщении прав.

Очевидно, вы знаете, как предоставить более мелкие детализированные разрешения. Я пытаюсь освободиться от старых ролей, когда это возможно, но db_owner (например) - это сложная привычка.

ДКП
источник