Разрешения на просмотр базы данных

Я работаю с базой данных (назовем ее DB_data), которая содержит все таблицы для ряда приложений. В попытке минимизировать время простоя во время обновлений была создана фасадная база данных (назовем ее DB_facade), которая имеет представление для каждой из таблиц в DB_data. Он также содержит все функции и хранимые процедуры, которые работают против этих представлений.

Пытаясь заблокировать безопасность в DB_data, мы сделали DENY для всех таблиц для всех пользователей в DB_data. Все эти пользователи также были созданы в DB_facade с разрешениями на представления.

Проблема здесь заключается в том, что из-за цепочки владения несколькими базами данных DENY в DB_data переопределяют GRANT в DB_facade.

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

У кого-нибудь есть какие-либо другие предложения о том, как справиться с этим?

Спасибо!

3 ответа

У вас есть эта проблема, если вы исключаете DENY из таблиц в DB_data? Если вы явно не предоставляете разрешения GRANT для этих таблиц, вы можете получить необходимую защиту и получить права доступа через представления.

Исходя из того, что я видел и делал, сервер sql не позволяет вам иметь никаких разрешений, если это не указано явно. Вы должны быть в состоянии предоставить select (или использовать роль администратора данных роли) в DB_Data пользователям, при условии, что это одна и та же учетная запись и она сопоставлена ​​с обеими базами данных (вы должны будете предоставить select и exec для db_facade), которые должны работать просто хорошо.

Вы можете создать представление в базе данных DB_data для каждого представления в базе данных DB_facade. Новые представления будут иметь права выбора из таблиц. GRANT SELECT для представлений в DB_data. Измените представления DB_facade на SELECT из представлений DB_data. И на столах будет установлен DENY.

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

Другие вопросы по тегам