Наводим порядок в 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.

Скачать исходный код

Наименование Файл Версия Размер
Наводим порядок в Active Directory с помощью ЗУП/ЗИКГУ 3.1:
.epf 19,30Kb
86
.epf 19,30Kb 86 Скачать

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

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

  •  "Пупкин", за которым скрывается уволенный в незапамятные времена Пупкин Василий Кондратьевич 
  •   "Надежда Петровна" - какова вероятность что эта комбинация имени и отчества среди сотрудников встречается больше одного раза? Вероятность увеличивается пропорционально численности предприятия, спасибо кэп
  •  "Аристотель", который в жизни Минчев Аристотель Борисович, Первый заместитель генерального директора.  Кто осмелился создать его учетку без отчества?
  •   "Мейерсон Софья Карловна Кадровик" - вроде все не так плохо, но во-первых для должности и подразделения есть специальные красивые поля, а во вторых Софья Карловна уже давно не кадровик, а заместитель начальника Сметно-Штатного отдела
  •  "Мартынюк" - главного инженера тоже не пощадили, ни имени, ни отчества :(
  •   "Борис Семенович Кузьминых" - указано полное имя, но порядок у всех разный, то ФИО, то ИОФ 
  •  "Савинская З" - что-то знакомое.. о, это же администратор демо базы Савинская Зоя Юрьевна!
  •   "Саныч", "Иванова Ок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С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

14400 руб.

06.12.2023    3590    19    1    

39

Infostart УДиФ: Управление данными и формами

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

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

10000 руб.

10.11.2023    4283    12    2    

36

SALE! %

PowerTools

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

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2280 руб.

14.01.2013    178645    1083    0    

861

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

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

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

14400 руб.

29.04.2020    27924    82    146    

61

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61529    90    59    

74

"Менеджер потоков 2.1": УПП: "Восстановление партий"

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

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11855    5    9    

7

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    11170    5    8    

9

Конфигурация Session Monitor

Мониторинг Инструменты администратора БД Платформа 1С v8.3 Россия Платные (руб)

Конфигурация Session Monitor предназначена для мониторинга сервера 1С с целью отслеживания чрезмерной нагрузки от конкретных сеансов и скорости реакции рабочих процессов.

1500 руб.

01.12.2020    14398    33    0    

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

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

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

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

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

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

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

Если БД на постгре на 1С сервер на дебиане - возможно ли использовать доработку ?
+
8. Туки Туки 51 22.05.20 09:19 Сейчас в теме
(5) Добрый, на постгре не тестировалась. нет в наличии)
+
6. GKMaxim 22.05.20 09:06 Сейчас в теме
{ВнешняяОбработка.НаводимПорядокВActiveDirectory.Форма.Форма.Форма(14)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147024891(0x80070005): Отказано в доступе.
+
9. Туки Туки 51 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. user1037973 28.12.21 23:56 Сейчас в теме
Добрый день. Подскажите пожалуйста, тоже реализовал выгрузку в АД, но не нашел возможности как в атрибут типа boolian из 1с установить значение не выбрано, получается только установить или истина или ложь. Не нашел нигде информации как сбросить значение. Может быть вы сталкивались и сможете подсказть. Заранее спасибо
+
Оставьте свое сообщение