IMetabaseSecuritySubjectUpdateSetup.RenameInDBMS

Синтаксис

RenameInDBMS: Boolean;

Описание

Свойство RenameInDBMS определяет признак переименования доменного пользователя на уровне СУБД в процессе синхронизации атрибутов пользователя с атрибутами LDAP-каталога.

Комментарии

Допустимые значения:

Переименование доменного пользователя доступно только в СУБД PostgreSQL при выполнении условий:

Синхронизация атрибутов доменного пользователя с атрибутами LDAP-каталога доступна пользователям, обладающим привилегиями «Изменение прав пользователей, раздача ролей, изменение политики», «Применение прав пользователей на уровне СУБД». Для определения учётных данных, которые будут использоваться при работе с менеджером безопасности, используйте свойство ILogonSession.Credentials.

Синхронизация выполняется при обновлении пользователей с помощью методов IMetabaseSecurity.CreateUsersUpdate, IMetabaseSecurity.UpdateUsers, если задано значение перечисления MetabaseSecuritySubjectUpdateType.LDAPSync в свойстве IMetabaseUsersUpdate.ItemSetup. Для добавления доменного пользователя в обновление используйте метод IMetabaseUsersUpdate.Add.

Пример

Для выполнения примера в менеджере безопасности предполагается наличие доменного пользователя с наименованием «DOMAIN\USER».

Добавьте ссылку на системную сборку Metabase.

Sub UserProc;
Var
    MB: IMetabase;
    MS: IMetabaseSecurity;
    Policy: IMetabasePolicy;
    Session: ILogonSession;
    User: IMetabaseUser;
    UsUpdate: IMetabaseUsersUpdate;
    UsUpdateSec: IMetabaseSecuritySubjectUpdateSetup;
    Lic: Object;
    UserName: String;
Begin
    MB := MetabaseClass.Active;
    // Получим информацию о текущей сессии с репозиторием
    Session := MB.LogonSession;
    // Укажем учётные данные текущего пользователя, если он обладает правами администратора на уровне СУБД
    Session.Credentials("$SYSTEM"True) := Session.LogonCredentials;
    // Получим лицензию для возможности работы с менеджером безопасности
    Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
    MS := MB.Security;
    // Создадим объект обновления пользователей
    UsUpdate := MS.CreateUsersUpdate;
    // Получим доменного пользователя, для которого необходимо выполнить синхронизацию с LDAP
    UserName := "DOMAIN\USER";
    User := MS.ResolveName(UserName) As IMetabaseUser;
    If User <> Null Then
        If User.IsNT And User.External = False Then
            // Выведем атрибуты доменного пользователя до синхронизации
            Debug.WriteLine("Атрибуты доменного пользователя до синхронизации с LDAP:");
            Debug.WriteLine("Name " + User.Name + ":");
            Debug.WriteLine("SID: " + User.Sid.AsString);
            Debug.WriteLine("UPN: " + User.UserPrincipalName);
            Debug.WriteLine("Description: " + User.Description);
            Debug.WriteLine("");
            // Добавим доменного пользователя в обновление
            UsUpdate.Add(User);
            // Установим способ обновления - синхронизация атрибутов с LDAP
            UsUpdateSec := UsUpdate.ItemSetup(0);
            UsUpdateSec.UpdateType := MetabaseSecuritySubjectUpdateType.LDAPSync;
            // Переименуем доменного пользователя на уровне СУБД, если не используется встроенная авторизация
            Policy := MS.Policy;
            If Policy.CheckUserPassword = False Then
                UsUpdateSec.RenameInDBMS := True;
            End If;
            // Обновим информацию о доменном пользователе и выполним синхронизацию атрибутов
            MS.UpdateUsers(UsUpdate);
            // Выведем атрибуты доменного пользователя после синхронизации
            Debug.WriteLine("Атрибуты доменного пользователя после синхронизации с LDAP:");
            Debug.WriteLine("Name: " + User.Name);
            Debug.WriteLine("SID: " + User.Sid.AsString);
            Debug.WriteLine("UPN: " + User.UserPrincipalName);
            Debug.WriteLine("Description: " + User.Description);
            Debug.WriteLine("");
            // Сохраним изменения
            MS.Apply;
        End If;
    Else
        Debug.WriteLine("Пользователь " + UserName + " не найден в менеджере безопасности");
    End If;
    // Освободим лицензию
    Lic := Null;
End Sub UserProc;

В результате выполнения примера будет выполнена синхронизация атрибутов доменного пользователя с атрибутами LDAP-каталога и переименование пользователя на уровне СУБД. В консоль будет выведена информация о значениях атрибутов пользователя до синхронизации и после:

Атрибуты доменного пользователя до синхронизации с LDAP:

Name: DOMAIN\USER

SID: S-1-5-21-2798585636-1410933581-2846741107-2611

UPN: DOMAIN\USER

Description: Пользователь 1

Атрибуты доменного пользователя после синхронизации с LDAP:

Name: DOMAIN\CHANGED_USER_NAME

SID: S-1-5-21-2798585636-1410933581-2846741107-2611

UPN: DOMAIN\CHANGED_USER_NAME

Description: Пользователь 1

Если пользователь «DOMAIN\USER» не найден в менеджере безопасности, то в консоль будет выведено соответствующее сообщение.

См. также:

IMetabaseSecuritySubjectUpdateSetup