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

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

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

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

Примечание:

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

Примечание:

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

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

1. Контекст

Для сценария содержимого 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".

1.1. Параметры Modifications

Параметр

Описание

Id

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

Type

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

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

Supressed

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

Hidden

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

RightName

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

RightId

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

HasAttributes

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

Conditions

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

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

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

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

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

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

ObjectUri

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

LockedByAdministrator

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

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

Название

Описание

AccountAddRightModification

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

AccountRemoveRightModification

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

AccountUnlockModification

Разблокирована учётная запись

AccountDeleteModification

Удалена учётная запись

1.3. Параметры Role 

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

Role.Id

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

Role.Name

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

Role.Properties

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

  • JsonValue (Строковый тип) Значение свойства в формате JSON.

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

1.4. Параметры 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()

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

1.5. Параметры Unit

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

Unit.Id

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

Unit.Name

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

Unit.ParentId

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

Unit.DisableIdentity

Флаг отключения авторизации. Тип boolean.

Unit.Path

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

Unit.Type

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

Unit.Type.Id

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

Unit.Type.Name

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

Unit.Type.AllowAssignments

Флаг разрешения назначения юнитов данного типа сотрудникам. Тип boolean.

Unit.Type.IsIdentitySubject

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

Unit.Type.Icon

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

Unit.Type.Links

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

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

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

  • ChildType (тип UnitType) Дочерний тип юнитов;

Unit.Type.Properties

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

  • Order (целочисленный тип) Порядок свойства;
  • Name (Строковый тип) Название свойства;
  • Description (Строковый тип) Описание свойства;
  • Required (тип boolean) Флаг обязательности заполения значения свойства;
  • Unique (тип boolean) Флаг уникальности значения свойства;
  • Indexed (тип boolean) Флаг индексируемости свойства;
  • 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 (тип boolean) Флаг удаленного юнита;
  • DisableIdentity (тип boolean) Флаг отключения объекта как субъекта авторизации;

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

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

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

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

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

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

Пример пропуска лишних прав
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

Обсуждение