IMetabaseUser.ManageDBGrants

Синтаксис Fore

ManageDBGrants: Boolean;

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

ManageDBGrants: System.Boolean;

Описание

Свойство ManageDBGrants определяет, будут ли текущему пользователю раздаваться права на уровне СУБД.

Комментарии

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

Если свойству установить значение True, то после создания пользователя в репозитории и изменении его привилегий либо раздаче прав на объекты репозитория, соответствующие гранты пользователю будут даны на сервере БД.

Если свойству установить значение False, то после создания пользователя в репозитории и изменении его привилегий, либо раздаче прав на объекты репозитория, соответствующие гранты пользователю на сервере БД раздаваться не будут. Данный вариант актуален, если создаваемый пользователь является подключаемым с сервера и уже имеет какие-либо гранты на объекты платформы.

Пример Fore

Для выполнения примера предполагается наличие домена «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». Если пользователь найден, то он будет добавлен в список пользователей репозитория. При добавлении для пользователя будет установлен признак подключаемого с сервера. При раздаче привилегий и прав на объекты репозитория соответствующие гранты пользователю в базе репозитория раздаваться не будут.

Пример Fore.NET

Для выполнения примера предполагается наличие домена «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». Если пользователь найден, то он будет добавлен в список пользователей репозитория. При добавлении для пользователя будет установлен признак подключаемого с сервера. При раздаче привилегий и прав на объекты репозитория соответствующие гранты пользователю в базе репозитория раздаваться не будут.

См. также:

IMetabaseUser