CombineAlgorithm: ABACCombineAlgorithm;
CombineAlgorithm: Prognoz.Platform.Interop.ABAC.ABACCombineAlgorithm;
Свойство CombineAlgorithm определяет алгоритм комбинации набора политик.
Для выполнения примера добавьте ссылки на системные сборки: ABAC, Metabase, ForeSystem (для примера на Fore.NET).
Sub UserProc;
Var
PolicyObject: IABACRootPolicyObject;
PolicySet: IABACPolicySet;
MB: IMetabase;
MS: IMetabaseSecurity;
Lic: Object;
Begin
MB := MetabaseClass.Active;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
MS := MB.Security;
// Активируем использование атрибутного доступа
MS.Policy.AttributeBasedAccessControl := True;
// Очистим структуру атрибутного доступа
PolicyObject := MB.Security.Policy.ABACRules;
PolicyObject.Policies.Clear;
// Добавим набор политик
PolicySet := PolicyObject.Policies.Add;
PolicySet.Active := True;
PolicySet.CombineAlgorithm := ABACCombineAlgorithm.PermitOverride;
PolicySet.Description(MB.CurrentLocale) := "Тестовый набор политик";
PolicySet.Id := "POLICY_SET";
PolicySet.Name(MB.CurrentLocale) := "Набор политик";
// Зададим цель набора политик
PolicySet.Target.AttributeId := "OPERATION";
PolicySet.Target.Operation := ABACTargetOperation.Equal;
PolicySet.Target.AttributeValue := 2;
// Применим изменения в менеджере безопасности
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: IABACPolicySet;
MB: IMetabase;
MS: IMetabaseSecurity;
Lic: Object;
Begin
MB := Params.Metabase;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
MS := MB.Security;
// Активируем использование атрибутного доступа
MS.Policy.AttributeBasedAccessControl := True;
// Очистим структуру атрибутного доступа
PolicyObject := MB.Security.Policy.ABACRules;
PolicyObject.Policies.Clear();
// Добавим набор политик
PolicySet := PolicyObject.Policies.Add();
PolicySet.Active := True;
PolicySet.CombineAlgorithm := ABACCombineAlgorithm.abacrcaPermitOverride;
PolicySet.Description[MB.CurrentLocale] := "Тестовый набор политик";
PolicySet.Id := "POLICY_SET";
PolicySet.Name[MB.CurrentLocale] := "Набор политик";
// Зададим цель набора политик
PolicySet.Target.AttributeId := "OPERATION";
PolicySet.Target.Operation := ABACTargetOperation.abactoEqual;
PolicySet.Target.AttributeValue := 2;
// Применим изменения в менеджере безопасности
MS.Apply();
// Освободим лицензию
Lic := Null;
End Sub;
В результате выполнения примера в менеджере безопасности активируется использование атрибутного доступа, в котором будет добавлен и активирован набор политик с заданными параметрами:
См. также: