Сценарии фильтра событий аудита

Документация Avanpost IDM 7 : 10.6.4. Сценарии фильтра событий аудита

Навигатор по разделу


Общие сведения

Фильтр позволяет отсеивать и/или дополнительно обрабатывать сторонние изменения УЗ, обнаруженные при аудите, сразу после обнаружения до отправки уведомлений и сохранения в журнале аудита. Главным образом для автоматического пропуска несущественных с точки зрения нарушения доступа прав, когда таких событий много.

Сценарии должны быть написаны на языке python 2.7 и выполняются в среде IronPython. В сценариях доступна стандартная библиотека IronPython. 

Подробнее о IronPython см. документацию: http://ironpython.net/documentation/.

О применении сценариев фильтра событий аудита в веб-интерфейсе администратора см. статью "6.1.4. Настройка интеграции с целевыми системами" руководства по администрированию.


Контекст

Для сценария содержимого IDM формирует глобальный контекст:

Параметр

Описание

Account.Name

Имя УЗ.

Account.ResourceId

Идентификатор ресурса УЗ.

Account.ProfileId

Идентификатор профиля УЗ.

Modifications

Список всех сторонних изменений УЗ.

Параметры Modifications см. в разделе "Параметры Modifications".

AddRightModifications

Список только добавленных прав.

Connector

Коннектор с уже открытым подключением (закрывать нельзя).

Debug.Print()

Отладочный вывод.

Employee

Сотрудник. Свойство типа ScriptEmployee.
Свойство доступно, если УЗ принадлежит сотруднику. В ином случае оно будет пустым.

Параметры Employee см. в разделе "Параметры Employee".

Unit

Юнит. Свойство типа UnitScriptModel.
Свойство доступно, если УЗ принадлежит юниту. В ином случае оно будет пустым.

Параметры Unit см. в разделе "Параметры Unit".

Role

Роль. Свойство типа ScriptRole.
Свойство доступно, если УЗ создана в результате назначения роли, которая создаёт уникальные УЗ. В ином случае оно будет пустым.

Параметры Role см. в разделе "Параметры Role".


Параметры Modifications

Параметр

Описание

Id

Идентификатор изменения.

Type

Тип изменения.

Доступные типы изменений см. в разделе "Типы изменений".

Supressed

Флажок. Устанавливается значение "true" для изменений, которые требуется полностью пропустить, как если бы они не были обнаружены вообще.

Hidden

Флажок. Устанавливается значение "true" для изменений, которые нужно оставить в журнале аудита скрытыми по умолчанию и о которых не нужно уведомлять администратора.

RightName

Человекочитаемое название права.

RightId

Идентификатор права (для глобальных и для объектных прав).

HasAttributes

Флажок наличия атрибутов. При значении "true" для права можно указывать значения атрибутов объектов доступа, на которые оно выдаётся.

Conditions

Атрибуты объектов, соответствующих праву. Массив значений типа GeneratorAccountObjectPredicate. Этот тип содержит свойства:

  • AttributeId (строковый тип) — идентификатор атрибута из коннектора;

  • AttributeLabel (строковый тип) — человекочитаемое название атрибута;

  • Value (строковый тип) — значение атрибута;

  • ValueLabel (строковый тип) — человекочитаемое название значения;

  • IsRequired (логический тип) — при значении "true" значение атрибута должно указываться обязательно.

ObjectUri

Идентификатор объекта (для объектных прав).

LockedByAdministrator

Блокировка требуется из-за ручного запроса (для событий разблокировки).

PropertyId

Идентификатор изменённого свойства (для событий изменения значений свойств).

ExpectedValue

Ожидаемое значение свойства (для событий изменения значений свойств).


Типы изменений 

Название

Описание

AccountAddRightModification

Добавлено лишнее право.

AccountRemoveRightModification

Удалено необходимое право.

AccountUnlockModification

Разблокирована УЗ.

AccountDeleteModification

Удалена УЗ.


Параметры Role 

ПараметрОписание

Role.Id

Идентификатор роли. Целочисленный тип.

Role.Name

Название роли. Строковый тип.

Role.Properties

Расширенные свойства роли. Массив с парами значений string - ExtendedPropertyValueScriptMode. Этот тип содержит свойства:

  • JsonValue (строковый тип) — значение свойства в формате JSON;

  • NativeValue (тип object) — значение свойства в виде объекта.

Параметры Employee 

ПараметрОписание

Employee.Id

Идентификатор сотрудника. Целочисленный тип.

Employee.EMail

Почтовый адрес сотрудника. Строковый тип.

Employee.FirstName

Имя сотрудника. Строковый тип.

Employee.LastName

Фамилия сотрудника. Строковый тип.

Employee.Patronymic

Отчество сотрудника. Строковый тип.

Employee.PersonnelNumber

Табельный номер сотрудника. Строковый тип.

Employee.Extension

Расширенные данные сотрудника, предоставленные кадровой системой (без наследования). Свойство типа ExtensionBag.

Employee.Extension.Properties

Массив свойств сотрудника, предоставленных кадровой системой.

Employee.BirthDate

Дата рождения в формате ISO 8061 (гггг-мм-дд). Строковый тип.

Employee.Division

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

Employee.Division.Id

Идентификатор подразделения сотрудника. Целочисленный тип.

Employee.Division.Name

Название подразделения сотрудника. Строковый тип.

Employee.Division.Extension

Расширенные данные подразделения, предоставленные кадровой системой (без наследования). Свойство типа ExtensionBag.

Employee.Division.Extension.Properties

Массив свойств подразделения, предоставленных кадровой системой.

Employee.Division.Parent

Ссылка на родительское подразделения (рекурсивная). Свойство типа ScriptDivision.

Employee.Division.ManagerId

Идентификатор руководителя подразделения. Целочисленный тип.

Employee.Division.ExternalId

Идентификатор подразделения сотрудника в кадровой системе. Строковый тип.

Employee.Division.GetFullName()    

Функция для получения полного названия подразделения в формате DN (в качестве OU берутся либо первые 64 символа названия подразделения, либо значение Extension.OU)

Employee.Division.GetFullNameExplicit(bool ignoreMissing = false)

Функция для получения полного названия подразделения в формате DN без вывода OU из названий подразделений (в качестве OU берётся только значение Extension.OU).

При ignoreMissing=True, если хотя бы одно значение не заполнено, возвращается None, иначе компонент DN пропускается.

Employee.Division.GetPath()

Функция для получения списка подразделений на пути к этому подразделению начиная от корневого и заканчивая текущим.

Employee.Division.GetPath()[0] всегда корневое.

Employee.Position

Должность сотрудника. Свойство типа ScriptPosition.

Employee.Position.Id

Идентификатор должности сотрудника. Целочисленный тип.

Employee.Position.Name

Название должности сотрудника. Строковый тип.

Employee.Position.ExternalId

Идентификатор должности сотрудника в кадровой системе. Строковый тип.

Employee.ExternalId

Идентификатор сотрудника в кадровой системе. Строковый тип.

Employee.PersonId

Идентификатор физического лица в кадровой системе. Строковый тип.

Employee.GetManagerId()

Функция для получения идентификатора руководителя ближайшего по иерархии подразделения кроме тех подразделений, которыми руководит указанный работник.

Employee.GetDirectManagerId()

Функция для получения идентификатора текущего непосредственного руководителя работника.

Параметры Unit

ПараметрОписание

Unit.Id

Идентификатор юнита. Строковый тип.

Unit.Name

Имя юнита. Строковый тип.

Unit.ParentId

Идентификатор родительского юнита. Строковый тип.

Unit.DisableIdentity

Флажок отключения авторизации. Логический тип.

Unit.Path

Путь к юниту. Строковый тип.

Unit.Type

Тип юнита. Свойство типа UnitType. 

Unit.Type.Id

Идентификатор типа юнита. Тип Guid.

Unit.Type.Name

Название типа юнита. Строковый тип.

Unit.Type.AllowAssignments

Флажок разрешения назначения юнитов этого типа сотрудникам. Логический тип.

Unit.Type.IsIdentitySubject

Флажок, показывающий, являются ли юниты данного типа субъектами авторизации. Логический тип.

Unit.Type.Icon

Иконка типа юнита. Строковый тип.

Unit.Type.Links

Ссылки на другие типы юнитов. Массив значений типа UnitTypeLink. Этот тип содержит свойства:

  • Id (тип Guid) — идентификатор ссылки;
  • Name (Строковый тип) — название ссылки;
  • ParentTypeId (тип Guid) — идентификатор родительского типа юнитов;

  • ChildTypeId (тип Guid) — идентификатор дочернего типа юнитов;

  • ChildType (тип UnitType) — дочерний тип юнитов.

Unit.Type.Properties

Свойства типа юнитов. Массив значений типа UnitTypeProperty. Этот тип содержит свойства:

  • Order (целочисленный тип) — порядок свойства;
  • Name (строковый тип) — название свойства;
  • Description (строковый тип) — описание свойства;
  • Required (логический тип) — флажок обязательности заполнения значения свойства;
  • Unique (логический тип) — флажок уникальности значения свойства;
  • Indexed (логический тип) — флажок индексируемости свойства;
  • ValueType (тип UnitPropertyValueType) — тип значения свойства;
  • ValueConfig (строковый тип) — тип ввода значения свойства;
  • DefaultValue (строковый тип) — значение по умолчанию для свойства;
  • Id (тип Guid) — идентификатор свойства;
  • UnitTypeId (тип Guid) — идентификатор типа юнитов;
  • Validators (массив типа UnitPropertyValidatorConfig) — валидаторы свойства.

Unit.Type.Children

Дочерние типы юнитов. Массив значений типа UnitTypeChild. Этот тип содержит свойства:

  • Id (тип Guid) — идентификатор юнита;
  • ParentTypeId (тип Guid) — идентификатор родительского типа юнитов;
  • ChildTypeId (тип Guid) — идентификатор дочернего типа юнитов;
  • PatentType (тип UnitType) — родительский тип юнитов;
  • ChildType (тип UnitType) — дочерний тип юнитов.

Unit.Properties

Расширенные свойства юнита. Массив с парами значений string - UnitPropertyValueScriptModel. Этот тип содержит свойства:

  • JsonValue (строковый тип) — значение свойства в формате JSON;

  • NativeValue (тип object) — значение свойства в виде объекта.

Unit.Links

Ссылки юнита. Массив значений типа UnitLink. Этот тип содержит свойства:

  • ParentId (тип Guid) — идентификатор родительского юнита;
  • TypeId (тип Guid) — идентификатор типа юнита;
  • ChildId (тип Guid) — идентификатор дочернего юнита;
  • Type (тип UnitTypeLink) — тип юнита;
  • Parent (тип Unit) — родительский юнит;
  • Child (тип Unit) — дочерний юнит;

Unit.Responsibles

Ответственные за юнит. Массив значений типа UnitEmployeeResponsibleScriptModel. Этот тип содержит свойства:

  • EmployeeId (целочисленный тип) Идентификатор сотрудника;

  • Employee (тип Employee) Сотрудник;

  • Function (Строковый тип) Функция ответственного;

  • UnitId (тип Guid) Идентификатор юнита;

  • Id (целочисленный тип) Идентификатор ответственного;

Unit.Assignments

Назначения юнита сотрудникам. Массив значений типа UnitAssignment. Данный тип содержит свойства:

  • Id (тип Guid) — идентификатор назначения;
  • UnitId (тип Guid) — идентификатор юнита;
  • EmployeeId (целочисленный тип) — идентификатор сотрудника;
  • Unit (тип Unit) — юнит;
  • Employee (тип Employee) — сотрудник.

Unit.Children

Дочерние юниты. Массив значений типа Unit. Этот тип содержит свойства и методы:

  • Id (тип Guid) — идентификатор юнита;
  • ParentId (тип Guid) — идентификатор родительского юнита;
  • TypeId (тип Guid) — идентификатор типа юнита;
  • Name (строковый тип) — имя юнита;
  • Deleted (логический тип) — флажок удаленного юнита;
  • DisableIdentity (логический тип) — флажок отключения объекта как субъекта авторизации;

  • Version (целочисленный тип) — версия;
  • Signature (тип Signature) — цифровая подпись;

  • GetTextId() — функция, возвращающая идентификатор юнита строкой;
  • GetRef() — функция, возвращающая ссылку на юнит;
  • Path (строковый тип) — путь к юниту;
  • Type (тип UnitType) — тип юнита;
  • Acl (тип UnitAcl) — ACL юнита;
  • Properties (массив значений типа UnitPropertyValue) — расширенные свойства юнита;
  • Links (массив значений типа UnitLink) — ссылки юнита на другие юниты;
  • Responsibles (массив значений типа UnitResponsible) — ответственные за юнит;

  • Assignments (массив значений типа UnitAssigment) — назначения юнита;

  • Children (массив значений типа Unit) — дочерние юниты;

  • ToString() — функция, возвращающая идентификатор и имя юнита строкой.


Примеры сценариев

Пример пропуска лишних прав
for m in AddRightModifications:
    if m.RightName.startswith("CN=Domain Guest"):
      m.Supressed = True
Пример удаления лишних прав сразу при обнаружении
for m in AddRightModifications:
    if m.ObjectUri is None:
        Connector.DropUserRights(Account.Name, [m.RightId])
    else:
        Connector.DropUserObjectRight(Account.Name, m.ObjectUri, m.RightId)
    m.Supressed = True
Пример пропуска событий изменения значений свойств по заданным условиям
import json
Debug.Print(json.dumps(Modifications))for m in Modifications:
    if m.PropertyId == 'EmployeeId' and m.ExpectedValue == None:
      m.Supressed = True 

Обсуждение