Наводим порядок в Active Directory с помощью ЗУП / ЗИКГУ 3.1 (идентификация, отключение и актуализация учетных записей пользователей)

01.02.19

Администрирование - Информационная безопасность

Продолжаем использовать ЗУП 3.1 совместно с LDAP во имя автоматизации работы системного администратора. В этот раз займемся аудитом учетных записей. Обработка производит сопоставление учетной записи с данными сотрудников из ЗУП, причем с учетом недавних событий (для перехода на ЗУП 3.1 чаще всего используется рекомендованный перенос, не включающий уволенных сотрудников) есть возможность использовать объединенные с помощью COM-соединения данные ЗУП 2.5 и ЗУП 3.1. Также в данной обработке есть возможность массовой корректировки, заполнения данных и отключения учетных записей. Перед использованием обработки для душевного спокойствия необходимо сделать резервную копию Active Directory любым удобным способом. Протестировано на ЗУП 3.1.6 - 3.1.8.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Наводим порядок в Active Directory с помощью ЗУП/ЗИКГУ 3.1:
.epf 19,30Kb
100 3 050 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Представим достаточно сложную ситуацию с имеющимися учетными записями.

Имена учетных записей поражают своими вариациями:

  •  "Пупкин", за которым скрывается уволенный в незапамятные времена Пупкин Василий Кондратьевич 
  •   "Надежда Петровна" - какова вероятность что эта комбинация имени и отчества среди сотрудников встречается больше одного раза? Вероятность увеличивается пропорционально численности предприятия, спасибо кэп
  •  "Аристотель", который в жизни Минчев Аристотель Борисович, Первый заместитель генерального директора.  Кто осмелился создать его учетку без отчества?
  •   "Мейерсон Софья Карловна Кадровик" - вроде все не так плохо, но во-первых для должности и подразделения есть специальные красивые поля, а во вторых Софья Карловна уже давно не кадровик, а заместитель начальника Сметно-Штатного отдела
  •  "Мартынюк" - главного инженера тоже не пощадили, ни имени, ни отчества :(
  •   "Борис Семенович Кузьминых" - указано полное имя, но порядок у всех разный, то ФИО, то ИОФ 
  •  "Савинская З" - что-то знакомое.. о, это же администратор демо базы Савинская Зоя Юрьевна!
  •   "Саныч", "Иванова Окcана Валерьевна" (заметно, что в имени Оксана стоит английская буква "c"?) - бывает и такое, why not

(Реальные ситуации смоделированы с помощью данных демо базы ЗУП. Забегая вперед - все эти учетные записи поддаются идентификации, кроме последнего, Саныч и Окcана автоматизации не подлежат)

 

Учетные записи не содержат иной информации, кроме как наименования:

Которое как мы видим создано "как получится". Бонусом в поле "фамилия" стоит имя, а поле "имя" стоит фамилия, или вообще отчество. Отсутствуют данные о сотруднике, использующем учетную запись - не известна организация, в которой он работает, не известны подразделение и должность, но самое неприятное - отсутствует какой-либо уникальный идентификатор его сущности, каким мог бы быть табельный номер (EmpoyeeID).

 

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

Как в такой ситуации понять кто есть кто и что с ним делать?

Единственная зацепка, которая у нас есть, это некоторое подобие ФИО сотрудника:

Если бы при именовании учетных записей соблюдался какой-то единый порядок, в идеале Фамилия Имя Отчество - именно в таком порядке и без лишних символов, то все было бы намного проще. Можно было бы сопоставлять учетную запись с сотрудником по наименованию, да и от лишних символов тоже было бы легко избавиться и сопоставление бы удалось. Но в данном случае нужен произвольный алгоритм поиска, который будет искать приблизительное соответствие и также по возможности отсекать лишние слова ("Мейерсон Софья Карловна Кадровик", лишнее слово "Кадровик").

 

Данный алгоритм реализован в предлагаемой внешней обработке - переданное наименование учетной записи (Колонка "cn") ищется среди сотрудников ЗУП, работающих и уволенных:

Сразу возникает вопрос - сколько в организации частичных/полных тезок? В одной фирме вполне могут работать Иванов Иван Иванович - кладовщик и Иванов Иван Иванович - бухгалтер, как быть в такой ситуации? Ответ - сопоставление происходит только в случае единственного совпадения.

Т.к. поиск происходит по части ФИО, например учетные записи Петр Максимович и Аристотель на деле соответствуют сотрудникам Сорока Петр Максимович и Минчев Аристотель Борисович, то нужно учесть, что вполне возможно Петр Максимович такой не один, есть также Королёв Петр Максимович и это совершенно другой сотрудник (два Аристотеля в одной фирме вряд ли встретятся, но для имени принцип тот же).

Поэтому в случае, если для переданного cn находится несколько похожих сотрудников, поиск не считается успешным, колонка "Сотрудник" остается пустой, но для справки в колонку "Несколько вариантов" выводятся все совпадения.

При успешном поиске напротив учетной записи выводится ФИО найденного сотрудника (колонка "Сотрудник"), выводятся все кадровые данные из ЗУП , в том числе ДатаУвольнения, из какой базы получены данные (2.5 или 3.1) и выводятся данные учетной записи: кадровые данные по версии AD, отключена учетная запись или нет (колонка "AccountDisable"), комментарий  (колонка "Description"), и дата последнего входа в систему (колонка "LastLogin"). Если соответствий в 1С найдено не было, выводятся только данные учетной записи.

колонки, не поместившиеся на предыдущем скрине:

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

Внимание! Achtung! Attention! В связи с тем, что происходит изменение данных (особенно если большого массива данных), перед использование обработки необходимо сделать резервную копию любым удобным способом, например.

Теперь, когда мы получили соответствие "Учетная запись - Сотрудник", можем привести в соответствие наименование учетной записи. Выбираем соответствующую команду обработки "Переименовать в формат Фамилия Имя Отчество" и нажимаем "Выполнить". Обратите внимание, меняется именно системное наименование учетной записи, а вместе с ним и корректно присваиваются значения полей отображаемой наименование "DisplayName", Фамилия "sn" и Имя "GivenName". Поля "Отчество" в данной системе не существует,  есть только поле инициалы, но если углубиться в вопрос - на самом деле это не совсем инициалы (советую почитать об этом, если вопрос с ними актуален). 

Проверяем - перезаполним данные по кнопке "Заполнить", заходим в оснастку ADUC - учетные записи переименованы:

 

Идеально!

 

Далее заполним кадровые данные для всех сотрудников, либо выберем конкретных:

помните бывшего кадровика Софью Карловну? Теперь у нее все как должно быть:

 

Следующая задача - избавиться от "мертвых душ".

Достаточно для этого, как вариант, отобрать тех пользователей, которые длительное время не используют свою учетную запись. Для этого в настройках добавлен отбор "Последний вход в систему в интервале". С помощью него можно выбрать тех людей, которые последний раз "логинились", например, еще в позапрошлом году - тогда значение отбора "Последний вход в систему в интервале" составит период с 01.01.2017 по 31.01.2017, те, кто последний раз логинился раньше или позже в список соответственно не попадут. Нажимаем заполнить для вывода списка, отмечаем все элементы либо произвольный список, выбираем команду "Отключить учетную запись" и нажимаем "Выполнить".

Также один из вариантов - это отключить тех, кто миллион лет назад уволен. Для этого в настройках указываем фильтр "Уволенные за период". К примеру, для того чтобы отключить всех уволенных за прошедшие два года, установите интервал с 01.01.2016 по 31.01.2017. Пример на демо-базе (там уволенные 7 лет назад, пора бы их отключить):

Однако обратите внимание, под этими учетными записями могут сидеть другие люди! На всякий случай поставьте также к уволенным фильтр "Последний вход в систему" сегодняшний день(или к примеру, неделю) - так будет понятно, какие учетные записи уволенных до сих пор используются. 

Также в настройках есть фильтр по организации, подразделению и должности. Для подключения необходимо через типовую форму выбрать пользователя домена, данные домена для подключения заполнятся автоматически в соответствии с выбранным пользователем.

Какие еще задачи можно решить с помощью это обработки?

Снова о Софье Карловне, бывшем кадровике :) Сегодня она заместитель начальника Сметно-Штатного отдела, а завтра она уже Начальник отдела труда и заработной платы и числится в подразделении "Управление", а в Active Directory все по-старому. С помощью обработки можно также актуализировать кадровые данные сотрудника, для этого просто выбираем вид операции "Заполнить кадровые данные".

По подобным случаям также готовится к публикации расширение для конфигурации ЗУП, которое автоматизирует процесс создания, отключения и актуализации учетных записей в связи с наступлением кадровых событий (прием, увольнение и перевод). Также предлагаю обратить внимание на мою предыдущую публикацию - групповое создание учетных записей из ЗУП 3.1 если нужно массово создать учетные записи всех работающих(или произвольного списка) сотрудников.

Всем удачи и порядка в Active Directory!

Вступайте в нашу телеграмм-группу Инфостарт

AD Active Directory ЗУП 3.1 Администрирование Перфекционизм

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

14400 руб.

20.08.2024    49209    277    143    

249

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

16000 руб.

10.11.2023    20908    86    42    

95

Информационная безопасность Поиск данных ServiceDesk, HelpDesk Журналы и реестры данных 8.3.14 Россия Бухгалтерский учет Бюджетный учет Налоговый учет Управленческий учет Платные (руб)

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

180000 руб.

05.09.2025    1713    1    1    

3

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.06.2025, версия 1.3

20400 руб.

06.12.2023    18717    68    10    

102

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    40556    124    152    

84

Инструменты администратора БД Системный администратор Программист 1С v8.3 1C:Бухгалтерия Платные (руб)

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

12000 руб.

06.02.2017    34322    147    18    

