В SQL Server создайте роль, которая обладает всеми правами, кроме нескольких таблиц - PullRequest
0 голосов
/ 04 марта 2020

Я хочу создать роль базы данных сервера SQL, которая является точной копией роли db_owner, но не должна иметь доступа к нескольким таблицам.

Короче говоря, я хочу сделать что-то вроде этого:

  1. Создать роль, которая является клоном db_owner
  2. Отзыв нескольких таблиц из этой роли

Возможно ли это? Если да, то как? если нет то каков альтернативный путь?

1 Ответ

2 голосов
/ 04 марта 2020

Я хочу создать роль базы данных сервера SQL, которая является точной копией роли db_owner, но не должна иметь доступа к нескольким таблицам. ... Это возможно?

Нет. У db_owner слишком много прав администратора, чтобы вы не могли получить доступ к нескольким таблицам. Если вы хотите, чтобы пользователь имел доступ ко всем текущим и будущим объектам в базе данных, кроме нескольких, вы можете сделать это, используя GRANT уровня базы данных и DENY :

DENY

Запрещает разрешение принципалу. Запрещает этому участнику наследовать разрешение через членство в его группе или роли. DENY имеет приоритет над всеми разрешениями, за исключением того, что DENY не применяется к владельцам объектов или членам предопределенной роли сервера sysadmin. Примечание по безопасности Членам фиксированной серверной роли sysadmin и владельцам объектов нельзя отказывать в разрешениях.

например:

create role foo

grant select, insert, update, delete, execute to foo --grant on whole database

deny select, insert, update, delete on dbo.secret to foo  --deny on a single object
deny select, insert, update, delete, execute on schema::admin to foo ----deny on a whole schema
...