ManageDBGrants: Boolean;
ManageDBGrants: System.Boolean;
Свойство ManageDBGrants определяет, будут ли текущему пользователю раздаваться права на уровне СУБД.
Данное свойство доступно для изменения только при создании нового пользователя в репозитории.
Если свойству установить значение True, то после создания пользователя в репозитории и изменении его привилегий либо раздаче прав на объекты репозитория, соответствующие гранты пользователю будут даны на сервере БД.
Если свойству установить значение False, то после создания пользователя в репозитории и изменении его привилегий, либо раздаче прав на объекты репозитория, соответствующие гранты пользователю на сервере БД раздаваться не будут. Данный вариант актуален, если создаваемый пользователь является подключаемым с сервера и уже имеет какие-либо гранты на объекты платформы.
Для выполнения примера предполагается наличие домена «GROUP1». В данном домене создан пользователь «TESTER». Соответствующий пользователь также созданы на сервере БД и имеют определенные гранты на объекты текущего репозитория.
Sub UserProc;
Var
MB: IMetabase;
MBSec: IMetabaseSecurity;
SubSearch: ISecuritySubjectsSearch;
Subjects: ISecuritySubjects;
Subject: ISecuritySubject;
Begin
MB := MetabaseClass.Active;
MBSec := MB.Security;
//Установка параметров добавления доменных пользователей
MB.CurrentDomainSubjectAddState(SecuritySubjectType.User) :=
DomainSubjectAddState.MakeExternalOff
Or DomainSubjectAddState.ManageDBGrantsOn
Or DomainSubjectAddState.Keep;
//Объект для поиска пользователей
SubSearch := MBSec.NewSubjectsSearch;
SubSearch.NameCriteria := "GROUP1\TESTER";
//Поиск только доменных пользователей
SubSearch.AreaIncludeDB := False;
SubSearch.AreaIncludeNT := True;
SubSearch.SubjectCriteria(SecuritySubjectType.User) := True;
SubSearch.ExecuteSearch;
//Найденные пользователи
Subjects := SubSearch.Subjects;
Debug.WriteLine(Subjects.Count);
If Subjects.Count > 0 Then
Subject := Subjects.Item(0);
Subject := MBSec.AddNTSubject(Subject);
//Изменение параметров добавленного доменного пользователя
//Данные параметры не соответствуют тем параметрам, которые
//были установлены выше в свойстве CurrentDomainSubjectAddState
(Subject As IMetabaseUser).External := True;
(Subject As IMetabaseUser).ManageDBGrants := False;
//Применение политики безопасности
MBSec.Apply;
End If;
End Sub UserProc;
При выполнении примера будет осуществлен поиск доменного пользователя «GROUP1\TESTER». Если пользователь найден, то он будет добавлен в список пользователей репозитория. При добавлении для пользователя будет установлен признак подключаемого с сервера. При раздаче привилегий и прав на объекты репозитория соответствующие гранты пользователю в базе репозитория раздаваться не будут.
Для выполнения примера предполагается наличие домена «GROUP1». В данном домене создан пользователь «TESTER». Соответствующий пользователь также созданы на сервере БД и имеют определенные гранты на объекты текущего репозитория. Указанная процедура является точкой входа для .NET-сборки.
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main1(Params: StartParams);
Var
MB: IMetabase;
MBSec: IMetabaseSecurity;
SubSearch: ISecuritySubjectsSearch;
Subjects: ISecuritySubjects;
Subject: ISecuritySubject;
Begin
MB := Params.Metabase;
MBSec := MB.Security;
//Установка параметров добавления доменных пользователей
MB.CurrentDomainSubjectAddState[SecuritySubjectType.sstUser] :=
DomainSubjectAddState.dsasMakeExternalOff
Or DomainSubjectAddState.dsasManageDBGrantsOn
Or DomainSubjectAddState.dsasKeep;
//Объект для поиска пользователей
SubSearch := MBSec.NewSubjectsSearch();
SubSearch.NameCriteria := "GROUP1\TESTER";
//Поиск только доменных пользователей
SubSearch.AreaIncludeDB := False;
SubSearch.AreaIncludeNT := True;
SubSearch.SubjectCriteria[SecuritySubjectType.sstUser] := True;
SubSearch.ExecuteSearch();
//Найденные пользователи
Subjects := SubSearch.Subjects;
If Subjects.Count > 0 Then
Subject := Subjects.Item[0];
Subject := MBSec.AddNTSubject(Subject);
//Изменение параметров добавленного доменного пользователя
//Данные параметры не соответствуют тем параметрам, которые
//были установлены выше в свойстве CurrentDomainSubjectAddState
(Subject As IMetabaseUser).External := True;
(Subject As IMetabaseUser).ManageDBGrants := False;
//Применение политики безопасности
MBSec.Apply();
End If;
End Sub;
При выполнении примера будет осуществлен поиск доменного пользователя «GROUP1\TESTER». Если пользователь найден, то он будет добавлен в список пользователей репозитория. При добавлении для пользователя будет установлен признак подключаемого с сервера. При раздаче привилегий и прав на объекты репозитория соответствующие гранты пользователю в базе репозитория раздаваться не будут.
См. также: