В практике администрирования серверов 1С часто возникают ситуации, когда необходимо ограничить доступ к информационной базе. Это может быть связано с проведением регламентных работ, обновлением конфигурации, выполнением сложных расчетов, которые требуют монопольного режима, или просто необходимостью предоставить доступ только ограниченному кругу лиц (например, только бухгалтерам в период сдачи отчетности). Разберем по шагам все доступные методы: от штатных средств консоли администрирования до продвинутых способов программного управления сеансами.
Это самый простой и штатный метод, который упоминается в обсуждении. Суть его заключается в установке блокировки соединений с информационной базой, но с оставлением «лазейки» для тех, кто знает специальный пароль. Проанализируем, как это настроить правильно.
Для начала откроем Консоль администрирования кластера серверов 1С. В дереве серверов найдем нужную нам информационную базу. Перейдем в ее свойства и найдем раздел, отвечающий за блокировку сеансов. Нам необходимо установить флаг «Блокировка начала сеансов включена». В поле «Сообщение» рекомендуется написать информативный текст, который увидят обычные пользователи при попытке входа (например: «База закрыта на техническое обслуживание до 10:00»).
Самое важное поле здесь — «Код разблокировки». Введем туда произвольную строку, например, SecretAccess2023. Теперь база заблокирована для всех. Однако, чтобы «избранные» пользователи могли зайти, нам нужно модифицировать их ярлыки запуска 1С. В строке запуска (в поле «Дополнительные параметры запуска») необходимо добавить параметр /UC, за которым следует наш код.
Рассмотрим пример строки запуска:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S "ServerName\BaseName" /UC SecretAccess2023
Важно понимать: Как отмечалось в обсуждении, этот метод имеет изъян. Если пользователь с правами администратора зайдет в базу, он может случайно или намеренно снять блокировку. Кроме того, параметр /UC виден в диспетчере задач, поэтому для высокорисковых сред этот метод считается недостаточно безопасным.
Если нам требуется более гибкая логика (например, пускать только пользователей из определенного списка или определенного подразделения), мы можем прибегнуть к программированию внутри самой конфигурации. Выясним, как это реализовать.
В конфигураторе перейдем в Модуль сеанса. Нас интересует обработчик события УстановкаПараметровСеанса. Этот код выполняется в самом начале запуска приложения, еще до того, как пользователю откроется рабочий интерфейс. Мы можем прописать проверку, входит ли текущий пользователь в разрешенный список. Список можно хранить в константе, в справочнике или просто жестко прописать в коде (хотя последний вариант менее предпочтителен).
Проанализируем пример кода:
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
// Определяем список разрешенных пользователей
РазрешенныеПользователи = Новый Массив;
РазрешенныеПользователи.Добавить("Администратор");
РазрешенныеПользователи.Добавить("ГлавныйБухгалтер");
ТекущийПользовательСистемы = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
// Проверяем, включен ли режим "Только для своих" (например, через константу)
Если Константы.РежимОграниченногоДоступа.Получить() Тогда
Если РазрешенныеПользователи.Найти(ТекущийПользовательСистемы) = Неопределено Тогда
ВызватьИсключение "Доступ к базе временно ограничен администратором. Пожалуйста, попробуйте позже.";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Данный метод надежнее, так как пользователь не сможет «подсмотреть» пароль в ярлыке. Система просто не даст создать сеанс, если условия не выполнены.
Для крупных инсталляций и профессионального подхода к безопасности рассмотрим механизм, появившийся в платформе 8.3.9 — Внешнее управление сеансами. Этот метод позволяет вынести логику проверки прав доступа на отдельный веб-сервис.
Разберем алгоритм работы этого механизма. В настройках информационной базы в консоли администрирования 1С (или через утилиту RAS) можно указать URL веб-сервиса внешнего управления. Когда кто-то пытается зайти в базу, сервер 1С сам отправляет запрос к этому веб-сервису, передавая данные о пользователе: его имя, компьютер, используемое приложение и даже параметры запуска.
Ваш веб-сервис (который можно написать на самой 1С или любом другом языке) анализирует данные и возвращает ответ: разрешить сеанс или запретить. Это открывает безграничные возможности:
Этот способ является самым мощным, так как он не требует изменения кода основной конфигурации и позволяет управлять доступом централизованно.
Посмотрим на ситуацию со стороны системного администрирования. Если ваша компания использует доменную структуру (Active Directory), мы можем связать пользователей 1С с учетными записями Windows. В настройках пользователя 1С выбираем «Аутентификация операционной системы».
После этого мы можем ограничивать доступ на уровне сетевых групп. Например, если пользователь не включен в доменную группу 1C_Finance_Users, системный администратор может запретить ему доступ к серверу приложений или запуск определенных исполняемых файлов через групповые политики (GPO). В этом случае 1С даже не начнет процесс авторизации, так как проверка прав произойдет на уровне операционной системы.
Существует еще один простой метод, упомянутый в дополнительных материалах. Это использование параметра /C (не путать с /UC). Этот параметр просто передает текстовую строку внутрь конфигурации.
Мы можем договориться, что в периоды ограничений вход разрешен только тем, у кого в ярлыке прописано, например, /C "AllowMe". В коде модуля управляемого приложения (или модуля сеанса) мы проверяем значение функции ПараметрыЗапуска.
Пример реализации:
Если ПараметрыЗапуска = "AllowMe" Тогда
// Пропускаем пользователя
Иначе
// Если установлена блокировка - выкидываем
Если ПолучитьБлокировкуСеансов() Тогда
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецЕсли;
Этот метод удобен тем, что он «программный», но не требует создания сложных веб-сервисов. Однако, как и в случае с /UC, строку "AllowMe" можно увидеть в свойствах процесса, поэтому она не является серьезной защитой от квалифицированного взломщика.
Мы проанализировали различные подходы к ограничению входа в базу 1С. Подведем итоги:
Выбор конкретного метода зависит от ваших технических навыков и того, насколько критична безопасность данных в вашей информационной системе.