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

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

При работе с системой 1С:Предприятие часто возникает необходимость использовать различные типы лицензий одновременно: часть пользователей работает с аппаратными ключами (USB-ключи HASP), а другая часть — с программными лицензиями, например, через веб-клиент или на терминальном сервере. Такая смешанная среда может стать источником сложностей, если не настроить её должным образом. Мы вместе разберем, как избежать конфликтов и обеспечить корректное получение лицензий каждым типом пользователей, предотвратив нежелательное потребление программных лицензий там, где должны использоваться аппаратные, и наоборот.

Прежде всего, давайте выясним причину возникновения таких проблем. Система 1С:Предприятие имеет определенный алгоритм поиска лицензий. По умолчанию, при наличии программных и аппаратных лицензий, клиентское приложение сначала пытается использовать программные лицензии, затем переходит к поиску локального аппаратного ключа HASP, далее ищет многопользовательский аппаратный ключ по сети через HASP License Manager. И только после этого, в клиент-серверном варианте, делается запрос к серверу 1С на получение лицензии (сначала программной, затем аппаратной).

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

Решение 1: Разделение лицензий через настройки сервера 1С и информационных баз

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

  1. Убедимся, что на сервере 1С:Предприятия нет клиентского аппаратного ключа. Если на машине, где установлен агент сервера 1С, присутствует физический клиентский HASP-ключ, это может привести к непредсказуемому поведению при выдаче лицензий. Сервер должен работать с серверной лицензией 1С:Предприятия, а клиентские лицензии должны либо выдаваться им программно, либо находиться на клиентских машинах (аппаратные ключи) или в HASP License Manager.

  2. Для информационных баз, которые должны использовать только аппаратные лицензии (или клиентские программные, установленные на рабочих местах), отключим выдачу лицензий сервером 1С. Откроем свойства нужной информационной базы в консоли сервера 1С:Предприятия. На вкладке "Лицензирование" (или аналогичной, в зависимости от версии платформы) найдем и снимем флажок "Разрешить выдачу лицензий сервером 1С:Предприятие". Это гарантирует, что пользователи, подключающиеся к этой базе, будут искать лицензии на своих рабочих местах или в сети (аппаратные ключи), а не получать их от сервера 1С.

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

Решение 2: Управление поиском лицензий на клиентских машинах

Помимо настроек на сервере, нам необходимо управлять поведением клиентских приложений 1С при поиске лицензий. Это особенно актуально для тонких и толстых клиентов.

Использование параметра запуска /UseHwLicenses

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

Обратите внимание: Этот параметр влияет только на клиентские приложения и не действует на использование лицензий сервером 1С:Предприятия.

Настройка файла nethasp.ini

Файл nethasp.ini используется для настройки параметров поиска клиентских лицензий 1С, выдаваемых HASP License Manager с многопользовательских аппаратных ключей. Он должен располагаться на клиентской машине в каталоге bin платформы 1С.

Если на сервере 1С или на веб-сервере установлены клиентские HASP-ключи (что не рекомендуется, как мы уже рассмотрели), или если клиенты могут "видеть" HASP License Manager в сети, мы можем управлять этим поиском:

  1. Запретим поиск ключей по сети на сервере (или веб-сервере). Если на сервере 1С или веб-сервере есть риск, что опубликованные базы будут пытаться получить аппаратные лицензии, мы можем создать (или отредактировать) файл nethasp.ini в каталоге bin платформы 1С на этом сервере. В нем мы укажем:

    
    [NH_COMMON]
    NH_USE_BROADCAST = Disabled
    

    Это отключит широковещательный поиск HASP-ключей по сети, что может предотвратить нежелательное использование аппаратных лицензий сервером.

  2. Укажем конкретные адреса HASP License Manager'ов. Если у нас есть выделенный сервер с HASP License Manager, мы можем явно указать его IP-адрес в nethasp.ini на клиентских машинах (которые должны использовать аппаратные ключи) для более точного поиска:

    
    [NH_SERVER_ADDR]
    NH_SERVER_ADDR = 192.168.1.100 ; IP-адрес вашего сервера HASP License Manager
    

Важный момент: Если веб-пользователи исчерпают программные лицензии, они не "полезут" за USB-ключами, если поиск по сети запрещен в nethasp.ini на сервере. Это именно то, что нам нужно для четкого разделения.

Решение 3: Разграничение доступа к программным лицензиям на терминальном сервере (RDP)

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

Для решения этой проблемы нам потребуется настроить права доступа на уровне операционной системы:

  1. Настроим права доступа к файлу программной лицензии на уровне ОС.

    • Выясним расположение файла лицензии. По умолчанию, программные лицензии 1С:Предприятия хранятся в каталоге %ProgramData%\1C\licenses (для Windows Server 2008 и выше) или C:\Documents and Settings\All Users\Application Data\1C\1Cv82\conf\ (для старых версий). Мы можем перейти в этот каталог и найти файлы лицензий.

    • Ограничим доступ. Нам необходимо настроить права доступа к этому каталогу (или непосредственно к файлам лицензий) таким образом, чтобы к ним имел доступ только тот пользователь, от имени которого запускается агент сервера 1С:Предприятия (обычно это системный пользователь USR1CV8 или аналогичный, созданный инсталлятором 1С). Для всех остальных пользователей RDP-сессий доступ к этому каталогу должен быть либо запрещен, либо ограничен до "только чтение" (чтобы избежать случайного повреждения, но не использования).

      Это предотвратит несанкционированное использование программных лицензий RDP-клиентами, которые не должны их получать.

  2. Перенесем файл лицензии и используем параметр ConfLocation. В качестве альтернативного (или дополнительного) метода, мы можем перенести файл программной лицензии в произвольную папку, к которой изначально никто не имеет доступа, кроме администратора. Затем мы укажем путь к этой папке в конфигурационном файле conf.cfg.

    • Создадим новую папку. Например, C:\1C_Licenses_ServerOnly.

    • Переместим файл лицензии из стандартного расположения в эту новую папку.

    • Настроим права доступа к этой новой папке, как описано в пункте 1, предоставив доступ только пользователю, от имени которого работает агент сервера 1С.

    • Отредактируем файл conf.cfg. Этот файл обычно находится в каталоге conf в папке установки сервера 1С:Предприятия (например, C:\Program Files\1cv8\srvinfo\conf\conf.cfg). Добавим в него параметр ConfLocation, указывающий на новую папку:

      
      ConfLocation=C:\1C_Licenses_ServerOnly
      

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

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

Рекомендации и важные замечания

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

← К списку