SQL Server: вы можете ограничить доступ только к одной таблице

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

Достаточно легко ограничить доступ только к одной базе данных, но понятия не имею, могу ли я ограничить одну таблицу.

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

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

Спасибо

Ответы

Ответ 1

Да.

exec sp_msforeachtable "DENY SELECT ON '?' TO [username];"
GO

GRANT SELECT ON [schemaName].[tableName] to [username]
Go 

В то время как это работает, вам, вероятно, будет лучше управлять разрешениями с помощью ролей и групп AD.

Ответ 2

GRANT SELECT ON [SchemaName].[TableName] to [UserName]

Ответ 3

Проблема с циклизацией всех таблиц и запретом доступа будет заключаться в добавлении новой таблицы.

Важно не предоставлять пользователю "db_datareader" доступ ко всей базе данных. Используя пользовательский интерфейс, вы можете использовать вкладку "Сопоставление пользователей" под логином, вы можете создать пользователя только с "общедоступным" доступом. Затем вы можете перейти в базу данных и предоставить пользователю SELECT доступ к конкретной таблице (нажав кнопку с именем "Поиск" на вкладке "Securables" ).

Этот подход также будет работать с script, конечно.

Ответ 4

Конечно. GRANT разрешения, которые вы хотите.

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

Проблема заключается в том, что люди обычно предоставляют слишком широкие разрешения в начале.

Ответ 5

Конечно. После создания пользователя и предоставления им доступа к базе данных, разрешите только выбрать доступ (или любой другой уровень, который им нужен) к этой таблице.

Ответ 6

Лучшим подходом было бы создать отдельный schema, создать proc в этом schema. Затем разрешите пользователю EXEC, что proc. Это. Вы можете создать view в этом schema, и это может быть больше того, что вам нужно.

Ответ 7

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