Published on

February 14, 2001

Понимание фиксированных ролей базы данных в SQL Server

В SQL Server роли используются для группировки пользователей базы данных и назначения им разрешений. В предыдущей статье мы обсудили роль Public и ее потенциальные проблемы. В этой статье мы рассмотрим четыре фиксированные роли базы данных: db_datareader, db_datawriter, db_denydatareader и db_denydatawriter.

Обзор фиксированных ролей базы данных

Вот краткий обзор того, что делает каждая фиксированная роль базы данных:

  • db_datareader: Предоставляет выборочный доступ ко всем таблицам пользователей
  • db_datawriter: Предоставляет доступ на вставку, обновление и удаление ко всем таблицам пользователей
  • db_denydatareader: Запрещает выборочный доступ ко всем таблицам пользователей
  • db_denydatawriter: Запрещает доступ на вставку, обновление и удаление ко всем таблицам пользователей

Эти роли могут быть чрезвычайно полезны при эффективном управлении разрешениями. Давайте вернемся к сценарию из предыдущей статьи: вы разработали приложение, которому требуются разрешения на выборку, вставку и удаление для всех таблиц. Вместо явного назначения разрешений для каждой таблицы вы можете использовать фиксированные роли:

  1. Добавьте группу Everyone в качестве пользователя базы данных
  2. Добавьте группу Everyone в качестве члена роли db_datareader
  3. Добавьте группу Everyone в качестве члена роли db_datawriter

Используя фиксированные роли, вы можете сэкономить время и усилия по сравнению с явным назначением разрешений для каждой таблицы.

Управление доступом подрядчика

Теперь рассмотрим сценарий, когда вам необходимо предоставить доступ к домену подрядчику, но ограничить его доступ к базе данных. Используя фиксированные роли, вы можете легко справиться с этим:

  1. Добавьте подрядчика в базу данных в качестве пользователя
  2. Добавьте подрядчика в роль db_denydatareader
  3. Добавьте подрядчика в роль db_denydatawriter

Снова использование ролей db_denydatareader и db_denydatawriter упрощает процесс по сравнению с созданием новой роли специально для подрядчика и установкой разрешений (DENY в данном случае) для каждой таблицы пользователя.

Соображения и ограничения

Хотя фиксированные роли предлагают удобство, есть несколько вещей, которые следует учесть:

  1. Фиксированные роли не предоставляют детализированных разрешений. Если вам нужно предоставить или запретить доступ только к нескольким таблицам пользователей, вам потребуется создать дополнительные роли для переопределения фиксированных ролей.
  2. Членство в одной из фиксированных ролей применяется ко всем существующим таблицам пользователей и любым таблицам, созданным в будущем. Это может быть выгодно или проблематично в зависимости от ваших требований. Если вы обнаружите, что создаете много исключений, может быть более эффективно создать конкретные роли для каждой ситуации и явно назначать разрешения.

Если вы хотите узнать больше о фиксированных ролях базы данных, вы можете использовать несколько хранимых процедур:

  • sp_helpdbfixedrole: Отображает список фиксированных ролей
  • sp_dbfixedrolepermission: Отображает разрешения для каждой фиксированной роли
  • sp_addrolemember: Используется для добавления пользователя базы данных в роль
  • sp_droprolemember: Используется для удаления пользователя базы данных из роли

Если у вас есть вопросы или комментарии, не стесняйтесь писать мне по электронной почте!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.