IMetabaseUpdate.AbacRulesNode

Синтаксис

AbacRulesNode: IMetabaseUpdateAbacRulesNode;

AbacRulesNode: Prognoz.Platform.Interop.Metabase.IMetabaseUpdateAbacRulesNode;

Описание

Свойство AbacRulesNode возвращает структуру правил атрибутного доступа в обновлении.

Комментарии

Если структуры правил атрибутного доступа не было в обновлении, то она создается.

Пример

Для выполнения примера убедитесь, что в структуре атрибутного доступа содержится набор политик с двумя вложенными политиками и на диске С находится файл обновления «Update.pefx». В первой политике содержится несколько правил атрибутного доступа.

Добавьте ссылки на системные сборки: ABAC, Metabase.

Sub Main;
Var
    MB: IMetabase;

    MS: IMetabaseSecurity;
    PolicyObject: IABACRootPolicyObject;
    PolicySet: IABACPolicySet;
    Policy: IABACPolicy;
    Update: IMetabaseUpdate;
    UpdateNode, AbacRulesNode: IMetabaseUpdateAbacRulesNode;
Begin
    
// Получим доступ к репозиторию
    MB := MetabaseClass.Active;
    MS := MB.Security;
    Update := Mb.CreateUpdate;
    Update.LoadFromFileNF(
"C:\Update.pefx");
    
// Проверим наличие правил атрибутного доступа в обновлении
    UpdateNode := Update.FindAbacRulesNode;
    
If UpdateNode <> Null Then
        Debug.WriteLine(
"В обновлении есть «Правила ABAC»");
    
Else
        
// Добавим правила атрибутного доступа в обновление
        AbacRulesNode := Update.AbacRulesNode;
        AbacRulesNode.Label := 
"Правила ABAC";
        
// Получим структуру атрибутного доступа
        PolicyObject := MB.Security.Policy.ABACRules;
        
// Получим первую политику в первом наборе политик
        PolicySet := PolicyObject.Policies.Item(0);
        Policy := PolicySet.Policies.Item(
0);
        
// Сохраним в обновлении статусы полученной политики и вложенных правил
        AbacRulesNode.KeepActive := True;
        
// Добавим политику с вложенными правилами в обновление
        AbacRulesNode.Add(Policy, True);
    
End If;
    Update.SaveToFileNF(
"C:\Update.pefx");
End Sub Main;

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ABAC;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;

    MS: IMetabaseSecurity;
    PolicyObject: IABACRootPolicyObject;
    PolicySet: IABACPolicySet;
    Policy: IABACPolicy;
    Update: IMetabaseUpdate;
    UpdateNode, AbacRulesNode: IMetabaseUpdateAbacRulesNode;
Begin
    
// Получим доступ к репозиторию
    MB := Params.Metabase;
    MS := MB.Security;
    Update := MB.CreateUpdate();
    Update.LoadFromFileNF(
"C:\" + "Update.pefx", UpdateLoadMode.ulmReplace);
    
// Проверим наличие правил атрибутного доступа в обновлении
    UpdateNode := Update.FindAbacRulesNode();
    
If UpdateNode <> Null Then
        System.Diagnostics.Debug.WriteLine(
"В обновлении есть «Правила ABAC»");
    
Else
        
// Добавим правила атрибутного доступа в обновление
        AbacRulesNode := Update.AbacRulesNode;
        AbacRulesNode.Label := 
"Правила ABAC";
        
// Получим структуру атрибутного доступа
        PolicyObject := MB.Security.Policy.ABACRules;
        
// Получим первую политику в первом наборе политик
        PolicySet := PolicyObject.Policies.Item[0];
        Policy := PolicySet.Policies.Item[
0];
        
// Сохраним в обновлении статусы полученной политики и вложенных правил
        AbacRulesNode.KeepActive := True;
        
// Добавим политику с вложенными правилами в обновление
        AbacRulesNode.Add(Policy, True);
    
End If;
    Update.SaveToFileNF(
"C:\" + "Update.pefx");
End Sub;

В результате выполнения примера в файл обновления «Update.pefx» будет добавлена первая политика атрибутного доступа с вложенными правилами. Также в обновлении будут сохранены статусы политики и правил.

При повторном выполнении примера в консоль будет выведено сообщение:

В обновлении есть «Правила ABAC»

См. также:

IMetabaseUpdate