Мицелий — программный продукт для микросервисных платформ, предназначенный для разграничения и контроля доступа к данным, предоставляемым GraphQL API.
Входит в реестр российского ПО
Мицелий состоит из двух сервисов
Мицелий позволяет настраивать права доступа к отдельным полям модели (GQL-контракту) или всей модели целиком. Права доступа для конкретных пользователей указываются разработчиками сервисов-источников данных в базе данных сервиса Grants.
GrantsВыполняет функции управления моделью контроля доступа на основе RBAC/ABAC подходов
SecurityProxyОсуществляет контроль доступа к данным, предоставляемым GraphQL API сервисов-источников данных
Цели и задачи продукта
Целью Мицелия является обеспечение надёжного механизма контроля доступа к данным, включая данные, составляющие служебную и банковскую тайну, в омниканальной среде с большим количеством контекстов исполнения кода.
предоставление открытых данных сертификатов для проверки подписи JWT-токена;
формирование JWT-токена для авторизации в сервисе источнике данных для указанной роли пользователя, прошедшего аутентификацию; хранение данных пользователя, необходимых для выпуска JWT-токена;
хранение ролей, доступных пользователю для авторизации;
хранение настроек контроля доступа для сервисов-источников.
Сервис SecurityProxy
контроль доступа к данным, предоставляемым GraphQL API сервисом-источником данных, на основе правил авторизации;
проверка корректности разметки GraphQL API сервисов-источника данных;
предоставление контрактов защищаемого сервиса внешним потребителям без ограничения доступа к контрактам для неавторизованных запросов;
проксирование запросов, прошедших авторизацию к сервису-источнику данных.
Основные преимущества
Реализация вокруг GraphQL API с возможностью расширения поддержки на REST API
Возможности реализации доступа и настройки доступа к отдельным полям модели данных (GQL-контракту) или всей модели целиком без модификации систем
Поддержка ролевой модели и её администрирования
Внедрение как sidecar (паттерн для мульти-контейнерных подов при использовании Kubernetes) в контейнеризованных системах
Возможность использования в качестве сетевого прокси