PolicySets: IABACPolicySets;
PolicySets: Prognoz.Platform.Interop.ABAC.IABACPolicySets;
Свойство PolicySets предназначено для работы с коллекцией наборов политик.
Для выполнения примера убедитесь, что в атрибутном доступе содержится набор политик с вложенным набором политик.
Для выполнения примера добавьте ссылки на системные сборки: ABAC, Metabase, ForeSystem (для примера на Fore.NET).
Sub UserProc;
Var
PolicyObject: IABACRootPolicyObject;
PolicySet, EditSet: IABACPolicySet;
MB: IMetabase;
MS: IMetabaseSecurity;
Lic: Object;
Begin
MB := MetabaseClass.Active;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
MS := MB.Security;
PolicyObject := MB.Security.Policy.ABACRules;
// Изменим описание первого набора политик в наборе
PolicySet := PolicyObject.Policies.Item(0); // первый набор политик в структуре атрибутного доступа
EditSet := PolicySet.PolicySets.Item(0); // первый набор политик в выбранном наборе
EditSet.Description(MB.CurrentLocale) := "Тестовый набор политик";
// Отключим активность набора политик в структуре атрибутного доступа
EditSet.Active := False;
// Выведем в консоль ключ измененного набора политик
Debug.WriteLine("Ключ набора политик: " + EditSet.Key.ToString);
// Применим изменения в менеджере безопасности
MS.Apply;
// Освободим лицензию
Lic := Null;
End Sub UserProc;
Imports Prognoz.Platform.Interop.ABAC;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ForeSystem;
…
Public Shared Sub Main(Params: StartParams);
Var
PolicyObject: IABACRootPolicyObject;
PolicySet, EditSet: IABACPolicySet;
MB: IMetabase;
MS: IMetabaseSecurity;
Lic: Object;
Begin
MB := Params.Metabase;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
MS := MB.Security;
PolicyObject := MB.Security.Policy.ABACRules;
// Изменим описание первого набора политик в наборе
PolicySet := PolicyObject.Policies.Item[0]; // первый набор политик в структуре атрибутного доступа
EditSet := PolicySet.PolicySets.Item[0]; // первый набор политик в выбранном наборе
EditSet.Description[MB.CurrentLocale] := "Тестовый набор политик";
// Отключим активность набора политик в структуре атрибутного доступа
EditSet.Active := False;
// Выведем в консоль ключ измененного набора политик
System.Diagnostics.Debug.WriteLine("Ключ набора политик: " + EditSet.Key.ToString());
// Применим изменения в менеджере безопасности
MS.Apply();
// Освободим лицензию
Lic := Null;
End Sub;
В результате выполнения примера в атрибутном доступе будет изменено описание вложенного набора политик и снят флажок активности в структуре атрибутного доступа:
В консоль будет выведен ключ вложенного набора политик:
Ключ набора политик: 123
См. также: