Authorization Matrix Collector — это инструмент для автоматизированного сбора и систематизации полномочий пользователей из различных корпоративных систем. Проект представляет собой универсальную платформу, которая объединяет множество методов получения данных в едином интерфейсе.
Данная программа связана с другими проектами:
- Мультисистемная поддержка: Работа с ПОИБ СОБИ, ЕИС, Аксиок Планирование, ЕБП, СЕД, АСФК, СУФД
- Гибкие методы сбора: Скрейпинг, API-запросы, работа с БД, загрузка файлов
- Интуитивный GUI: Современный интерфейс на PyQt5
- Пакетная обработка: Одновременная работа с сотнями пользователей
- Расширяемая архитектура: Легкое добавление новых систем и методов
📦 AuthorizationMatrixCollector
├── 🎨 main.py # Основной GUI и логика приложения
├── ⚙️ build.bat # Скрипт сборки для Windows
├── 🔧 handler.py # Обработчики для различных систем
├── 📊 interfaces/ # Файлы интерфейсов Qt Designer
├── 🔐 passwords.py # Конфигурация подключений
└── 🚀 drivers/ # WebDriver для браузерной автоматизации
| Метод | Системы | Особенности |
|---|---|---|
| Web Scraping | ЕИС | Автоматизация через Selenium |
| API Integration | СОБИ, ЕБП, Аксиок | Прямые HTTP-запросы |
| Database Queries | СедЫ | Прямое подключение к БД |
| File Processing | Excel-файлы | Загрузка excel файлов |
Для создания исполняемого файла используйте скрипт build.bat:
# Запуск сборки
build.batЧто делает скрипт сборки:
- Очищает предыдущие сборки
- Активирует виртуальное окружение
- Собирает приложение в один исполняемый файл
- Включает необходимые ресурсы (интерфейсы, драйверы)
- Добавляет иконку приложения
# Установка зависимостей
pip install -r requirements.txt
# Сборка через PyInstaller
pyinstaller --onefile --add-data="interfaces;interfaces" --add-data="drivers;drivers" --icon="icon.ico" --name=matrix main.py| Параметр | Назначение |
|---|---|
--onefile |
Собрать в один исполняемый файл |
--add-data |
Включить дополнительные файлы |
--icon |
Установить иконку приложения |
--noconsole |
Скрыть консоль (для финальной версии) |
- Выбор подразделений: Селектовый выбор отделов
- Выбор пользователей: Селектовый выбор сотрудников
- Настройка систем: Чекбоксы для выбора целевых систем
- Панель логов: Реальное время отслеживания процесса
- Загрузчик Excel: Интеллектуальная обработка файлов с прогресс-баром
# Пример многопоточной архитектуры
t1 = threading.Thread(target=self.process_logs, args=(list_systems,))
t1.start()MESSAGES = {
100: {'type_msg': 'info', 'title': "Сбор данных в системе - {} закончен."},
201: {'type_msg': 'success', 'title': "Данные добавлены в базу данных!"},
404: {'type_msg': 'warn', 'title': "Пользователь {} не найден в подсистеме."}
}__chrome_versions = {
'131.0.6778.69': 'drivers/chromedriver_131.exe',
'109.0.5414.173': 'drivers/chromedriver_109.exe'
}{
'система': {
'parent': 'родительская система',
'roles': {
'роль': ['пользователь1', 'пользователь2']
}
}
}- matrix_systems: Каталог информационных систем
- matrix_roles: Справочник ролей и полномочий
- matrix_userroles: Связи пользователей с ролями
- matrix_logupdates: История обновлений
- Python 3.8+
- PostgreSQL/другая СУБД
- Chrome/Chromium браузер
- Доступ к корпоративным системам
- Создание виртуального окружения:
python -m venv env- Активация окружения:
# Windows
env\Scripts\activate
# Linux
source env/bin/activate- Установка зависимостей:
pip install -r requirements.txtpython main.py# После сборки
dist/matrix.exe# passwords.py пример структуры
# подключения к аксиок, для выполнения запросов
AXIOK = {
'auth': {
'login': 'username',
'password': 'secure_password',
},
'server': 'http://aksiok/'
}
# подключение к бд, куда вносятся данные
DB = {
'user': 'username',
'password': 'secure_password',
'host': 'localhost',
'port': 5432,
}
# подключение к седу
SED_CONNECT = {
'user': 'username',
'password': 'secure_password',
}
# адреса баз седа
SED_DB = {
'0.0.0.0': 'SED1K',
'0.0.0.0': 'SED2K',
'0.0.0.0': 'SED3K',
}
# синхронизация пользователей с AD
API_LDAP = 'http://localhost:8000/api/end_point'
# Для предоставления скрипта внутри программы
SCRIPTS = {
'ASFK': '''
SELECT *
FROM table_name
''',
'SUFD': '''
SELECT *
FROM table_name
''',
'SED1K': '''
SELECT *
FROM table_name
''',
'SED2K': '''
SELECT *
FROM table_name
''',
'SED3K': '''
SELECT *
FROM table_name
''',
'CKS': '''
SELECT *
FROM table_name
'''
}- Количество обработанных пользователей
- Детализация по системам
- Отслеживание ошибок и предупреждений
# Пример записи в лог
self.addLogs(201, [], f'Обработано: {count} записей')def sync_ldap_users(self):
response = requests.post(passwords.API_LDAP)
# Автоматическое обновление пользовательской базы- Реализовать метод в
handler.py - Добавить конфигурацию в
__routes - Обновить
SYSTEMSвmain.py
** Разработано для УФК по Московской области **
💡 Примечание: Данное решение предназначено для использования в корпоративной среде и требует соответствующей настройки параметров безопасности и подключения к внутренним системам.

