1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mqtt-rs-rmqtt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
acl.md 6.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 14:56 2a97644

Внутренний ACL

Встроенный ACL устанавливает правила через файлы, которые просты и легковесны в использовании. Он подходит для проектов с предсказуемым количеством правил, без изменений или с небольшими изменениями требований.

Плагины:

rmqtt-acl

Файл конфигурации плагина:

plugins/rmqtt-acl.toml

Совет: встроенный ACL имеет самый низкий приоритет и может быть переопределён плагином ACL. Если вы хотите отключить его, вы можете закомментировать все правила. После изменения файла правил RMQTT Broker необходимо перезапустить, чтобы они вступили в силу.

Определение ACL

Встроенные правила ACL имеют самый низкий приоритет. Если после всех проверок ACL не было найдено совпадений, проверяется правило по умолчанию.

Файл правил описан в синтаксисе Toml:

rules = [
    # Разрешить пользователям «dashboard» подписываться на темы «$SYS/#»
    ["allow", { user = "dashboard" }, "subscribe", ["$SYS/#"]],
    # Разрешить клиенту с IP-адресом «127.0.0.1» публиковать/подписываться на темы «$SYS/#» или «#»
    ["allow", { ipaddr = "127.0.0.1" }, "pubsub", ["$SYS/#", "#"]],
    # Запретить «Всем пользователям» подписываться на темы «$SYS/#», «#»
    ["deny", "all", "subscribe", ["$SYS/#", { eq = "#" }]],
    # Разрешить любым другим клиентам подключаться и выполнять операции публикации/подписки
    ["allow", "all"]
]
  1. Первое правило разрешает клиентам с именем пользователя dashboard подписываться на тему $SYS/#, что делает особый случай для третьего правила.
  2. Второе правило разрешает клиентам с IP-адресом 127.0.0.1 публиковать / подписываться на темы $SYS/# или #, что делает особый случай для третьего правила.
  3. Третье правило запрещает всем клиентам подписываться на темы $SYS/# и #.
  4. Четвёртое правило позволяет клиентам подключаться и публиковать/подписывать все темы.

Можно видеть, что правило по умолчанию в основном ограничивает права клиента на системную тему $SYS/# и на все подстановочные темы #.

Написание правил rmqtt-acl.toml

Правила в файле rmqtt-acl.toml сопоставляются сверху вниз в порядке написания.

  • Строчные комментарии обозначаются как #.
  • Каждое правило состоит из четырёх кортежей.
  • Первая позиция кортежа указывает, что после успешного выполнения правила выполняется операция управления разрешениями. Возможные значения:
    • allow
    • deny
  • Вторая позиция кортежа обозначает пользователя, на которого действует правило. Может использоваться формат:
    • { user = "dashboard"}: правило действует только для пользователей, чьё имя пользователя — dashboard
    • {user = "dashboard", password = "123456", superuser = true}: указывает, что правило действует для пользователей с именем пользователя «dashboard» и паролем «123456»; superuser указывает, что этот пользователь является суперпользователем и будет пропускать аутентификацию при публикации/подписке на сообщения.
    • {clientid = "dashboard"}: правило действует только для пользователей, чей ClientId — dashboard
    • {ipaddr = "127.0.0.1"}: правило действует только для пользователей, у которых исходный адрес — «127.0.0.1».
    • {protocol = 4}: правило действует только для пользователей MQTT версии протокола 4 (3.1.1). Версия протокола MQTT: 3 = 3.1, 4 = 3.1.1 или 5 = 5.0
    • {user = "dashboard", protocol = 4}: правило действует только для пользователей с именем пользователя «dashboard» и версией протокола MQTT 4 (3.1.1)
    • all: правило действует для всех пользователей.
  • Третья позиция кортежа означает операцию, контролируемую правилом, с возможным значением:
    • connect: правило применяется к операциям CONNECT.
    • publish: правило применяется к операциям PUBLISH.
    • subscribe: правило применяется к операциям SUBSCRIBE.
    • pubsub: правило применяется как к операциям PUBLISH, так и к операциям SUBSCRIBE.
    • all — правило применяется ко всем операциям (по умолчанию).
  • Четвёртая позиция кортежа означает список тем.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mqtt-rs-rmqtt.git
git@api.gitlife.ru:oschina-mirror/mqtt-rs-rmqtt.git
oschina-mirror
mqtt-rs-rmqtt
mqtt-rs-rmqtt
master