Гибридная авторизация в 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 не будет опубликован. Обязательные поля помечены *