Я очень сторонник безопасности SQL, так что, может быть, кто-нибудь мне поможет. У нас есть приложение базы данных, которое при установке по умолчанию предоставляет публичный доступ ко всем таблицам в базе данных. Когда вы создаете пользователя SQL, он добавляет пользователя к публичной роли, поэтому новые пользователи будут иметь доступ ко всем таблицам.
Нам необходимо подключить сторонние приложения ODBC к базе данных. Мы создали представление, которое извлекается из таблиц в той же базе данных, и мы хотим, чтобы соединение имело доступ только к созданным представлениям. Вместо того, чтобы пытаться удалить публичную роль из всех таблиц, мы решили использовать схемы для обеспечения безопасности.
Все таблицы по умолчанию находятся в SCHEMA1
. Мы разместили VIEW
под SCHEMA2
, и создать USERA
отрицание SELECT
к SCHEMA1
, и предоставил SELECT
к SCHEMA2
. Обе SCHEMAS
у одного и того же владельца.
Когда я тестирую ODBC с помощью Access и пытаюсь открыть VIEW
, Я получаю следующую ошибку
В разрешении SELECT для объекта (имя таблицы в SCHEMA1) отказано ....
Я полагаю, это потому, что я отрицал SELECT
к SCHEMA1
, который содержит ссылочные таблицы для VIEW
. Если это так, как бы вы ограничили доступ только к определенным таблицам через ODBC?
После того, как я опубликовал это, я начал поискать в Google еще немного об отзыве разрешений публичной роли из схемы как возможного варианта, но не тестировался, но также наткнулся на «роль приложения». Мне все еще нужно прочитать немного больше, но мне интересно, следует ли мне двигаться в этом направлении.