В таблице PREDICATES хранится перечень предикат:
•NAME – название предиката;
•DESCRIPTION – описание предиката;
•ACCESS_OBJ_ID (FK) – ссылка на объект, доступ к которому ограничивает предикат;
•SQL – SQL-запрос, который ограничивает доступ.
В таблице ROLE_PREDICATES хранится перечень предикат привязанных к ролям:
•PREDICATE_ID (FK) – предикат, привязываемый к роли;
•ROLE_ID (FK) – роль, к которой привязывается предикат;
•OPERATION_ID (FK) – операция, которую можно совершать над элементами объекта, доступ к которому ограничивает предикат;
•REVOKED – отмена привязки предиката к роли. Используется для отмены наследуемой ролью-родителем от потомка привязки предиката.
Роль, к которой привязывается предикат, должна иметь права на объект, доступ к которому ограничивает этот предикат. Например, если пользователю необходимо предоставить ограниченный доступ к справочнику контрагентов, необходимо:
•предоставить роли этого пользователя доступ к справочнику контрагентов;
•создать предикат, накладывающий ограничения на доступ к справочнику контрагентов;
•привязать его к роли пользователя.
При этом операция, на которую накладываются ограничения предиката, должна быть разрешена для роли над этим объектом. Например, привязка предиката, накладывающего ограничения на операцию удаления записей справочника контрагентов, к роли, которой предоставлен доступ только на чтение, добавление и изменение записей этого справочника, будет нерезультативной, так как в этом случае имеет место попытка ограничить доступ на операцию, которая и так не разрешена.
Для удобства работы содержимое таблицы ROLE_PREDICATES автоматически реплицируется в таблицу ROLE_PREDICATES_EXT, где для каждой роли хранится список всех ее предикат указанный в явном виде с учетом того, что роль-родитель обладает предикатами ролей-потомков, если они для нее не отменены свойством REVOKED:
•PREDICATE_ID (FK) – ссылка на предикат;
•ACCESS_OBJ_ID (FK) – ссылка на объект, доступ к которому ограничивает предикат;
•ROLE_ID (FK) – ссылка на роль;
•OPERATIONS – битовая маска, содержащая перечень операций, которые можно совершать над элементами объекта, доступ к которому ограничивает предикат.
Все описанные ранее свойства разрешений выполняются и для предикатов:
•роль-родитель получает те же предикаты, что и ее роли-потомки;
•отмена предиката для роли-потомка отменяет его и для родителя.