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 будут запрещены любые операции с таблицами.
См. также: