pskigor 0 Опубликовано: 21 декабря, 2022 Добрый. Подскажите такой момент. Нужно настроить доступ пользователю только на чтение ПО, однако не исключёт вариант того что пользователь может зайти в базу через MSSQL Server Managment Studio и подредачить там что-то. Хочу ограничить права на уровне базы. Попробовал решение в лоб - закинуть пользователя в роли db_denydatawrite и db_dataread, однако программа стала ругаться что в какие то таблицы ей нужны DELETE и UPDATE. Можете подсказать как корректно настроить такое поведение? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Администратор 48 Опубликовано: 21 декабря, 2022 Здравствуйте. Есть один способ настройки системы безопасности на уровне сервера. Пользоваться им нужно осторожно. на MS SQL сервере в разделе Server Objects -> Triggers необходимо создать триггер: CREATE TRIGGER [TR_SERVER_LOGON] ON ALL SERVER FOR LOGON AS BEGIN IF APP_NAME() <> 'IT Invent' and SUSER_SNAME() <> 'admin_user' BEGIN rollback END END Данный триггер проверяет любую попытку авторизации. Если имя приложения в котором идет авторизация не "IT Invent" и при этом логин пользователя не "admin_user" то авторизация будет прервана. "admin_user" это логин администратора который всегда должен иметь доступ к системе. Таким образом к базе можно будет подключиться только из программы IT Invent или через логин админа. При желании триггер можно модернизировать под свои реалии, добавив несколько логинов администратора. Проверить что возвращают функции APP_NAME() и SUSER_SNAME() можно непосредственно в самой программе: Главное не ошибиться иначе будут сложности с доступом к базе. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах