IAccessElement.AccessToken

Синтаксис Fore

AccessToken: IAccessToken;

Синтаксис Fore.NET

AccessToken: Prognoz.Platform.Interop.Metabase.IAccessToken;

Описание

Свойство AccessToken возвращает параметры мандатного контроля доступа для элемента.

Комментарии

Для изменения параметров мандатного контроля доступа элемента используйте метод IAccessElement.ApplyAccessToken.

Пример Fore

Для выполнения примера необходимо наличие репозитория НСИ с идентификатором «MDM», содержащего табличный справочник НСИ с идентификатором «DICT». Для пользователя, выполняющего пример, должна быть выдана привилегия «Изменение метки безопасности и списка контроля доступа любого объекта». В менеджере безопасности должна быть задана одна или более категорий секретности с несколькими уровнями безопасности.

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

Sub MandatoryAccess;
Var
    MB: IMetabase;
    Object: IMetabaseObjectDescriptor;
    RdsDict: IRdsDictionary;
    AOS: IAccessObjectSecurity;
    Iterator: IAccessElementsIterator;
    Level: integer;
    Element: IAccessElement;
    Token: IAccessToken;
    SecCat: ISecurityCategory;
    SecLevel: ISecurityLevel;
Begin
    MB := MetabaseClass.Active;
    // Получаем табличный справочник НСИ
    Object := MB.ItemByIdNamespace("DICT", MB.ItemById("MDM").Key);
    RdsDict := Object.Bind As IRdsDictionary;
    // Проверяем, используется ли мандатный контроль доступа
    If RdsDict.HasMandatoryAccess Then
        // Выводим наименование атрибута, используемого для мандатного контроля доступа
        Debug.WriteLine(RdsDict.Attributes.MandatoryAccess.Id);
        // Изменяем права доступа для первого элемента справочника
        AOS := Object.GetSecurity;
        Iterator := AOS.GetElements;
        Level := Iterator.Next;
        Element := Iterator.Current;
        Element := Element.Edit;
        Token := Element.AccessToken;
        SecCat := MB.Security.Policy.MandatoryAccess.Category(0);
        SecLevel := SecCat.Level(0);
        Token.ClassificationLabel(SecCat) := SecLevel;
        Element.ApplyAccessToken(AccessElementApplyOptions.None);
    End If;
End Sub MandatoryAccess;

Результат выполнения примера: если для элементов табличного справочника НСИ используется мандатный контроль доступа, то для первого элемента справочника будет установлен первый уровень безопасности в первой категории секретности.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Rds;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Object: IMetabaseObjectDescriptor;
    RdsDict: IRdsDictionary;
    AOS: IAccessObjectSecurity;
    Iterator: IAccessElementsIterator;
    Level: integer;
    Element: IAccessElement;
    Token: IAccessToken;
    SecCat: ISecurityCategory;
    SecLevel: ISecurityLevel;
Begin
    MB := Params.Metabase;
    // Получаем табличный справочник НСИ
    Object := MB.ItemByIdNamespace["DICT", MB.ItemById["MDM"].Key];
    RdsDict := Object.Bind() As IRdsDictionary;
    // Проверяем, используется ли мандатный контроль доступа
    If RdsDict.HasMandatoryAccess Then
        // Выводим наименование атрибута, используемого для мандатного контроля доступа
        System.Diagnostics.Debug.WriteLine(RdsDict.Attributes.MandatoryAccess.Id);
        // Изменяем права доступа для первого элемента справочника
        AOS := Object.GetSecurity();
        Iterator := AOS.GetElements();
        Level := Iterator.Next();
        Element := Iterator.Current;
        Element := Element.Edit();
        Token := Element.AccessToken;
        SecCat := MB.Security.Policy.MandatoryAccess.Category[0];
        SecLevel := SecCat.Level[0];
        Token.ClassificationLabel[SecCat] := SecLevel;
        Element.ApplyAccessToken(AccessElementApplyOptions.acelapopNone);
    End If;
End Sub;

См. также:

IAccessElement