Как в 1С:Предприятии разрешить вход в базу данных только определенным пользователям?

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

В практике администрирования серверов 1С часто возникают ситуации, когда необходимо ограничить доступ к информационной базе. Это может быть связано с проведением регламентных работ, обновлением конфигурации, выполнением сложных расчетов, которые требуют монопольного режима, или просто необходимостью предоставить доступ только ограниченному кругу лиц (например, только бухгалтерам в период сдачи отчетности). Разберем по шагам все доступные методы: от штатных средств консоли администрирования до продвинутых способов программного управления сеансами.

Способ 1. Использование кода разблокировки в консоли администрирования

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

Для начала откроем Консоль администрирования кластера серверов 1С. В дереве серверов найдем нужную нам информационную базу. Перейдем в ее свойства и найдем раздел, отвечающий за блокировку сеансов. Нам необходимо установить флаг «Блокировка начала сеансов включена». В поле «Сообщение» рекомендуется написать информативный текст, который увидят обычные пользователи при попытке входа (например: «База закрыта на техническое обслуживание до 10:00»).

Самое важное поле здесь — «Код разблокировки». Введем туда произвольную строку, например, SecretAccess2023. Теперь база заблокирована для всех. Однако, чтобы «избранные» пользователи могли зайти, нам нужно модифицировать их ярлыки запуска 1С. В строке запуска (в поле «Дополнительные параметры запуска») необходимо добавить параметр /UC, за которым следует наш код.

Рассмотрим пример строки запуска:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S "ServerName\BaseName" /UC SecretAccess2023

Важно понимать: Как отмечалось в обсуждении, этот метод имеет изъян. Если пользователь с правами администратора зайдет в базу, он может случайно или намеренно снять блокировку. Кроме того, параметр /UC виден в диспетчере задач, поэтому для высокорисковых сред этот метод считается недостаточно безопасным.

Способ 2. Программное ограничение через «Модуль сеанса»

Если нам требуется более гибкая логика (например, пускать только пользователей из определенного списка или определенного подразделения), мы можем прибегнуть к программированию внутри самой конфигурации. Выясним, как это реализовать.

В конфигураторе перейдем в Модуль сеанса. Нас интересует обработчик события УстановкаПараметровСеанса. Этот код выполняется в самом начале запуска приложения, еще до того, как пользователю откроется рабочий интерфейс. Мы можем прописать проверку, входит ли текущий пользователь в разрешенный список. Список можно хранить в константе, в справочнике или просто жестко прописать в коде (хотя последний вариант менее предпочтителен).

Проанализируем пример кода:


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

Данный метод надежнее, так как пользователь не сможет «подсмотреть» пароль в ярлыке. Система просто не даст создать сеанс, если условия не выполнены.

Способ 3. Внешнее управление сеансами (External Session Management)

Для крупных инсталляций и профессионального подхода к безопасности рассмотрим механизм, появившийся в платформе 8.3.9 — Внешнее управление сеансами. Этот метод позволяет вынести логику проверки прав доступа на отдельный веб-сервис.

Разберем алгоритм работы этого механизма. В настройках информационной базы в консоли администрирования 1С (или через утилиту RAS) можно указать URL веб-сервиса внешнего управления. Когда кто-то пытается зайти в базу, сервер 1С сам отправляет запрос к этому веб-сервису, передавая данные о пользователе: его имя, компьютер, используемое приложение и даже параметры запуска.

Ваш веб-сервис (который можно написать на самой 1С или любом другом языке) анализирует данные и возвращает ответ: разрешить сеанс или запретить. Это открывает безграничные возможности:

  1. Ограничение по времени (например, запрет входа после 19:00).
  2. Ограничение по IP-адресам или именам компьютеров.
  3. Интеграция с внешними системами контроля (например, разрешать вход в 1С только если сотрудник отметил приход на работу через СКУД).

Этот способ является самым мощным, так как он не требует изменения кода основной конфигурации и позволяет управлять доступом централизованно.

Способ 4. Аутентификация через ОС и групповые политики

Посмотрим на ситуацию со стороны системного администрирования. Если ваша компания использует доменную структуру (Active Directory), мы можем связать пользователей 1С с учетными записями Windows. В настройках пользователя 1С выбираем «Аутентификация операционной системы».

После этого мы можем ограничивать доступ на уровне сетевых групп. Например, если пользователь не включен в доменную группу 1C_Finance_Users, системный администратор может запретить ему доступ к серверу приложений или запуск определенных исполняемых файлов через групповые политики (GPO). В этом случае 1С даже не начнет процесс авторизации, так как проверка прав произойдет на уровне операционной системы.

Способ 5. Использование параметра запуска /C

Существует еще один простой метод, упомянутый в дополнительных материалах. Это использование параметра /C (не путать с /UC). Этот параметр просто передает текстовую строку внутрь конфигурации.

Мы можем договориться, что в периоды ограничений вход разрешен только тем, у кого в ярлыке прописано, например, /C "AllowMe". В коде модуля управляемого приложения (или модуля сеанса) мы проверяем значение функции ПараметрыЗапуска.

Пример реализации:


Если ПараметрыЗапуска = "AllowMe" Тогда
    // Пропускаем пользователя
Иначе
    // Если установлена блокировка - выкидываем
    Если ПолучитьБлокировкуСеансов() Тогда
         ЗавершитьРаботуСистемы(Ложь);
    КонецЕсли;
КонецЕсли;

Этот метод удобен тем, что он «программный», но не требует создания сложных веб-сервисов. Однако, как и в случае с /UC, строку "AllowMe" можно увидеть в свойствах процесса, поэтому она не является серьезной защитой от квалифицированного взломщика.

Резюме и рекомендации

Мы проанализировали различные подходы к ограничению входа в базу 1С. Подведем итоги:

Выбор конкретного метода зависит от ваших технических навыков и того, насколько критична безопасность данных в вашей информационной системе.

← На главную