Как организовать централизованное управление пользователями в нескольких базах 1С?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При росте ИТ-инфраструктуры в компании, когда количество информационных баз 1С (БП, ЗУП, УТ, самописные конфигурации) исчисляется десятками, а штат сотрудников превышает 100 человек, администрирование прав доступа превращается в трудоемкую задачу. Возникает потребность в создании единой «Мастер-базы», из которой можно было бы управлять пользователями централизованно. Разберем, какие существуют готовые решения и архитектурные подходы для реализации этой задачи.

Задачи централизованного управления

Прежде чем переходить к выбору инструментов, сформулируем ключевые требования к системе управления доступом:

  1. Единый реестр: возможность видеть всех пользователей во всех базах в одном окне.
  2. Быстрая блокировка: закрытие доступа уволенному сотруднику во всех системах одной кнопкой.
  3. Массовое создание: регистрация нового пользователя сразу в нескольких выбранных базах.
  4. Наследование прав: механизм создания «по образцу», когда новый сотрудник получает те же роли и группы доступа, что и его предшественник или коллега.
  5. Аудит и отчетность: получение актуальной информации о том, кто и в какие базы имеет доступ.

Вариант 1: Готовые конфигурации и решения с профильных ресурсов

Проанализируем существующие на рынке инструменты. Сообщество 1С-разработчиков предлагает несколько готовых продуктов, которые можно взять за основу:

Вариант 2: Использование технологии OpenID Connect

Рассмотрим более современный и технологичный подход — использование 1С как провайдера аутентификации. Начиная с версии платформы 8.3.18, механизмы OpenID Connect получили значительное развитие.

Суть метода заключается в том, что одна база назначается «Главной» (IDP — Identity Provider). Все остальные базы обращаются к ней при попытке входа пользователя. Это дает следующие преимущества:

  1. Единый пароль: пользователю не нужно помнить разные пароли для каждой базы.
  2. Мгновенная блокировка: если вы деактивируете учетную запись в мастер-базе, пользователь не сможет войти ни в одну дочернюю базу, так как проверка подлинности не будет пройдена.
  3. Безопасность: пароли хранятся в одном защищенном месте.

Однако создание самого объекта пользователя в дочерних базах все равно потребуется, хотя пароль в них хранить уже не нужно.

Вариант 3: Интеграция с Active Directory (AD)

Если в вашей организации используется домен, самым логичным решением будет привязка учетных записей 1С к пользователям Windows. Проанализируем, как это помогает в управлении:

При использовании доменной авторизации в конфигураторе 1С указывается соответствие пользователя 1С пользователю AD. Для автоматизации процесса создания можно использовать скрипты, которые при первом входе нового сотрудника в 1С (если его еще нет в базе) автоматически создают его учетную запись, опираясь на его членство в определенных группах безопасности в Active Directory.

Вариант 4: Программная реализация через HTTP-сервисы или COM

Если готовые решения не подходят, мы можем разработать собственную подсистему управления. Разберем техническую реализацию создания пользователя в удаленной базе. Ранее часто использовалось COM-соединение, однако сейчас рекомендуется использовать HTTP-сервисы как более стабильный и быстрый механизм.

Пример логики работы функции создания пользователя через внешнее соединение (упрощенный код):


Функция СоздатьПользователяВБазе(ПараметрыПодключения, ДанныеПользователя)
    
    // Устанавливаем соединение с удаленной базой
    Соединение = Новый COMОбъект("V83.COMConnector");
    База = Соединение.Connect(ПараметрыПодключения);
    
    // Проверяем, существует ли уже такой пользователь
    ПользовательОбъект = База.ПользователиИнформационнойБазы.НайтиПоИмени(ДанныеПользователя.Имя);
    
    Если ПользовательОбъект = Неопределено Тогда
        // Создаем нового пользователя платформы
        НовыйПользователь = База.ПользователиИнформационнойБазы.СоздатьПользователя();
        НовыйПользователь.Имя = ДанныеПользователя.Имя;
        НовыйПользователь.ПолноеИмя = ДанныеПользователя.ПолноеИмя;
        НовыйПользователь.Пароль = ДанныеПользователя.Пароль;
        
        // Копирование прав «как у эталонного»
        Если ЗначениеЗаполнено(ДанныеПользователя.ОбразецИмя) Тогда
            Образец = База.ПользователиИнформационнойБазы.НайтиПоИмени(ДанныеПользователя.ОбразецИмя);
            Если Образец <> Неопределено Тогда
                Для Каждого Роль Из Образец.Роли Цикл
                    НовыйПользователь.Роли.Добавить(Роль);
                КонецЦикла;
            КонецЕсли;
        КонецЕсли;
        
        НовыйПользователь.Записать();
        Возврат Истина;
    КонецЕсли;
    
    Возврат Ложь;
КонецФункции

Реализация механизма «Как у эталонного пользователя»

В современных конфигурациях на базе БСП простого копирования ролей в конфигураторе недостаточно. Права определяются профилями групп доступа. Выясним, как автоматизировать этот процесс:

В «Мастер-базе» необходимо хранить кэшированный список групп доступа для каждой дочерней базы. При выборе эталонного пользователя мастер-база должна отправить запрос в дочернюю базу, получить список идентификаторов групп доступа (объекты справочника ГруппыДоступа), в которые входит эталон, и добавить в эти же группы нового пользователя.

Автоматизация уведомлений

Для реализации отправки писем после создания пользователя можно использовать стандартный объект ИнтернетПочта. В мастер-базе после успешного завершения транзакции по созданию пользователя во всех выбранных узлах вызывается процедура отправки уведомления:


Процедура ОтправитьУведомление(АдресПочты, СписокБаз)
    Почта = Новый ИнтернетПочта;
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Получатели.Добавить(АдресПочты);
    Сообщение.Тема = "Доступ к системам 1С предоставлен";
    Сообщение.Тексты.Добавить("Вам открыт доступ к следующим базам: " + Символы.ПС + СписокБаз);
    
    // Настройки профиля должны быть определены заранее
    Почта.Послать(Сообщение);
КонецПроцедуры

Выводы и рекомендации

Проанализировав ситуацию, можно сделать вывод, что для небольшого количества баз (до 5) достаточно использовать стандартные средства 1С и ручное управление. Однако при наличии «зоопарка» конфигураций и высокой текучки кадров:

  1. Для системных администраторов: оптимальным будет внедрение OpenID Connect совместно с автоматизацией создания пользователей через Active Directory.
  2. Для программистов 1С: рекомендуется разработка или адаптация готовой конфигурации (Мастер-базы), которая будет взаимодействовать с дочерними базами через HTTP-сервисы. Это обеспечит максимальную гибкость в управлении ролями и группами доступа.
  3. Корпоративный сектор: стоит рассмотреть внедрение систем класса IdM (Identity Management), которые позволяют управлять не только 1С, но и всеми корпоративными учетными записями в едином контуре.

Использование централизованной системы управления пользователями не только экономит время администратора, но и значительно повышает информационную безопасность компании, исключая ситуации, когда уволенный сотрудник сохраняет доступ к важным финансовым данным в одной из забытых баз.

← На главную