Синхронизация#
Блок синхронизации в конфигурации ресурса используется только если возникло какое-либо внешнее (по отношению к IDM) либо неожиданное событие. Например, во время реконсиляции обнаруживается новая учетная запись на внешнем ресурсе (аккаунт), или во время регулярного обнаружения изменений находится аккаунт с конфликтующими данными. Блок синхронизации не используется, когда источником изменений является IDM (например при создании аккаунтов после назначения роли).
Алгоритм синхронизации#
Когда IDM обнаруживает событие для синхронизации, используется следующий алгоритм:
Определяется подходящая политика синхронизации. Если подходящей политики не обнаружено, событие будет проигнорировано. Подходящая политика определяется через класс измененного объекта (
objectClass), вид и применение объекта (kindиintent) и условие применения (если указано).Определяется ситуация синхронизации.
Находится и исполняется соответствующее действие синхронизации.
Политика синхронизации применяется ко всем вариантам синхронизации по умолчанию. Если требуется сузить политику, можно воспользоваться ограничением по каналу.
Конфигурация политики синхронизации#
Конфигурация ресурса содержит блок синхронизации, который, в свою очередь, содержит одну или несколько секций политик синхронизации объекта <objectSynchronization>. Каждая такая секция содержит политику синхронизации <synchronization> для конкретного типа объекта. IDM определяет какая политика будет использована на основании класса объекта, его вида и применения. Для каждого возникшего события используется только одна <objectSynchronization> секция.
Блок политики синхронизации объекта имеет следующие параметры:
Имя
<name>и описание<description>— Опциональные параметры. Имя и описание политики, используемые для отладки.Класс объекта
<objectClass>— Опциональный параметр. Определяет класс объекта ресурса, к которому будет применяться политика синхронизации.Вид
<kind>и применение<intent>— Опциональные параметры. Определяют вид (account, entitlement) и применение (default, testing), которые будут назначены для объекта, если их нет. Также эти параметры используются для выбора корректной политики синхронизации, если к классу объекта применимо несколько различных политик синхронизации.Тип фокуса
<focusType>— Опциональный параметр. Определяет тип фокуса, соответствующий объекту ресурса. Используется в сочетании с выражением корелляции для определения ситуации и последующей реакции.Переключатель
<enabled>— Обязательный параметр. Определяет, активна (true) ли политика или нет (false).Условие
<condition>— Опциональный параметр. Выражение, которое должно возвращатьtrue, чтобы политика синхронизации была применена к объекту.Выражение корелляции
<correlation>— Обязательный параметр. Используется для обнаружения подходящего объекта, к которому нужно применять изменения, а также для определения ситуации синхронизации.Ссылка на шаблон объекта
<objectTemplateRef>— Опциональный параметр. Ссылка на объект IDM, содержащий шаблон объекта, который будет использоваться в случае применения данной политики синхронизации (например, если реакция на событие вызывает создание новой учетной карточки IDM).Переключатель реконсиляции
<reconcile>— Опциональный параметр. Определяет, нужна ли реконсиляция во время реакции на событие.Переключатель
<opportunistic>— Опциональный параметр. Определяет, будет ли IDM пытаться связывать и синхронизировать объекты в любой возможный момент времени, например во время операций с другими объектами. По умолчанию включен.Блоки реакций
<reaction>— Обязательный параметр. Определяет реакцию IDM на каждую ситуацию синхронизации при применении данной политики.
Ситуации синхронизации#
Когда IDM обнаруживает событие синхронизации, оно определяется в одну из категорий. Ситуация описывает, как изменение относится к объекту ресурса (аккаунту) в IDM, учетной карточке (юзеру), политикам и состоянию IDM.
В IDM существуют следующие ситуации:
Ситуация |
Описание |
Примеры |
|---|---|---|
linked |
Объект ресурса связан с соответствующим объектом фокуса. Например, аккаунт (учетная запись ресурса) привязывается к юзеру (учетной карточке в IDM) |
Изменение атрибутов на стороне ресурса |
deleted |
Объект ресурса был удален. Например, аккаунт существовал на ресурсе, но был удален |
Легальный аккаунт был удален вручную на стороне ресурса |
unlinked |
Объект ресурса обнаружен в ресурсе, IDM определил только одного возможного владельца этого объекта (юзера), и владелец не связан с объектом. Например, в ресурсе существует аккаунт, по выражению корелляции был обнаружен подходящий владелец в IDM (юзер) |
Аккаунт был создан инструментами администрирования ресурса |
unmatched |
Объект ресурса обнаружен в ресурсе, IDM не может определить владельца этого объекта. Например, выражение корелляции не возвращает соответствующего юзера IDM |
Аккаунт был создан инструментами администрирования ресурса, и имеен некорректное имя пользователя |
disputed |
Для одного объекта ресурсва обнаружено два или более владельцев. Например, в ресурсе обнаружен новый аккаунт, и выражение корелляции возвращает двух или более юзеров |
Некий аккаунт создан вручную на стороне ресурса, с именем пользователя |
Ситуации синхронизации обрабатывают только наличие или отсутствие объекта ресурса (аккаунта) и его владельца. Они никак не связаны с "легальностью", то есть определением того, должен ли пользователь иметь этот аккаунт или нет.
Алгоритм определения ситуации#
IDM использует следующий алгоритм при определении ситуации:
Если аккаунт удален, ситуация —
deleted;Определяется владелец аккаунта. Владельцем считается объект IDM, имеющий связь с этим объектом ресурса (аккаунтом). Если владелец найденб ситуация —
linked;Если владелец не обнаружен, обрабатывается выражение корелляции, чтобы определить потенциальных владельцев данного аккаунта. Если потенциальные владельцы найдены, ситуация —
unlinkedилиdisputed;Если ни один из предыдущих шагов не подходит, ситуация —
unmatched.
Каналы#
Канал определяет механизм, который был использован при обнаружении изменения. Подробнее смотрите в подразделе Каналы раздела Маппинги.
Реакции#
Базовая реакция IDM на событие синхронизации это запуск перерасчета всех атрибутов, так же как и при любом изменении в системе. По умолчанию IDM не делает ничего, поэтому данную реакцию необходимо эксплицитно указать, использовав переключатель <synchronize>
Однако ситуации синхронизации могут быть более сложными, и реакция на них должна отличаться от простой синхронизации значений атрибутов. Например, если мы обнаруживаем, что учетная карточка (юзер) IDM удалена, однако связанный с ней аккаунт в ресурсе существует, мы можем захотеть удалить (либо просто отвязать, в зависимости от политики) этот аккаунт.
Определение блока <reaction> имеет следующие элементы:
Имя
<name>и описание<description>— Опциональные параметры. Имя и описание реакции, используемые для отладки.Ситуация
<situation>— Обязательный параметр. Определяет ситуацию, в которой применяется реакция.Канал изменений
<channel>— Опциональный параметр. Определяет канал изменений, на который будет реагировать реакция.Переключатель синхронизации
<synchronize>— Полуопциональный параметр. Определяет, применяются ли к событию базовые алгоритмы синхронизации IDM (смотрите ниже).Переключатель реконсиляции
<reconcile>— Опциональный параметр. Определяет, требуется ли реконсиляция в качестве реакции на это событие.Ссылка на шаблон объекта
<objectTemplateRef>— Опциональный параметр. Ссылка на объект IDM, содержащий шаблон объекта, который будет использоваться в случае, если объект фокуса (обрабатываемый юзер IDM) создается или изменяется. Если не указано, используется шаблон по умолчанию из конфигурации ресурса или конфигурации системы.Действие
<action>— Полуопциональный параметр. Определяет набор действий, которые применяются при данной реакции.
Подробнее о параметрах
<synchronize>и<action>. IDM может отреагировать на событие одним из двух путей:
Выполнить действие, определенное в блоке
<action>в конфигурации реакции.Выполнить стандартную процедуру синхронизации, что определяется значением переключателя
<synchronize>. Если переключатель установлен вtrue, будут выполнены стандартные действия по синхронизации — исполнение всех входящих и исходящих маппингов, обработка назначений, ролей, шаблонов объектов и так далее.Эти действия могут быть использованы в любой комбинации, но хотя бы одно из них должно быть определено для реакции. Как правило в большинстве реакций используются оба элемента.
Действия#
Действия это блоки кода, которые изменяют стандартный механизм синхронизации IDM. Например, действие может привязать аккаунт к существующему юзеру перед исполнением действий синхронизации.
Определение блока <action> имеет следующие элементы:
Имя
<name>и описание<description>— Опциональные параметры. Имя и описание действия, используемые для отладки.URI обработчика
<handlerUri>— Обязательный параметр. Ссылка на блок кода действия (смотрите ниже).Порядок исполнения
<order>— Опциональный параметр. Определяет, будет ли действие исполняться до (before) или после (after) запуска стандартного механизма синхронизации IDM.Блок параметров
<parameters>— Опциональный блок параметров. Может быть использован для передачи дополнительных параметров в действие.
Код, используемый в действиях, указывается при помощи URI. IDM предоставляет следующий набор действий:
Все URI действий имеют следующий префикс —
http://midpoint.evolveum.com/xml/ns/public/model/action-3
Имя действия |
Описание |
Обычно используется в ситуации |
URI |
|---|---|---|---|
Link |
Связывает объект ресурса с фокусом. Например, связывает аккаунт с юзером |
unlinked |
|
Unlink |
Отвязывает объект ресурса от фокуса. Например, отвязывает аккаунт от юзера |
linked |
|
Add focus |
Добавляет новый объект фокуса. Например, создает нового юзера на основании аккаунта |
unmatched |
|
Delete focus |
Удаляет объект фокуса. Например, удаляет юзера, который был связан с аккаунтом |
deleted |
|
Inactivate focus |
Изменяет статус активации объекта фокуса. Например, отключает юзера, который был привязан к аккаунту |
deleted |
|
Delete shadow |
Удаляет объект ресурса. Например, удаляет аккаунт, которые не связан ни с каким юзером |
unmatched |
|
Inactivate shadow |
Изменяет статус активации объекта ресурса. Например, отключает аккаунт, у которого нет владельца (юзера) |
unmatched |
|
Обратите внимание, что действия лишь изменяют базовые действия синхронизации. Например, действие Inactivate focus это не единственный способ отключения учетной карточки (юзера) пользователя. Юзера также можно отключить через входящий маппинг или через шаблон объекта. Действия синхронизации применяются только при обнаружении внешних изменений (произошедших вне системы IDM), и поэтому их следует использовать только в тех случаях, когда маппингов недостаточно.