IMetabaseSecurity.MetabaseClassesSecurityDescriptors

Синтаксис

MetabaseClassesSecurityDescriptors: IMetabaseClassesSecurityDescriptors;

MetabaseClassesSecurityDescriptors: Prognoz.Platform.Interop.Metabase.IMetabaseClassesSecurityDescriptors;

Описание

Свойство MetabaseClassesSecurityDescriptors возвращает параметры безопасности типа объектов.

Комментарии

Свойство актуально при настройке дискреционного контроля в параметрах управления доступом для типа объектов. Эффективные права на объект вычисляются с учётом дискреционных прав, заданных для типа объектов.

Пример

Для выполнения примера убедитесь, что в менеджере безопасности содержится пользователь USER и администратору разрешены все операции с типом объектов «Таблица» при настройке параметров управления доступом на вкладке «Дискреционный контроль».

Добавьте ссылки на системные сборки Metabase, ForeSystem (для примера на Fore.NET).

Sub UserProc;
Var
    MB: IMetabase;
    SecDescrs: IMetabaseClassesSecurityDescriptors;
    ClassSecDescr: IMetabaseClassSecurityDescriptor;
    MS: IMetabaseSecurity;
    SecDescr: ISecurityDescriptor;
    Lic: Object;
    Type: AceType;
    Sid: ISid;
Begin
    MB := MetabaseClass.Active;
    
// Получим лицензию для возможности работы с менеджером безопасности
    Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
    MS := MB.Security;
    
// Получим параметры безопасности типа объектов «Таблица»
    SecDescrs := MS.MetabaseClassesSecurityDescriptors;
    ClassSecDescr := SecDescrs.Add(MetabaseObjectClass.KE_CLASS_TABLE);
    SecDescr := ClassSecDescr.Descriptor;
    SecDescr.Edit;
    
// Запретим любые операции с таблицами пользователю USER
    Type := AceType.AccessDenied;
    Sid := MB.Security.ResolveName(
"USER").Sid;
    SecDescr.Acl.AddAce(Type, Sid, MetabaseObjectPredefinedRights.All);
    SecDescr.Apply(
False);
    
// Сохраним изменения
    MS.Apply;
    
// Освободим лицензию
    Lic := Null;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ForeSystem;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    SecDescrs: IMetabaseClassesSecurityDescriptors;
    ClassSecDescr: IMetabaseClassSecurityDescriptor;
    MS: IMetabaseSecurity;
    SecDescr: ISecurityDescriptor;
    Lic: Object;
    Type: AceType;
    Sid: MetabaseSid;
Begin
    MB := Params.Metabase;
    
// Получим лицензию для возможности работы с менеджером безопасности
    Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
    MS := MB.Security;
    
// Получим параметры безопасности типа объектов «Таблица»
    SecDescrs := MS.MetabaseClassesSecurityDescriptors;
    ClassSecDescr := SecDescrs.Add(MetabaseObjectClass.KE_CLASS_TABLE);
    SecDescr := ClassSecDescr.Descriptor;
    SecDescr.Edit();
    
// Запретим любые операции с таблицами пользователю USER
    Type := AceType.aceAccessDenied;
    Sid := MB.Security.ResolveName(
"USER").Sid;
    SecDescr.Acl.AddAce(Type, Sid, 
1);
    SecDescr.Apply(
False);
    
// Сохраним изменения
    MS.Apply();
    
// Освободим лицензию
    Lic := Null;
End Sub;

После выполнения примера пользователю USER будут запрещены любые операции с таблицами.

См. также:

IMetabaseSecurity