Гибридная авторизация в 1С 7.7 с использованием доменных учетных записей

Решение, позволяющее привязать пользователей базы данных 1С к доменным учетным записям и избавиться от неудобных паролей 1С.

Решение по привязке пользователей 1С к доменным учетным записям основано на том факте, что 1С не разрешает вход пользователя при отсутствующем или недоступном рабочем каталоге. Таким образом, если обеспечить доступ правами NTFS к каждому рабочему каталогу только для одного пользователя — задачу можно считать решенной, однако существуют варианты обхода. Первый заключается в том, что рабочий каталог можно указать в командной строке при запуске 1С, второй — в возможности удалить или переименовать файл users.usr.

Для закрытия первой дыры используется маленькая вставка в глобальный модуль, проверяющая рабочий каталог при старте, а для защиты самого глобального модуля — установка на MD-файл разрешений NTFS. Для закрытия второго пути также используются права NTFS.

Если быть совсем точным — при недоступном рабочем каталоге остается возможность войти в Конфигуратор, а в режимы «Монитор» и «Отладчик» возможно войти с ручным указанием каталога, код глобального модуля тут не сработает. Так что мы защищаем вход только в режим «Предприятие», считая, что от конфигуратора нас защищают разрешения на файл MD и папку ExtForms, а от входа в отладчик и монитор большой беды не случится.

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

Как этим пользоваться:

  • При добавлении пользователя в 1С указываете рабочий каталог в виде .usrdef;
  • После добавления пользователя вносите запись соответствия в файл userlist.txt;
  • Файл userlist.txt должен находиться в папке usrdef;
  • Файл SetSecurity.cmd может находиться в любом месте, удобнее всего в каталоге ИБ, т.к. в этом случае можно запускать его без указания пути. Запускать его нужно после каждого изменения файла userlist.txt. Скрипт сам на себя разрешения не задает, если считаете, что его опасно показывать пользователям — положите в менее доступное место;
  • Пароли всем пользователям ставите пустыми.

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

Поскольку решение в основном ориентировано на компании с достаточно большим количеством пользователей, и Вы сочтете данную разработку полезной для Вашей компании, можете поблагодарить автора путем перечисления на Яндекс-кошелек 41001410419858.

9 Comments

  1. TrinitronOTV

    вот это да, отличная вещь, спасибо

    Reply ↓
  2. pavlo

    не понял, а брать права откуда будет?

    Reply ↓
  3. tedkuban

    Права в SetSecurity.CMD прописаны. Если мои не нравятся — можно его подправить под собственные нужды.

    Reply ↓
  4. tedkuban

    pavlo, я так понимаю, у Вас есть какой-то скрипт по вытаскиванию пользователей из AD. Есть интересная мысль — если в какое-нибудь поле в AD записать имя юзверя 1С, то файл userlist можно будет формировать на лету, а если автоматический запуск не нужен — то и вообще без него обойтись.

    Reply ↓
  5. dicwork

    Интересное решение. Если я правильно понял, то с конкретного рабочего места может зайти только тот кто залогинился на этом компьютере?

    Reply ↓
  6. tedkuban

    Хм… Не совсем. Конкретному пользователю домена можно зайти только теми пользователями из базы 1С, которым разрешил войти админ. Но механизм позволяет и более гибкую настройку, там в описании рассказано. Собственно, есть метод, который каждый может заточить под себя.

    Reply ↓
  7. Lapo4ka.ru

    такая штука еще есть

    http://kb.mista.ru/article.php?id=406

    Reply ↓
  8. tedkuban

    (7) Lapo4ka.ru, это не совсем такая же штука. Там требуется патчить файлы 1С, а у меня нет.

    Reply ↓
  9. shurix

    (7) Lapo4ka.ru, хотя я сейчас сам использую патч Ромикса, однако в нём есть одна неприятная особенность. Суть её можно понять на следующем примере:

    в файле NtUser.ini прописаны такие связи:

    vasya = Вася

    kolya = Коля

    Если в систему входит пользователь vasya, то он без проблем войдёт под своим win-паролем в 1с, выбрав пользователя «Вася»;

    Если в систему входит пользователь kolya, то он без проблем войдёт под своим win-паролем в 1с, выбрав пользователя «Коля»;

    Однако, если у vasya возникнет необходимость войти в 1с как «Коля», то ему придётся вводить пароль 1с, а не win-пароль. И это создает некоторые неудобства.

    Буду искать альтернативу — попробую это решение и Сквозная доменная авторизация в 1С 7.7.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *