Реферат: Row-Level Security в РСУБД
Лишение доступа
Форма предиката безопасности, рассмотренная выше, подразумевает «пессимистичный» режим, т.е. доступ к данным имеют только те категории пользователей, которые явно перечислены в предикате.
ПРИМЕЧАНИЕ Строго говоря, если мы не опишем ни одного правила, то предикат будет пустым и доступ получат все пользователи. Однако выдача таким способом доступа хотя бы одной роли автоматически лишит доступа всех остальных пользователей. Решить эту проблему можно раз и навсегда - введя дополнительный член ...OR FALSE в предикат безопасности. Однако подобный вырожденный случай нетрудно обработать специальным образом, и далее в тексте везде предполагается наличие в списке доступа хотя бы одного явного разрешения. |
Иногда удобнее описывать правила безопасности в терминах «оптимистичного» режима, т.е. лишить доступа только некоторое множество пользователей. В этом случае предикат приобретет такой вид:
NOT ( (IsUserInRole(<restricted_role1>) [AND <restricted_role1_restrictions>]) OR ... (IsUserInRole(<restricted_roleN>) [AND <restricted_roleN_restrictions>]) ) |
В таком случае доступ предоставляется всем, кроме указанных ролей, да и они лишены доступа только к ограниченной части данных.
Соединив эти два подхода, мы получим возможность как «карать», так и «миловать» пользователей:
(-- секцияразрешений (IsUserInRole(<role1>) AND <role1_restrictions>) OR ... (IsUserInRole(<roleN>) AND <roleN_restrictions>) ) AND NOT (-- секциязапретов (IsUserInRole(<restricted_role1>) [AND <restricted_role1_restrictions>]) OR ... (IsUserInRole(<restricted_roleN>) [AND <restricted_roleN_restrictions>]) ) |
Такой принцип защиты очень похож на используемый в Windows NT.
Рассмотрим варианты применения данной техники на примере базы данных Northwind, которая входит в поставку MS SQL Server.
Локальные атрибуты
В простейшем случае предикаты для всех ролей зависят только от значений полей защищаемой записи. Рассмотрим таблицу Orders (несущественные для рассматриваемой задачи ограничения пропущены):
CREATE TABLE Orders ( К-во Просмотров: 550
Бесплатно скачать Реферат: Row-Level Security в РСУБД
|