53
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Glebis 13 13.02.19 13:01 Сейчас в теме
Есть небольшой подводный камушек: требуются права админа домена (а то и всего леса) для пользователя службы 1С. Если рядовой кадровик запустит в ЗУПе какую-нить (например, присланную по почте) обработку через Файл-Открыть, то обладая правами админа домена можно... много чего.

Поэтому считаю, что нужно при подключении по LDAP вводить логин-пароль администратора домена.
2. Туки Туки 52 27.02.19 08:40 Сейчас в теме
(1) Привет! Не совсем понимаю твоего замечания - конкретно здесь не нужно назначать эти права кадровику, пользователь 1С, связанный аутентификацией с админским пользователем домена, только выбирается в настройках. Поправь если я что-то упускаю.
3. user1338342 09.01.20 16:52 Сейчас в теме
Добрый день

Отличная статья. Но для отдела ИБ нужно больше функционала, создание отчетов, контроль администраторов и т.д.
На пример: сотруднику (в связи с отпуском коллеги) предоставили доступ на 2 недели, как не забыть вернуть как было? ))
Можно почитать про все возможности?

Александр.
10. Туки Туки 52 22.05.20 09:50 Сейчас в теме
(3) Привет, Александр! Почитать можно, но самый полный мануал на инглише у майкрософта) https://docs.microsoft.com
Отчеты, контроль и напоминания это скорее CRM системы, которых множество узконаправленных или громозких. Но не исключаю что посредтством LDAP можно подобное организовать, возможностей у него море)
4. user1247402 01.03.20 21:31 Сейчас в теме
Добры день !

Шикарная статья, ошибка при выполнение СведенияОВнешнейОбработке Метод объекта не обнаружен
7. Туки Туки 52 22.05.20 09:18 Сейчас в теме
(4) Спасибо :) Если проблема еще актуальна:
СведенияОВнешнейОбработке Метод объекта не обнаружен
это при попытке добавить в доп обработки? Можно использовать просто через файл - открыть, но если очень нужно встроить надо добавить в модуль обработки вот этот фрагмент:

Функция СведенияОВнешнейОбработке() Экспорт
	#Область Формирование_Таблицы_Команд
	Команды = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(Команды, 
					"ПорядокВActiveDirectory",
					"ПорядокВActiveDirectory",  
					"ОткрытиеФормы", 
					Истина,  
					);
	#КонецОбласти
		                                                                  
	#Область ПараметрыРегистрацииОбработки
	ПараметрыРегистрации = Новый Структура;
	ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
	ПараметрыРегистрации.Вставить("Версия", "1.0");
	ПараметрыРегистрации.Вставить("Наименование", "ПорядокВActiveDirectory");
	ПараметрыРегистрации.Вставить("Информация", "ПорядокВActiveDirectory");
	Параметрырегистрации.Вставить("Команды", Команды);
	#КонецОбласти

	Возврат ПараметрыРегистрации;
