Ответ 1
Да.
exec sp_msforeachtable "DENY SELECT ON '?' TO [username];"
GO
GRANT SELECT ON [schemaName].[tableName] to [username]
Go
В то время как это работает, вам, вероятно, будет лучше управлять разрешениями с помощью ролей и групп AD.
Я думаю, что ответ - нет, но я хочу дать кому-то доступ к базе данных SQL Server, но я действительно хочу, чтобы у них был доступ к одной таблице.
Достаточно легко ограничить доступ только к одной базе данных, но понятия не имею, могу ли я ограничить одну таблицу.
Мои мысли состояли в том, чтобы создать другую базу данных с синонимом другой таблицы, а затем ограничить доступ к этой базе данных, но я задавался вопросом, может ли кто-нибудь подумать о лучшем способе.
Я также не уверен, что он будет работать, поскольку я думаю, что будет конфликт разрешений.
Спасибо
Да.
exec sp_msforeachtable "DENY SELECT ON '?' TO [username];"
GO
GRANT SELECT ON [schemaName].[tableName] to [username]
Go
В то время как это работает, вам, вероятно, будет лучше управлять разрешениями с помощью ролей и групп AD.
GRANT SELECT ON [SchemaName].[TableName] to [UserName]
Проблема с циклизацией всех таблиц и запретом доступа будет заключаться в добавлении новой таблицы.
Важно не предоставлять пользователю "db_datareader" доступ ко всей базе данных. Используя пользовательский интерфейс, вы можете использовать вкладку "Сопоставление пользователей" под логином, вы можете создать пользователя только с "общедоступным" доступом. Затем вы можете перейти в базу данных и предоставить пользователю SELECT доступ к конкретной таблице (нажав кнопку с именем "Поиск" на вкладке "Securables" ).
Этот подход также будет работать с script, конечно.
Конечно. GRANT разрешения, которые вы хотите.
Когда вы предоставляете пользователю доступ к базе данных, смотрите роли, которые они назначили, и какие права имеют эти роли.
Проблема заключается в том, что люди обычно предоставляют слишком широкие разрешения в начале.
Конечно. После создания пользователя и предоставления им доступа к базе данных, разрешите только выбрать доступ (или любой другой уровень, который им нужен) к этой таблице.
Лучшим подходом было бы создать отдельный schema
, создать proc
в этом schema
. Затем разрешите пользователю EXEC
, что proc
. Это. Вы можете создать view
в этом schema
, и это может быть больше того, что вам нужно.
Лучший способ создания защиты для этой конкретной таблицы. ИТ спросит вас, что вы собираетесь обеспечить; таблица, представление, база данных. Затем вы выбираете конкретную таблицу для защиты и исключения этого пользователя из этой таблицы.