gifts2017

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

Опубликовал Фёдор Кубанец (tedkuban) в раздел Администрирование - Защита, права, пароли

Решение, позволяющее привязать пользователей базы данных 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.

Скачать файлы

Наименование Файл Версия Размер
Скрипт установки разрешений 14
.cmd 2,37Kb
24.11.11
14
.cmd 2,37Kb Скачать
Пример списка соответствия пользователей 8
.txt 0,86Kb
24.11.11
8
.txt 0,86Kb Скачать
Кусок глобального модуля 8
.txt 0,43Kb
24.11.11
8
.txt 0,43Kb Скачать
Скрипт запуска с автовыбором пользователя 1С 9
.cmd 1,76Kb
24.11.11
9
.cmd 1,76Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Александр Лыткин (TrinitronOTV) 24.11.11 10:35
вот это да, отличная вещь, спасибо
2. Pavlo (pavlo) 24.11.11 18:54
не понял, а брать права откуда будет?
3. Фёдор Кубанец (tedkuban) 24.11.11 20:10
Права в SetSecurity.CMD прописаны. Если мои не нравятся - можно его подправить под собственные нужды.
4. Фёдор Кубанец (tedkuban) 24.11.11 20:56
pavlo, я так понимаю, у Вас есть какой-то скрипт по вытаскиванию пользователей из AD. Есть интересная мысль - если в какое-нибудь поле в AD записать имя юзверя 1С, то файл userlist можно будет формировать на лету, а если автоматический запуск не нужен - то и вообще без него обойтись.
5. Виктор Клименко (dicwork) 25.12.11 22:31
Интересное решение. Если я правильно понял, то с конкретного рабочего места может зайти только тот кто залогинился на этом компьютере?
6. Фёдор Кубанец (tedkuban) 26.12.11 00:32
Хм... Не совсем. Конкретному пользователю домена можно зайти только теми пользователями из базы 1С, которым разрешил войти админ. Но механизм позволяет и более гибкую настройку, там в описании рассказано. Собственно, есть метод, который каждый может заточить под себя.
7. Александр Кочетков (Lapo4ka.ru) 21.02.12 18:04
8. Фёдор Кубанец (tedkuban) 21.02.12 19:27
(7) Lapo4ka.ru, это не совсем такая же штука. Там требуется патчить файлы 1С, а у меня нет.
9. Shurix Noise (shurix) 25.05.12 02:37
(7) Lapo4ka.ru, хотя я сейчас сам использую патч Ромикса, однако в нём есть одна неприятная особенность. Суть её можно понять на следующем примере:
в файле NtUser.ini прописаны такие связи:
vasya = Вася
kolya = Коля
Если в систему входит пользователь vasya, то он без проблем войдёт под своим win-паролем в 1с, выбрав пользователя "Вася";
Если в систему входит пользователь kolya, то он без проблем войдёт под своим win-паролем в 1с, выбрав пользователя "Коля";
Однако, если у vasya возникнет необходимость войти в 1с как "Коля", то ему придётся вводить пароль 1с, а не win-пароль. И это создает некоторые неудобства.

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