В компании «Мототехника» возникла задача полностью автоматизировать процесс отключения уволенных сотрудников от корпоративных систем. Наша команда разработала и внедрила решение, позволяющее свести к минимуму ручные операции и исключить риск человеческого фактора.
Логика процесса:
Инициатором деактивации может выступать любое приложение или сервис, способный отправлять события (1С:ЗУП, Bitrix24, CRM, Telegram-бот). При поступлении события о факте увольнения запускается автоматизированная цепочка действий.
Основные этапы:
1. Отключение в 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
Далее Python-скрипт обращается к Bitrix24 через REST API:
- Используя requests, отправляются запросы к официальному API Bitrix24.
- Блокируется пользователь.
- Пользователь принудительно разлогинивается.
Используемый стек:
- Python + requests для REST-запросов к Bitrix24.
- Обработка JSON-ответов и закрытие всех сеансов сотрудника.
3. Удаление сессий и устройств из MySQL/PostgreSQL
На заключительном шаге Python-скрипт соединяется с базами данных MySQL или PostgreSQL:
- Используя 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).
Это позволяет ответственным лицам быстро проверить корректность исполнения процесса и при необходимости вмешаться.