Сценарии генерации содержимого роли применимы в следующих случаях:
- Определение конечного списка прав, предоставляемых ролью, в контексте субъекта авторизации, который получает роль.
- Создание права в управляемой системе с набором привилегий в момент назначения роли учетной записи субъекта.
Сценарии должны быть написаны на языке python 2.7 и выполняются в среде IronPython. В сценариях доступна стандартная библиотека IronPython.
Примечание:
Подробнее о IronPython см. документацию: http://ironpython.net/documentation/.
Примечание:
О применении сценариев генерации содержимого роли в веб-интерфейсе администратора см. статью "5.2.5. Роли" руководства по администрированию.
Навигатор по разделу:
1. Контекст
Для сценария содержимого IDM формирует глобальный контекст:
| Параметр | Описание |
|---|---|
Configuration | Конфигурация. Свойство типа ICustomConfigurationReadonlyFunctions. Подробнее о конфигурациях см. статью "9.5. Конфигурации" руководства по разработке. |
Configuration.GetConfigurationValueOrDefault(string sectionName, string key) | Функция для получения значения конфигурации. Принимает на вход название секции и ключ конфигурации. |
Configuration.GetConfigurationValues(string sectionName) | Функция для получения всех значений конфигураций в секции. Принимает на вход название секции. |
Account | Учётная запись, на которую назначается роль. Свойство типа GeneratorAccount. |
Account.AddManagedRight(string name) | Функция добавления управляемого права в роль. Принимает на вход наименование управляемого права. Возвращает объект типа GeneratorAccountManagedRight. Параметры GeneratorAccountManagedRight см. в разделе "Параметры GeneratorAccountManagedRight". |
Account.AddRight(string rightId, string rightName, bool? createIfMissing = false, | Функция добавления глобального права в роль. Принимает на вход:
Возвращает объект типа GeneratorAccountRight. Параметры GeneratorAccountRight см. в разделе "Параметры GeneratorAccountRight". |
Account.AddRightByName(string rightName) | Функция добавления глобального права с заданным именем в роль. Принимает на вход наименование глобального права. |
Account.AddObjectRight(string objectUri, string objectRightId, | Функция добавления объектного права с заданным идентификатором объекта и права в роль. Принимает на вход:
|
Account.AddObjectRightByName(string rightName) | Функция добавления объектного права с заданным именем в роль. Принимает на вход наименование объектного права. |
Account.AddExtendedRight(string rightId, string rightName, | Функция добавления глобального составного права в роль. Принимает на вход:
Возвращает объект типа GeneratorAccountRight. Параметры GeneratorAccountRight см. в разделе "Параметры GeneratorAccountRight". |
Account.AddExtendedRightByName(string rightName) | Функция добавления глобального составного права с заданным именем в роль. Принимает на вход наименование глобального составного права. Возвращает объект типа GeneratorAccountRight. Параметры GeneratorAccountRight см. в разделе "Параметры GeneratorAccountRight". |
Debug | Вспомогательные средства отладки. Свойство типа ScriptDebug. |
Debug.Print(string text) | Функция вывода отладочной информации. |
Transliterate(string str) | Функция применения транслитерации к возвращаемому значению. |
GetAccountInProfile() | Функция для получения учетной записи со свойствами в профиле ресурса. Возвращает объект ScriptAccount, в который включены свойства. |
GetAccountsInProfile() | Функция для получения учетных записей со свойствами в профиле ресурса. Возвращает массив объектов ScriptAccount, в которые включены свойства. |
GetAccountInProfileForRole() | Функция для получения учетной записи со свойствами в профиле ресурса для роли. Возвращает объект ScriptAccount, в который включены свойства. |
GetAccountsInProfileForRole() | Функция для получения учетных записей со свойствами в профиле ресурса для роли. Возвращает массив объектов ScriptAccount, в которые включены свойства. |
GetContentResources() | Функция для получения ресурсов со свойствами. Возвращает массив объектов ScriptResource, в которые включены свойства. |
Employee | Сотрудник, которому назначается роль. Свойство типа ScriptEmployee. Параметры Employee см. в разделе "Параметры Employee". |
Unit | Юнит, которому назначается роль. Свойство типа UnitScriptModel. Параметры Unit см. в разделе "Параметры Unit". |
Role | Роль, которая назначается. Свойство типа ScriptRole. Параметры Role см. в разделе "Параметры Role". |
1.1. Параметры GeneratorAccountManagedRight
| Параметр | Описание |
|---|---|
ManagedRightName | Название управляемого права. Строковой тип. |
Conditions | Атрибуты. Массив значений типа GeneratorAccountObjectPredicate. Данный тип содержит свойства:
|
AddCondition(string attributeId, string value, string attributeLabel = null, | Функция для добавления условия. Принимает на вход:
|
1.2. Параметры GeneratorAccountRight
| Параметр | Описание |
|---|---|
ConnectorId | Идентификатор коннектора. Строковый тип. |
Name | Название права. Строковый тип. |
CreateIfMissing | Флаг. При значении "true" право будет добавлено в случае его отсутствия. |
ResourceId | Идентификатор ресурса. Целочисленный тип. |
RightId | Идентификатор права. Строковый тип. |
HasAttributes | Флаг наличия атрибутов. При значении "true" для права можно указывать значения атрибутов объектов доступа, на которые оно выдаётся. |
FlattenRights() | Функция, которая возвращает плоский список, содержащий этот экземпляр права и все вложенные. |
AsRef() | Функция, которая возвращает ссылку на право, достаточную для использования в коннекторе. |
GetRawId() | Функция, которая возвращает идентификатор права с вектором всех значений атрибутов в JSON. |
Description | Произвольное название для права, удобное для отображения в IDM. Строковый тип. |
RiskPoints | Целое число, задаваемое администратором. Добавляет очки риска к учётной записи, обладающей этим правом. |
Resource | Ресурс права. Свойство типа Resource. |
IsEffective | Флаг. При значении "true" право невозможно выдать УЗ напрямую, Такое право может использоваться только в качестве состава другого права. |
IsDeleted | Флаг. При значении "true" запись является архивной, скрывается из списка, право никогда не считается лишним при аудите. |
LastSynchronizationDate | Время последней синхронизации права. Тип DateTimeOffset. |
Effective | Вложенные права. Массив значений типа GeneratorAccountEffectiveRight. Данный тип содержит свойства:
|
Conditions | Атрибуты объектов, соответствующих праву. Массив значений типа GeneratorAccountObjectPredicate. Данный тип содержит свойства:
|
AddEffective(string rightId, string name, string objectUri = null, | Функция для добавления вложенного права. Принимает на вход:
|
AddCondition(string attributeId, string value, string attributeLabel = null, | Функция для добавления условия. Принимает на вход:
|
Equals(GlobalRightSpec other) | Функция сравнения глобального права с другим глобальным правом. Принимает на вход объект типа GlobalRightSpec. Возвращает значение типа boolean. |
EffectiveEquals(GlobalRightSpec other) | Функция сравнения состава глобального права с составом другого глобального права. Принимает на вход объект типа GlobalRightSpec. Возвращает значение типа boolean. |
1.3. Параметры Role
| Параметр | Описание |
|---|---|
Role.Id | Идентификатор роли. Целочисленный тип. |
Role.Name | Название роли. Строковый тип. |
Role.Properties | Расширенные свойства роли. Массив с парами значений string - ExtendedPropertyValueScriptMode. Данный тип содержит свойства:
|
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. Данный тип содержит свойства:
|
Unit.Type.Properties | Свойства типа юнитов. Массив значений типа UnitTypeProperty. Данный тип содержит свойства:
|
Unit.Type.Children | Дочерние типы юнитов. Массив значений типа UnitTypeChild. Данный тип содержит свойства:
|
Unit.Properties | Расширенные свойства юнита. Массив с парами значений string - UnitPropertyValueScriptModel. Данный тип содержит свойства:
|
Unit.Links | Ссылки юнита. Массив значений типа UnitLink. Данный тип содержит свойства:
|
Unit.Responsibles | Ответственные за юнит. Массив значений типа UnitEmployeeResponsibleScriptModel. Данный тип содержит свойства:
|
Unit.Assignments | Назначения юнита сотрудникам. Массив значений типа UnitAssignment. Данный тип содержит свойства:
|
Unit.Children | Дочерние юниты. Массив значений типа Unit. Данный тип содержит свойства и методы:
|
2. Примеры сценариев
Account.AddRightByName('CN=Protected Users,CN=Users,DC=adtest,DC=local')
if Employee.Division.GetPath()[0].Name == 'Отдел маркетинга':
Account.AddRightByName('Выполнение')
exetended = Account.AddExtendedRightByName('ExtendedRight')
exetended.AddEffective('eff1', 'eff1')
exetended.AddEffective('eff2', 'eff2')