Авторизация#

Авторизация Schema Registry происходит при каждом запросе с помощью ACL.

При первом старте приложение уже имеет три роли:

  • ADMIN — роль, имеющая все права.

  • ADMIN_AS — роль, имеющая все права кроме изменения настройки изменяемости реестра/схемы.

  • USER — пустая роль без прав.

Набор ролей, их прав и относящихся к ним пользователей предлагается настроить самостоятельно.

Список параметров ACL:

  • op - операция, на которую выдано разрешение.

  • allow - кому выдано разрешение. Возможные значения: User:ivanov_ivan и Role:IT_ADMINS.

  • subject - шаблон субъектов (схем), на которые выдано разрешение. Может быть null.

  • subjectPatternType - тип шаблона разрешения. Должен быть null если subject==null. Существуют следующие типы:

    • LITERAL - точное сравнение request.subject == acl.subject. Пример: mytopic - разрешение выдано ТОЛЬКО на mytopic.

    • PREFIX - сравнение по префиксу request.subject.startsWith(acl.subject) Пример: orders - разрешение выдано на все из списка orders-in, orders-out, orders_losted и тому подобное.

    • REGEXP - сравнение с помощью регулярного выражения request.subject.matches(acl.subject). Пример: .* - все возможные субъекты.

Проверка доступа выполняется следующим образом:

  1. Проверка аутентификация пользователя. Если пользователь не аутентифицирован – доступа нет.

  2. Значения user, roles известны после аутентификации.

  3. Из URL определяется операция.

  4. Из URL определяется subject – может быть null.

  5. Происходит проверка каждого существующего правила для операции – разрешает ли оно пользователю операцию над субъектом.

  6. Правило найдено – операция разрешена.

  7. Правило не найдено – операция запрещена.

Операции:

Название

Описание

Роли

ACL_ACCESS

Доступ к данным ACL. На запись и чтение

ADMIN, ADMIN_AS

CONFIG_READ

Чтение настроек конфигурации (например, режим совместимости). subject==null - доступ к значениям по умолчанию

ADMIN, ADMIN_AS

CONFIG_WRITE

Чтение настроек конфигурации. subject==null - доступ к значениям по умолчанию

ADMIN, ADMIN_AS

SCHEMA_WRITE

Создание, изменение схем и версий

ADMIN, ADMIN_AS

SCHEMA_READ

Чтение схем, версий

ADMIN, ADMIN_AS

SCHEMA_DELETE

Удаление всего subject или версии

ADMIN, ADMIN_AS

SCHEMA_CLEANUP

Очистка и удаление старых схем

ADMIN, ADMIN_AS

MUTABILITY_READ

Чтение параметров изменяемости реестра/схемы

ADMIN, ADMIN_AS

MUTABILITY_WRITE

Запись параметров изменяемости реестра/схемы

ADMIN