Аутентификация и права доступа
Права на основе объектов
InfraVision обладает надёжной системой прав доступа, которая значительно выходит за рамки прав на основе моделей базового фреймворка Django. Назначение прав в InfraVision включает несколько измерений:
- Тип(ы) объектов, к которым применяется право
- Пользователи и/или группы, которым предоставляются права
- Действие(я), разрешённые правом (например, просмотр, добавление, изменение и т.д.)
- Любые ограничения, лимитирующие применение права к определённому подмножеству объектов
Реализация ограничений позволяет администраторам InfraVision назначать права на отдельные объекты: пользователи могут быть ограничены просмотром или взаимодействием с произвольными подмножествами объектов на основе их атрибутов. Например, вы можете ограничить конкретного пользователя просмотром только тех префиксов или IP-адресов, которые находятся в определённом VRF. Или вы можете ограничить группу изменением устройств только в определённом регионе.
Ограничения прав объявляются в формате JSON при создании права и работают очень похоже на запросы Django ORM. Например, вот ограничение, соответствующее зарезервированным VLAN с VLAN ID от 100 до 199:
[
{
"vid__gte": 100,
"vid__lt": 200
},
{
"status": "reserved"
}
]
Подробнее об ограничениях прав см. в документации по правам доступа.
LDAP-аутентификация
InfraVision включает встроенный бэкенд аутентификации для проверки пользователей через удалённый LDAP-сервер.
Единый вход (SSO)
InfraVision интегрируется с открытой библиотекой python-social-auth для предоставления множества вариантов аутентификации через единый вход (SSO). Они включают:
- Cognito
- GitHub и GitHub Enterprise
- GitLab
- Hashicorp Vault
- Keycloak
- Microsoft Entra ID
- Microsoft Graph
- Okta
- OIDC
...и многие другие. Также можно создавать собственные бэкенды по мере необходимости, используя базовые классы OAuth, OpenID и SAML библиотеки python-social-auth. Примеры настройки SSO можно найти в документации по аутентификации InfraVision.