Dynamic Security Mosquitto: приоритеты ACL нужно читать вместе с путём назначения роли
Фотография конкретного исполнения не приложена.
В Dynamic Security клиент может получить роли напрямую и через несколько групп. Проверки идут в предусмотренном порядке до первого подходящего ACL нужного типа. Поэтому нельзя просто собрать все разрешения и запреты в один список и выбрать строку с самым большим числовым приоритетом без учёта иерархии.
Сначала проверяются роли, назначенные самому клиенту. Затем рассматриваются группы и их роли по соответствующим приоритетам. Внутри роли есть собственный порядок ACL. При проектировании нужно проследить полный путь «клиент — роль» либо «клиент — группа — роль», а не только числовое поле конечного правила.
Совпадающие приоритеты имеют документированные дополнительные правила, которые не следует заменять случайным порядком JSON или отображения интерфейса. Для понятного сопровождения полезно заранее установить однозначный порядок и сохранять выгрузку фактических назначений. Добавление новой прямой роли может изменить результат без редактирования ACL существующей группы.
В приёмке проверяют разрешённый и запрещённый topic до и после изменения состава групп или прямых ролей на тестовом клиенте. Фиксируют первое сработавшее правило. Наличие deny где-либо в конфигурации не подтверждает, что именно оно определило результат конкретной проверки Dynamic Security.
Основание — Eclipse Mosquitto official unversioned documentation snapshot; Download index observed 2.1.2, разделы Concepts: Roles and Priorities. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Реальный брокер, его сборка, плагины и сеть не испытывались. Изменения конфигурации, учётных записей и прав не выполнялись; поддержку параметров проверяют по установленной версии.