КонецФункции
Показать
5. user1247402 02.03.20 20:18 Сейчас в теме
Добрый день !

Если БД на постгре на 1С сервер на дебиане - возможно ли использовать доработку ?
8. Туки Туки 52 22.05.20 09:19 Сейчас в теме
(5) Добрый, на постгре не тестировалась. нет в наличии)
6. GKMaxim 22.05.20 09:06 Сейчас в теме
{ВнешняяОбработка.НаводимПорядокВActiveDirectory.Форма.Форма.Форма(14)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147024891(0x80070005): Отказано в доступе.
9. Туки Туки 52 22.05.20 09:20 Сейчас в теме
А в целом COM работает? Если нет, то можно попробовать это https://forum.infostart.ru/forum9/topic147327/
11. vtsuganov 03.08.20 07:59 Сейчас в теме
Здравствуйте, отличная обработка, но хотелось бы уточнить по правам. При выполнении записи в домен ОбъектАД.SetInfo() вываливается исключение "Произошла исключительная ситуация (Active Directory): Отказано в доступе". Авторизация Win под админом домена, запуск 1С под ним же не помогает.
12. vtsuganov 03.08.20 09:55 Сейчас в теме
С локальной базой под админом домена получилось, получается нужно дать права админа пользователю из под которого запущен сервер 1С? Можно в ADODB.Connection строкой подключения или через Provider задать свои логин и пароль домена, чтобы запускать мог пользователь?
13. forman-sgk 28.09.20 12:53 Сейчас в теме
Доброго времени суток, коллеги.
Как запустить данную обработку на платформе 1С:Предприятие 8.3 (8.3.17.1496)
Конфигурация: Зарплата и управление персоналом, редакция 3.1 (3.1.14.183)

При попытке добавить обработку в базу возникает сообщение "Метод объекта не обнаружен (СведенияОВнешнейОбработке)"
Что необходимо сделать, чтобы добавить обработку в базу.
14. forman-sgk 28.09.20 13:06 Сейчас в теме
При попытке добавить листинг кода в модуль обработки

Функция СведенияОВнешнейОбработке() Экспорт
#Область Формирование_Таблицы_Команд
Команды = ПолучитьТаблицуКоманд();
ДобавитьКоманду(Команды,
"ПорядокВActiveDirectory",
"ПорядокВActiveDirectory",
"ОткрытиеФормы",
Истина,
);
#КонецОбласти

#Область ПараметрыРегистрацииОбработки
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Наименование", "ПорядокВActiveDirectory");
ПараметрыРегистрации.Вставить("Информация", "ПорядокВActiveDirectory");
Параметрырегистрации.Вставить("Команды", Команды);
#КонецОбласти

Возврат ПараметрыРегистрации;
КонецФункции

Возникает сообщение

{ВнешняяОбработка.НаводимПорядокВActiveDirectory.МодульОбъекта(3,15)}: Процедура или функция с указанным именем не определена (ПолучитьТаблицуКоманд)
Команды = <<?>>ПолучитьТаблицуКоманд(); (Проверка: Сервер)
{ВнешняяОбработка.НаводимПорядокВActiveDirectory.МодульОбъекта(4,5)}: Процедура или функция с указанным именем не определена (ДобавитьКоманду)
<<?>>ДобавитьКоманду(Команды, (Проверка: Сервер)
15. Navakouski 1 28.12.21 23:56 Сейчас в теме
Добрый день. Подскажите пожалуйста, тоже реализовал выгрузку в АД, но не нашел возможности как в атрибут типа boolian из 1с установить значение не выбрано, получается только установить или истина или ложь. Не нашел нигде информации как сбросить значение. Может быть вы сталкивались и сможете подсказть. Заранее спасибо
Для отправки сообщения требуется регистрация/авторизация