Обзор системы прав доступа
Управление пользователями, группами и назначение прав доступа осуществляется через систему IDENTYX.
Данный раздел описывает только то, как права работают в INFRAX. Для получения информации о том, как создавать пользователей, назначать им роли и настраивать права доступа, обращайтесь к документации IDENTYX:
📖 Документация IDENTYX: https://docs.identyx.ru
Особенно полезные разделы:
INFRAX использует централизованную систему управления правами доступа с интеграцией во внешнюю систему управления идентификацией IDENTYX. Это обеспечивает гибкую иерархическую модель прав с поддержкой wildcards и приоритетов запретов над разрешениями.
Общие сведения
Система прав доступа в INFRAX решает несколько ключевых задач безопасности и управления доступом:
Ключевые возможности
- Централизованное управление — все права настраиваются через систему IDENTYX
- Иерархическая модель — права наследуются от родительских объектов
- Гранулярный контроль — права настраиваются для конкретных действий
- Wildcards поддержка — массовое назначение прав через шаблоны
- Приоритет запретов — Deny права всегда имеют приоритет над Allow
- Автоматическая фильтрация — данные автоматически фильтруются по правам пользователя
Управление пользователями и их правами осуществляется через систему IDENTYX. После назначения прав в IDENTYX они автоматически применяются в INFRAX при следующей авторизации пользователя.
Архитектура системы
Система прав доступа состоит из нескольких компонентов:
Компоненты системы
1. Хранение прав
Права пользователей хранятся в формате массива строк, где каждая строка описывает одно право. После авторизации права загружаются в сессию пользователя и используются для всех проверок доступа.
2. Проверка прав на бэкенде
На стороне сервера все проверки прав выполняются через централизованный контроллер, который:
- Проверяет наличие необходимого права у пользователя
- Учитывает иерархическое наследование
- Обрабатывает wildcards
- Применяет приоритет Deny над Allow
3. Проверка прав на фронтенде
В веб-интерфейсе права проверяются перед отображением элементов управления:
- Скрытие недоступных пунктов меню
- Отключение кнопок действий
- Фильтрация списков объектов
4. Фильтрация данных
Система автоматически фильтрует данные на основе прав пользователя:
- Узлы сети отображаются только те, к которым есть доступ
- Тикеты фильтруются по доступным организациям
- Меню строится динамически на основе прав
Формат прав
Права в INFRAX записываются в специальном формате, состоящем из трех частей:
Структура права
путь:действие:разрешение
Компоненты:
- Путь (
path) — путь к объекту или функции - Действие (
action) — тип действия - Разрешение (
allow/deny) — тип разрешения
Примеры форматов прав
| Право | Описание |
|---|---|
/menu/settings:/menu/allow:allow |
Доступ к пункту меню "Настройки" |
/objects/Production:/objects/view:allow |
Просмотр папки "Production" и всех вложенных узлов |
/objects/Production/WebServers:/objects/edit:allow |
Редактирование узлов в папке "WebServers" |
/objects/*:/objects/view:allow |
Просмотр всех узлов сети |
/objects/Confidential:/objects/view:deny |
Запрет просмотра папки "Confidential" |
/orgs/1:/organizations/access-to-organization:allow |
Доступ к организации с ID=1 |
При проверке прав система автоматически добавляет :allow к праву, поэтому можно использовать упрощенный формат путь:действие, который будет преобразован в путь:действие:allow.
Иерархическое наследование
Одна из ключевых особенностей системы — иерархическое наследование прав через wildcards.
Принцип работы
Если у пользователя есть право на родительский объект с wildcard *, это право автоматически распространяется на все дочерние объекты.
Пример иерархии:
/objects/
├── Production/
│ ├── WebServers/
│ │ ├── web01
│ │ └── web02
│ └── DatabaseServers/
│ ├── db01
│ └── db02
└── Development/
└── dev01
Примеры наследования
| Назначенное право | Доступные объекты |
|---|---|
/objects/*:/objects/view:allow |
Все узлы во всех папках |
/objects/Production/*:/objects/view:allow |
Все узлы в папке Production и её подпапках |
/objects/Production/WebServers/*:/objects/edit:allow |
Редактирование узлов web01 и web02 |
Система проверяет наследование на всех уровнях иерархии, от самого конкретного пути до корневого. Это позволяет настраивать права на любом уровне структуры папок.
Приоритет Deny над Allow
Важнейший принцип системы прав — запреты (Deny) всегда имеют приоритет над разрешениями (Allow).
Как это работает
Даже если у пользователя есть право Allow на объект или действие, наличие хотя бы одного Deny права автоматически блокирует доступ.
Порядок проверки:
- Система собирает все возможные права (с учетом wildcards)
- Проверяет наличие Deny прав
- Если найдено Deny — доступ запрещен
- Если Deny нет — проверяет наличие Allow прав
- Если найдено Allow — доступ разрешен
- Если ничего не найдено — доступ запрещен (по умолчанию)
Примеры использования
Сценарий 1: Доступ ко всему кроме конфиденциального
Пользователю нужен доступ ко всем узлам, кроме конфиденциальных серверов.
Назначенные права:
/objects/*:/objects/view:allow— просмотр всех узлов/objects/Confidential/*:/objects/view:deny— запрет просмотра конфиденциальных
Результат: Пользователь видит все узлы кроме находящихся в папке "Confidential".
Сценарий 2: Редактирование всего кроме продакшена
Разработчику нужны права на редактирование, но не на production серверах.
Назначенные права:
/objects/*:/objects/edit:allow— редактирование всех узлов/objects/Production/*:/objects/edit:deny— запрет редактирования production
Результат: Разработчик может редактировать все узлы кроме Production.
Если установлено Deny право, никакие Allow права на более низком уровне не смогут его переопределить. Это защитный механизм системы безопасности.
Типы прав
В INFRAX используются различные типы прав для разных областей системы:
1. Права на меню
Контролируют доступ к разделам интерфейса.
| Право | Описание |
|---|---|
/menu/settings:/menu/allow |
Доступ к настройкам системы |
/menu/support/tickets:/menu/allow |
Доступ к системе Helpdesk |
/menu/administration/network-objects:/menu/allow |
Доступ к управлению узлами сети |
/menu/administration/automation/tasks:/menu/allow |
Доступ к задачам |
/menu/administration/automation/scheduler:/menu/allow |
Доступ к планировщику |
/menu/administration/automation/scripts:/menu/allow |
Доступ к скриптам |
/menu/dashboards/specialized/monitoring:/menu/allow |
Доступ к дашборду мониторинга |
/menu/dashboards/specialized/support:/menu/allow |
Доступ к дашборду Helpdesk |
/menu/my/tickets:/menu/allow |
Доступ к "Мои тикеты" |
2. Права на узлы сети
Контролируют действия с объектами инфраструктуры.
| Действие | Формат права | Описание |
|---|---|---|
| Просмотр | /objects/[путь]:/objects/view |
Видимость узла в списках и деревьях (проверяется через наличие любых прав на объект) |
| Редактирование | /objects/[путь]:/objects/edit |
Изменение настроек узла, настройка мониторинга, управление учетными данными |
| Удаленное подключение через RDP | /objects/[путь]:/objects/remoteConnect/rdp |
Подключение к узлу только через Remote Desktop Protocol |
| Удаленное подключение через SSH | /objects/[путь]:/objects/remoteConnect/ssh |
Подключение к узлу только через Secure Shell |
| Удаленное подключение через VNC | /objects/[путь]:/objects/remoteConnect/vnc |
Подключение к узлу только через Virtual Network Computing |
| Удаленное подключение через Winbox | /objects/[путь]:/objects/remoteConnect/winbox |
Подключение к устройствам Mikrotik через Winbox |
| Удаленное подключение через Web | /objects/[путь]:/objects/remoteConnect/web |
Доступ к веб-интерфейсу узла |
Поддерживается детализация прав на удаленное подключение по типу сервиса. Общее право /objects/remoteConnect предоставляет доступ ко всем типам подключений. Детализированные права позволяют ограничить доступ только к определенным протоколам. Например, можно предоставить пользователю доступ только к SSH, но запретить RDP.
Система прав спроектирована с возможностью расширения. В будущих версиях могут быть добавлены дополнительные действия, такие как управление агентами, выполнение скриптов, создание дочерних узлов и другие. Формат прав остается единым: /objects/[путь]:/objects/[действие].
3. Права на организации
Контролируют доступ к организациям и связанным с ними данным.
| Право | Описание |
|---|---|
/orgs/[id]:/organizations/access-to-organization |
Базовый доступ к организации |
/orgs/[id]:/organizations/allow-create-tickets-by-org |
Создание тикетов от имени организации |
/orgs/*:/organizations/access-to-organization |
Доступ ко всем организациям |
Роль администратора
Администраторы имеют специальное право, дающее полный доступ ко всем функциям системы.
Право администратора
/:/:allow
Это специальное право означает:
- Доступ ко всем объектам — все узлы, папки, организации
- Все действия разрешены — просмотр, редактирование, удаление, подключение
- Обход фильтрации — видны все данные без ограничений
- Доступ ко всем меню — все разделы интерфейса
При проверке прав система первым делом проверяет, является ли пользователь администратором. Если да — немедленно разрешает доступ без дальнейших проверок. Это оптимизирует производительность и упрощает логику.
Автоматическая фильтрация данных
Одна из важнейших особенностей системы — автоматическая фильтрация данных на основе прав пользователя.
Что фильтруется автоматически
1. Дерево узлов сети
При отображении иерархической структуры узлов:
- Показываются только узлы, на которые есть право просмотра
- Папки отображаются только если в них есть доступные узлы
- Пустые папки (без доступных узлов) скрываются
2. Меню интерфейса
Меню строится динамически:
- Скрываются пункты меню без соответствующих прав
- Разделы без доступных подпунктов не отображаются
- Адаптация под роль пользователя (admin, user, helpdesk admin)
3. Списки тикетов
В Helpdesk отображаются только:
- Тикеты из организаций, к которым есть доступ
- Собственные тикеты пользователя (всегда видны)
- Тикеты, где пользователь указан исполнителем
4. Кнопки действий
Кнопки управления отображаются только при наличии прав:
- "Редактировать" — только при праве на редактирование
- "Удалить" — только при праве на удаление
- "Подключиться" — только при праве на удаленное подключение
- "Установить агент" — только при праве на управление агентами
Система спроектирована по принципу "запретить все, разрешить только необходимое". Если право явно не назначено — доступ запрещен. Это обеспечивает высокий уровень безопасности.
Рекомендации
💡 Лучшие практики работы с правами
1. Используйте иерархию
Назначайте права на уровне папок, а не отдельных узлов. Это упрощает управление и делает систему прав более понятной.
Хорошо: /objects/Production/*:/objects/view:allow
Плохо: Назначать права на каждый узел отдельно
2. Используйте Deny для исключений
Если нужен доступ ко всему кроме нескольких объектов — используйте широкое Allow и точечные Deny.
Пример:
/objects/*:/objects/view:allow— доступ ко всему/objects/Confidential/*:/objects/view:deny— исключение
3. Начинайте с минимальных прав
Выдавайте пользователям минимально необходимые права. Проще добавить права при необходимости, чем отзывать избыточные.
4. Группируйте объекты логически
Организуйте узлы в папки по логическим группам (Production, Development, Infrastructure). Это упростит назначение прав.
5. Документируйте права ролей
В системе IDENTYX создавайте роли с понятными названиями и описаниями назначенных прав. Это поможет при аудите безопасности.
6. Регулярно проверяйте права
Периодически пересматривайте назначенные права пользователей. Удаляйте избыточные права у уволившихся или сменивших должность сотрудников.
7. Используйте предустановленные роли
INFRAX предоставляет предустановленные роли (Администратор, Администратор Helpdesk, Пользователь). Используйте их как основу, дополняя при необходимости.
- Права применяются после повторной авторизации пользователя
- Изменения прав в IDENTYX требуют времени на синхронизацию
- При возникновении проблем с доступом проверьте актуальность прав в IDENTYX
- Deny права нельзя переопределить — будьте осторожны при их назначении