Реферат: 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 в РСУБД