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









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

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

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

  •  "Пупкин", за которым скрывается уволенный в незапамятные времена Пупкин Василий Кондратьевич 
  •   "Надежда Петровна" — какова вероятность что эта комбинация имени и отчества среди сотрудников встречается больше одного раза? Вероятность увеличивается пропорционально численности предприятия, спасибо кэп
  •  "Аристотель", который в жизни Минчев Аристотель Борисович, Первый заместитель генерального директора.  Кто осмелился создать его учетку без отчества?
  •   "Мейерсон Софья Карловна Кадровик" — вроде все не так плохо, но во-первых для должности и подразделения есть специальные красивые поля, а во вторых Софья Карловна уже давно не кадровик, а заместитель начальника Сметно-Штатного отдела
  •  "Мартынюк" — главного инженера тоже не пощадили, ни имени, ни отчества 🙁
  •   "Борис Семенович Кузьминых" — указано полное имя, но порядок у всех разный, то ФИО, то ИОФ 
  •  "Савинская З" — что-то знакомое.. о, это же администратор демо базы Савинская Зоя Юрьевна!
  •   "Саныч", "Иванова Ок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.2024 по 31.01.2024, те, кто последний раз логинился раньше или позже в список соответственно не попадут. Нажимаем заполнить для вывода списка, отмечаем все элементы либо произвольный список, выбираем команду "Отключить учетную запись" и нажимаем "Выполнить".

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

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

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

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

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

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

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

2 Comments

  1. Glebis

    Есть небольшой подводный камушек: требуются права админа домена (а то и всего леса) для пользователя службы 1С. Если рядовой кадровик запустит в ЗУПе какую-нить (например, присланную по почте) обработку через Файл-Открыть, то обладая правами админа домена можно… много чего.

    Поэтому считаю, что нужно при подключении по LDAP вводить логин-пароль администратора домена.

    Reply
  2. Туки Туки

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

    Reply

Leave a Comment

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