IT For Prof - Автоматизация увольнения сотрудника

Автоматизация увольнения сотрудника

Автоматизированное увольнение

Автоматизация увольнения сотрудника

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

Логика процесса:

Инициатором деактивации может выступать любое приложение или сервис, способный отправлять события (1С:ЗУПBitrix24, CRM, Telegram-бот). При поступлении события о факте увольнения запускается автоматизированная цепочка действий.

Основные этапы:

1. Отключение в Active Directory

Первым шагом является блокировка учётной записи в Active Directory — централизованной системе управления доступом.

После получения события увольнения сервер на Linux, используя Webhook, запускает Python-скрипт. Данный скрипт выполняет следующий функционал:

  • Принимает данные о сотруднике (логин, идентификатор, учетную запись, отдел, должность и т.д.).
  • Обращается к LDAP-службе Active Directory, чтобы получить DN (Distinguished Name) пользователя.
  • Запускает PowerShell-скрипт (вызов через SSH или WinRM), который автоматически блокирует учётную запись в AD, выставляя соответствующие флаги (AccountDisabled)

Используемый стек:

  • Python для обработки REST-запросов и приёма Webhook-событий.
  • Python + ldap3 для получения информации о пользователе из AD.
  • PowerShell для изменения статуса учётной записи в AD (Set-ADUser -AccountDisabled $true).

2. Отключение в Bitrix24

После блокировки в AD отключается доступ к Bitrix24.

Далее Python-скрипт обращается к Bitrix24 через REST API:

  • Используя requests, отправляются запросы к официальному API Bitrix24.
  • Блокируется пользователь, закрываются активные подключения.
  • Пользователь принудительно разлогинивается. 

Используемый стек:

  • Python + requests для REST-запросов к Bitrix24.
  • Обработка JSON-ответов и закрытие всех сеансов сотрудника.

3. Удаление сессий и устройств из MySQL/PostgreSQL

Для предотвращения повторного входа в системы после блокировки в AD удаляются все сессии и привязанные устройства из баз данных MySQL и PostgreSQL.

Python-скрипт соединяется с базами данных MySQL или PostgreSQL:

  • Используя pymysql или psycopg2, устанавливается соединение с БД.
  • Выполняются SQL-запросы, удаляющие все записи о сессиях и зарегистрированных устройствах, связанных с уволенным сотрудником.

Используемый стек:

  • Python + pymysql/psycopg2 для работы с БД.
  • SQL-запросы для удаления данных о сеансах.

Таким образом, это не даёт возможности повторного входа с сохранённой сессий, даже если учётная запись в AD по ошибке будет вновь включена, сотрудник не сможет войти в Битрикс24.

Автоматизация увольнения сотрудника

Дополнительные операции:

Отключение RDP-сеансов:

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

С помощью PowerShell-сценария, выполняемого от привилегированного пользователя, выполняются следующие действия:

  • Получение списка серверов из Active Directory (Get-ADComputer с фильтром по определённым OU или группам, учитывая только активные узлы).
  • На каждом сервере по RDP (через Invoke-Command или Enter-PSSession) определяется наличие сессии уволенного сотрудника (quser / qwinsta команды внутри PowerShell).
  • Сессия принудительно завершается (logoff ), блокируя дальнейший доступ.

Отключение в VMware Horizon:

С помощью PowerCLI (модуль для PowerShell) подключаемся к Horizon Environment:

  • Подключение к Connection Server (Connect-HVServer).
  • Поиск пользователя и принудительное завершение всех его активных десктопных сессий (например, Remove-HVSession).
  • Таким образом, уволенный сотрудник теряет доступ к VDI-инфраструктуре.

Блокировка профиля OpenVPN:

Для OpenVPN используется XML-RPC API-сервис:

  • Python-скрипт устанавливает XML-RPC соединение с OpenVPN Access Server.
  • Выполняется удаление или блокировка пользовательского профиля, а также принудительный разрыв всех текущих VPN-сессий.
    Это исключает доступ к корпоративной сети извне.

Отключение почты:

Доступ к почтовому серверу (например, Kerio, Exchange или Postfix с Dovecot) отключается через API или прямое подключение:

  • Если используется Exchange, вызывается Exchange Management Shell (PowerShell) или EWS API для отключения почтового ящика.
  • При использовании Postfix/Dovecot — Python-скрипт может изменять конфигурацию или записи в БД, отключая учётную запись или перемещая её в «заблокированную» группу, а также завершать IMAP/POP3 сессии.

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

Финальный отчет:

После завершения всех этапов автоматически формируется отчёт:

  • Python-скрипт собирает информацию о статусе каждого шага (успешно/ошибка),
  • Генерирует структурированный отчёт (JSON или Markdown),
  • Отправляет его инициатору процесса в Bitrix24 (через REST API метод отправки сообщений в чат или постановку задачи) или в Telegram (через Bot API метод sendMessage).
    Это позволяет ответственным лицам быстро проверить корректность исполнения процесса и при необходимости вмешаться.