Как разделить программные лицензии 1С между разными организациями на одном RDP-сервере?

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

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

Проанализируем механизм поиска лицензий платформой

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

  1. Каталог профиля конкретного пользователя: %AppData%\1C\1Cv8\conf.
  2. Общий каталог для всех пользователей: %ProgramData%\1C\licenses (или C:\Documents and Settings\All Users\Application Data\1C\1Cv8\conf в старых ОС).
  3. Каталог установки платформы (папка conf).

Если мы хотим изолировать лицензии, нам нужно сделать так, чтобы пользователи компании «А» физически не могли «прочитать» файл лицензии компании «Б».

Способ 1. Изоляция через права доступа NTFS (рекомендуемый)

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

Разберем алгоритм настройки:

  1. Создаем группы пользователей: В операционной системе Windows создадим отдельные группы безопасности для каждой организации (например, Users_Org_A и Users_Org_B).
  2. Распределяем файлы лицензий: Для удобства администрирования внутри папки licenses создадим подпапки для каждой фирмы. Активируем лицензии таким образом, чтобы файлы .lic каждой компании попали в свою папку.
  3. Настраиваем безопасность: В свойствах папки (или конкретных файлов лицензий) переходим на вкладку «Безопасность». Отключаем наследование прав и удаляем группу «Все» или «Пользователи». Добавляем доступ на «Чтение» только для соответствующей группы (например, только для Users_Org_A).

В результате, когда сотрудник фирмы «Б» запустит 1С, платформа попытается просканировать папку с лицензиями. Файлы фирмы «А» будут для него невидимы на уровне файловой системы, и 1С их просто проигнорирует, перейдя к поиску доступных файлов фирмы «Б».

Способ 2. Отключение раздачи лицензий сервером 1С

Проанализируем критически важный нюанс клиент-серверной архитектуры. Если ваши базы данных работают на сервере 1С (SQL-вариант), то по умолчанию лицензии может выдавать сам сервер (процесс rphost). В этом случае предыдущий способ с правами NTFS не сработает, так как rphost обычно работает под одной системной учетной записью и имеет доступ ко всем лицензиям сразу. Он будет раздавать их из общего пула любому подключившемуся пользователю.

Выясним, как принудительно заставить клиента искать лицензию самостоятельно в своей RDP-сессии:

  1. Откроем «Консоль администрирования серверов 1С:Предприятия».
  2. Перейдем в свойства конкретной информационной базы.
  3. Найдем параметр «Разрешить выдачу лицензий сервером 1С:Предприятия».
  4. Установим его в значение «Нет».

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

Способ 3. Активация в профиль пользователя

Рассмотрим альтернативный вариант, который подходит, если лицензий немного (например, однопользовательские). При активации программной лицензии система спрашивает, для кого она устанавливается: «Для всех пользователей данного компьютера» или «Для текущего пользователя».

Если выбрать «Для текущего пользователя», файл лицензии сохранится в %AppData%\1C\1Cv8\conf. Этот каталог по определению недоступен другим пользователям сервера. Однако у этого метода есть существенный минус: если пользователь сменит компьютер или его профиль на сервере будет пересоздан, лицензию придется активировать заново или переносить файл вручную.

Важные замечания по типам лицензий

Посмотрим на разницу между типами программных лицензий. Однопользовательские лицензии проще всего распределять по папкам или профилям. С многопользовательскими лицензиями (например, на 10 или 20 рабочих мест) ситуация сложнее. Такая лицензия представляет собой один файл .lic. Вы не можете «откусить» от него 5 лицензий для одной фирмы и 15 для другой штатными средствами Windows. Если вам нужно жесткое разделение, организациям следует приобретать отдельные пакеты лицензий, чтобы у каждой был свой собственный файл активации.

Сценарий работы в КОРП-версиях

Если ваша организация использует версию 1С:Предприятие КОРП, мы можем воспользоваться более продвинутым инструментом — Сервером лицензирования. Он позволяет создавать профили безопасности и гибко назначать количество доступных лицензий для конкретных баз или групп пользователей. Однако для большинства типовых задач на базе версии ПРОФ достаточно комбинации NTFS-прав и настройки параметров информационной базы в консоли сервера.

Резюме: Чтобы реализовать схему «каждому своя лицензия» на одном RDP-сервере, выполните следующие действия: разделите пользователей по группам ОС, ограничьте права доступа к файлам .lic через безопасность папок и обязательно отключите выдачу лицензий в свойствах базы на сервере 1С.

← На главную