Создание дополнительных условий проверки доступа

При использовании атрибутного метода разграничения доступа в каждом из правил политики можно задать дополнительные условия проверки доступа.

Для создания дополнительных условий проверки доступа:

  1. Выберите правило.

В правой части окна отображаются свойства правила, в которых содержатся дополнительные условия проверки доступа:

  1. Задайте дополнительные условия проверки доступа в виде логического выражения одним из способов:

Для открытия окна нажмите кнопку :

После выполнения одного из действий будет открыто окно «Создание условия»:

Для формирования выражения обратитесь к разделу «Создание формул и выражений».

Примечание. Заданное выражение отображается в поле «Условие» и в окне «Создание условия», независимо от способа формирования выражения.

После выполнения действий будут заданы дополнительные условия проверки доступа.

Доступные атрибуты

Для формирования выражения доступны системные и пользовательские атрибуты, которые содержатся в атрибутном доступе.

Системные атрибуты, для которых можно получить значение на основе информации, хранящейся в системе, делятся на группы:

Атрибуты объектов

Атрибуты субъектов

Атрибуты среды окружения

Особенности атрибута элемента справочника НСИ

Для разграничения прав доступа на элементы табличного справочника НСИ используется атрибут объекта в виде «OBJECT.ELEMENT.<идентификатор атрибута>». Идентификаторы атрибута элемента содержатся на вкладке «Атрибуты» при открытии справочника на редактирование.

Примечание. Атрибут элемента задается только в дополнительном условии правила.

Для получения подробной информации обратитесь к разделу «Права доступа на элементы справочников НСИ».

Основные функции

Для формирования выражения используются системные функции и функции «ABAC»:

Наименование Синтаксис и параметры Описание
Count

Синтаксис. ABAC.Count(<аргумент>).

Параметры. В качестве аргумента задается:

  • пользовательский атрибут субъекта (SUBJECT.<Идентификатор атрибута>);

  • пользовательский атрибут объекта (OBJECT.<Идентификатор атрибута>);

  • список групп, в которых состоит пользователь (SUBJECT.GROUPS).

Метод Count возвращает количество значений в массиве пользовательского атрибута субъекта или объекта, а также количество групп, в которых состоит пользователь, или количество пользователей в группе.

Примеры:

  1. ABAC.Count(OBJECT.ATTR)

Метод возвращает количество значений в массиве пользовательского атрибута объекта с идентификатором «ATTR».

  1. ABAC.Count(SUBJECT.GROUPS)

Метод возвращает количество групп, в которых состоит пользователь.

Is_Empty

Синтаксис. ABAC.Is_Empty(<аргумент>).

Параметры. В качестве аргумента задается:

  • пользовательский атрибут субъекта (SUBJECT.<Идентификатор атрибута>);

  • пользовательский атрибут объекта (OBJECT.<Идентификатор атрибута>).

Метод Is_Empty определяет содержание пустого значения пользовательского атрибута субъекта или объекта и возвращает значение:

  • True. Пользовательский атрибут субъекта или объекта содержит пустое значение;

  • False. Пользовательский атрибут субъекта или объекта не содержит пустое значение.

Примеры:

  1. ABAC.Is_Empty(OBJECT.ATTR_OBJ)

Метод возвращает значение True, если пользовательский атрибут объекта с идентификатором «ATTR_OBJ» содержит пустое значение, иначе False.

  1. ABAC.Is_Empty(SUBJECT.ATTR_USER)

Метод возвращает значение True, если пользовательский атрибут субъекта с идентификатором «ATTR_USER» содержит пустое значение, иначе False.

Interseca

Синтаксис. ABAC.Interseca(<аргумент_1>,..., <аргумент_n>), где n - это количество заданных аргументов.

Параметры. В качестве аргументов задается:

  • числовое или строковое значение;

  • значение или массив значений пользовательского атрибута субъекта (SUBJECT.<Идентификатор атрибута>);

  • значение или массив значений пользовательского атрибута объекта (OBJECT.<Идентификатор атрибута>).

