Установить права доступа для каждого подключения? - PullRequest
0 голосов
/ 31 октября 2018

Можно ли как-то установить пользовательские разрешения для соединения в SQL-сервере?

например:

DENY insert ON all TO user
DENY update ON all TO user
DENY delete ON all TO user

Итак, предположим, что пользователь подключен как sa (* см. РЕДАКТИРОВАТЬ) в моем приложении, могу ли я каким-то образом изменить (и, возможно, восстановить) разрешения в какой-то момент для этого пользователя (так, например, в этот момент у него есть чтение только доступ)?

РЕДАКТИРОВАТЬ: извините за неправильный пример. пользователь НЕ sa, но другой пользователь с полным доступом.

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Как я уже упоминал в комментариях, разрешения не устанавливаются на уровне подключения, они устанавливаются на уровне входа в систему и на уровне пользователя.

Если у вас есть соединение, и вы меняете права доступа используемого логина / пользователя, эти разрешения будут немедленно применены к этому соединению и любым другим; таким образом, соединение с использованием логина и пользователя AppUser не может иметь других разрешений для другого пользователя соединения с теми же логином и пользователем.

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

0 голосов
/ 31 октября 2018

В разделе о безопасности существуют системные хранимые процедуры, и я полагаю, что это единственный способ обеспечить безопасность SQL.

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/security-stored-procedures-transact-sql?view=sql-server-2017


https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-dropsrvrolemember-transact-sql?view=sql-server-2017

EXEC sp_dropsrvrolemember 'JackO', 'sysadmin'; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...