Недавно я хотел поделиться правами обычного доступа с одним пользователем сервера и понял, что простые команды CREATE USER
и GRANT ALL ON DATABASE
команды не позволяют ему запускать простые SELECT
данные.
Я хотел бы предоставить права на все таблицы из данной базы данных указанному пользователю, но я не уверен, что это лучшая идея предоставить ему доступ ко всей схеме, так public
как я не знаю, позволит ли это какую-то привилегию эскалация. Есть ли другой способ?
GRANT SELECT ON TableName TO [Domain\User]
? Я обычно просто назначаю пользователей наdb_datareader
роль, если все, что им нужно, это доступ на чтение ко всем таблицам, но я не уверен, насколько гранулярным вы хотите быть.Ответы:
Привилегия
DATABASE
только предоставляет общие права подключения к базе данных и не более. Пользователь с такой привилегией может видеть только то, что разрешено видеть широкой публике.Чтобы предоставить доступ на чтение всем таблицам , вам также необходимы права доступа ко всем схемам и таблицам:
Вы также можете установить привилегии по умолчанию для будущих схем и таблиц. Запуск для каждой роли, которая создает объекты в вашей БД
Но вам действительно нужно сначала понять всю концепцию .
И почти всегда лучше объединить привилегии в групповых ролях, а затем предоставить / отозвать групповую роль для / из пользовательских ролей. Связанный:
источник
myusr
опечатка? Не должно ли это бытьmyuser
?