При росте ИТ-инфраструктуры в компании, когда количество информационных баз 1С (БП, ЗУП, УТ, самописные конфигурации) исчисляется десятками, а штат сотрудников превышает 100 человек, администрирование прав доступа превращается в трудоемкую задачу. Возникает потребность в создании единой «Мастер-базы», из которой можно было бы управлять пользователями централизованно. Разберем, какие существуют готовые решения и архитектурные подходы для реализации этой задачи.
Прежде чем переходить к выбору инструментов, сформулируем ключевые требования к системе управления доступом:
Проанализируем существующие на рынке инструменты. Сообщество 1С-разработчиков предлагает несколько готовых продуктов, которые можно взять за основу:
Пользователи из мастер-базы в дочерние.Рассмотрим более современный и технологичный подход — использование 1С как провайдера аутентификации. Начиная с версии платформы 8.3.18, механизмы OpenID Connect получили значительное развитие.
Суть метода заключается в том, что одна база назначается «Главной» (IDP — Identity Provider). Все остальные базы обращаются к ней при попытке входа пользователя. Это дает следующие преимущества:
Однако создание самого объекта пользователя в дочерних базах все равно потребуется, хотя пароль в них хранить уже не нужно.
Если в вашей организации используется домен, самым логичным решением будет привязка учетных записей 1С к пользователям Windows. Проанализируем, как это помогает в управлении:
При использовании доменной авторизации в конфигураторе 1С указывается соответствие пользователя 1С пользователю AD. Для автоматизации процесса создания можно использовать скрипты, которые при первом входе нового сотрудника в 1С (если его еще нет в базе) автоматически создают его учетную запись, опираясь на его членство в определенных группах безопасности в Active Directory.
Если готовые решения не подходят, мы можем разработать собственную подсистему управления. Разберем техническую реализацию создания пользователя в удаленной базе. Ранее часто использовалось COM-соединение, однако сейчас рекомендуется использовать HTTP-сервисы как более стабильный и быстрый механизм.
Пример логики работы функции создания пользователя через внешнее соединение (упрощенный код):
Функция СоздатьПользователяВБазе(ПараметрыПодключения, ДанныеПользователя)
// Устанавливаем соединение с удаленной базой
Соединение = Новый COMОбъект("V83.COMConnector");
База = Соединение.Connect(ПараметрыПодключения);
// Проверяем, существует ли уже такой пользователь
ПользовательОбъект = База.ПользователиИнформационнойБазы.НайтиПоИмени(ДанныеПользователя.Имя);
Если ПользовательОбъект = Неопределено Тогда
// Создаем нового пользователя платформы
НовыйПользователь = База.ПользователиИнформационнойБазы.СоздатьПользователя();
НовыйПользователь.Имя = ДанныеПользователя.Имя;
НовыйПользователь.ПолноеИмя = ДанныеПользователя.ПолноеИмя;
НовыйПользователь.Пароль = ДанныеПользователя.Пароль;
// Копирование прав «как у эталонного»
Если ЗначениеЗаполнено(ДанныеПользователя.ОбразецИмя) Тогда
Образец = База.ПользователиИнформационнойБазы.НайтиПоИмени(ДанныеПользователя.ОбразецИмя);
Если Образец <> Неопределено Тогда
Для Каждого Роль Из Образец.Роли Цикл
НовыйПользователь.Роли.Добавить(Роль);
КонецЦикла;
КонецЕсли;
КонецЕсли;
НовыйПользователь.Записать();
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
В современных конфигурациях на базе БСП простого копирования ролей в конфигураторе недостаточно. Права определяются профилями групп доступа. Выясним, как автоматизировать этот процесс:
В «Мастер-базе» необходимо хранить кэшированный список групп доступа для каждой дочерней базы. При выборе эталонного пользователя мастер-база должна отправить запрос в дочернюю базу, получить список идентификаторов групп доступа (объекты справочника ГруппыДоступа), в которые входит эталон, и добавить в эти же группы нового пользователя.
Для реализации отправки писем после создания пользователя можно использовать стандартный объект ИнтернетПочта. В мастер-базе после успешного завершения транзакции по созданию пользователя во всех выбранных узлах вызывается процедура отправки уведомления:
Процедура ОтправитьУведомление(АдресПочты, СписокБаз)
Почта = Новый ИнтернетПочта;
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Получатели.Добавить(АдресПочты);
Сообщение.Тема = "Доступ к системам 1С предоставлен";
Сообщение.Тексты.Добавить("Вам открыт доступ к следующим базам: " + Символы.ПС + СписокБаз);
// Настройки профиля должны быть определены заранее
Почта.Послать(Сообщение);
КонецПроцедуры
Проанализировав ситуацию, можно сделать вывод, что для небольшого количества баз (до 5) достаточно использовать стандартные средства 1С и ручное управление. Однако при наличии «зоопарка» конфигураций и высокой текучки кадров:
OpenID Connect совместно с автоматизацией создания пользователей через Active Directory.HTTP-сервисы. Это обеспечит максимальную гибкость в управлении ролями и группами доступа.IdM (Identity Management), которые позволяют управлять не только 1С, но и всеми корпоративными учетными записями в едином контуре.Использование централизованной системы управления пользователями не только экономит время администратора, но и значительно повышает информационную безопасность компании, исключая ситуации, когда уволенный сотрудник сохраняет доступ к важным финансовым данным в одной из забытых баз.