MSSQL: ограниченная учетная запись, которой разрешено только чтение определенных просмотров? - PullRequest
4 голосов
/ 14 апреля 2009

Как создать пользователя на сервере MS SQL, которому разрешено только чтение определенных представлений определенной базы данных?

Ответы [ 2 ]

11 голосов
/ 14 апреля 2009

Вот скрипт, который создает нового пользователя и дает ему право выбора только для определенного вида.

USE [master]
GO
CREATE LOGIN [LimitedUser] WITH PASSWORD=N'testPass', 
           DEFAULT_DATABASE=[master], 
           CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [TestDB]
GO
CREATE USER [LimitedUser] FOR LOGIN [LimitedUser]
GO
use [TestDB]
GO
GRANT SELECT ON [dbo].[myView] TO [LimitedUser]
GO

Редактировать

Вместо того, чтобы делать это для конкретного пользователя, вы можете рассмотреть возможность использования ролей.

USE [TestDB]
GO
CREATE ROLE [LimitedRole]
GO
GRANT SELECT ON [dbo].[TestView] TO [LimitedRole]
GO
EXEC sp_addrolemember N'LimitedRole', N'LimitedUser'
GO

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

2 голосов
/ 14 апреля 2009

Хитрость в этом заключается в том, чтобы не давать никаких явных разрешений публичной роли. Каждый пользователь безоговорочно является участником этой роли, поэтому нет никакого способа помешать любому пользователю БД иметь какие-либо права, которые вы предоставляете Public.

Кроме того, вы просто добавляете пользователя в соответствующую БД и предоставляете ему права только на интересующие вас объекты.

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