Примечание. Массив значений должен содержаться хотя бы в одном из заданных аргументов.

Метод Interseca осуществляет поиск общих значений заданных аргументов и возвращает значение:

  • True. Найдены общие значения заданных аргументов;

  • False. Не найдены общие значения заданных аргументов.

Примеры:

  1. ABAC.Interseca(OJBECT.ATTR_1, SUBJECT.ATTR_2, 3.3)

Метод возвращает значение True, если в массиве значений пользовательского атрибута объекта с идентификатором «ATTR_1» и в массиве значений пользовательского атрибута субъекта с идентификатором «ATTR_2» содержится значение 3.3, иначе False.

  1. ABAC.Interseca(SUBJECT.ATTR_3, OJBECT.ATTR_4)

Метод возвращает значение True, если в массиве значений пользовательского атрибута субъекта с идентификатором «ATTR_3» и в массиве значений пользовательского атрибута объекта с идентификатором «ATTR_4» содержатся общие значения, иначе False.

 

Intersecc

Синтаксис. ABAC.Intersecc("<свойство атрибута>", <аргумент_1>,..., <аргумент_n>), где n - это количество заданных аргументов.

Параметры.

Свойство атрибута. Фильтрация атрибутов коллекции по указанному свойству. Свойство атрибута указано справа от точки, например, у атрибута «SUBJECT.NAME» одним из свойств является наименование «NAME».

Аргументы. В качестве аргументов задается:

  • числовое или строковое значение;

  • значение или массив значений пользовательского атрибута субъекта (SUBJECT.<Идентификатор атрибута>);

  • значение или массив значений пользовательского атрибута объекта (OBJECT.<Идентификатор атрибута>);

  • список групп, в которых состоит пользователь (SUBJECT.GROUPS).

Метод Intersecc осуществляет поиск общих значений заданных аргументов по указанному свойству атрибута и возвращает значение:

  • True. Найдены общие значения заданных аргументов по указанному свойству атрибута;

  • False. Не найдены общие значения заданных аргументов по указанному свойству атрибута.

Примеры:

  1. ABAC.Intersecc("NAME", SUBJECT.GROUPS, "ADMIN")

Метод возвращает значение True, если наименование группы «ADMIN» совпадает с одним из наименований в списке групп, в которых состоит пользователь, иначе False.

  1. ABAC.Intersecc("NAME", SUBJECT.GROUPS, OBJECT.ATTR)

Метод возвращает значение True, если в списке групп, в которых состоит пользователь, и в массиве значений атрибута объекта с идентификатором «ATTR» содержится хотя бы одно совпадающее наименование группы, иначе False.

FindAttr

Синтаксис. ABAC.FindAttr("<свойство атрибута>", <атрибут субъекта>, <искомое значение>, "<свойство найденного атрибута>").

Параметры.

Свойство атрибута. Фильтрация атрибутов коллекции по указанному свойству. Свойство атрибута указано справа от точки, например, у атрибута «SUBJECT.NAME», одним из свойств является наименование «NAME».

Атрибут субъекта. В качестве атрибута задается список групп, в которых состоит пользователь (SUBJECT.GROUPS).

Искомое значение. Числовое или строковое искомое значение, соответствующее указанному свойству атрибута.

Свойство найденного атрибута. Свойство найденного атрибута, значение которого необходимо получить.

Метод FindAttr осуществляет поиск атрибута по указанному свойству в списке групп, в которых состоит пользователь, или в списке пользователей в группе. Возвращает значение заданного свойства найденного атрибута.

Примеры:

  1. ABAC.FindAttr("NAME", SUBJECT.GROUPS, "ADMIN", "NAME")

Метод возвращает значение «ADMIN», если в списке групп, в которых состоит пользователь, содержится наименование группы «ADMIN».

  1. ABAC.FindAttr("NAME", SUBJECT.GROUPS, "ADMIN", "SID")

Метод возвращает SID группы «ADMIN», если в списке групп, в которых состоит пользователь, содержится наименование группы «ADMIN».

См. также:

Настройка атрибутного метода | Добавление правил и политик проверки доступа