Встроенная система ACL
Встроенная система ACL (Access Control List) позволяет устанавливать правила, которые определяют, какие операции могут выполнять клиенты в системе. Она проста в использовании и подходит для проектов с предсказуемым количеством правил и без частых изменений.
Плагин:
rmqtt-acl
Конфигурационный файл плагина:
plugins/rmqtt-acl.toml
Примечание:
Встроенная система ACL имеет самый низкий приоритет среди всех систем ACL. Другие системы ACL могут перекрывать её правила. Если необходимо отключить все правила, можно закомментировать их. После изменения файла правил необходимо перезапустить сервис RMQTT, чтобы изменения вступили в силу.
Встроенная система 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"]
]
$SYS/#
.$SYS/#
и #
.$SYS/#
и #
.Таким образом, основная цель встроенной системы ACL — ограничить доступ клиентов к системным темам $SYS/#
и универсальным темам #
.
В файле rmqtt-acl.toml
правила проверяются в порядке их написания.
#
используется для комментариев.allow
(разрешить) или deny
(запретить).{ user = "dashboard" }
: правило применяется только к пользователям с указанным именем.{ user = "dashboard", password = "123456", superuser = true }
: если первый элемент равен allow
, можно указать пароль или статус суперпользователя. Это правило будет применяться только к пользователям с указанными именем и паролем. Статус суперпользователя позволяет пропустить аутентификацию при последующей публикации или подписке сообщений.{ clientid = "dashboard" }
: правило применяется только к клиентам с указанным идентификатором.{ ipaddr = "127.0.0.1" }
: правило применяется только к клиентам с указанным IP-адресом.{ protocol = 4 }
: правило применяется только к версиям MQTT-протокола 3.1.1. Версии MQTT-протокола: 3=3.1, 4=3.1.1 или 5=5.0.{ user = "dashboard", protocol = 4 }
: правило применяется только к пользователям с указанным именем и версией протокола 3.1.1.all
: правило применяется ко всем пользователям.connect
(подключение), publish
(публикация), subscribe
(подписка), pubsub
(и публикация, и подписка) или all
(по умолчанию, все операции)."$SYS/#"
: фильтр тем; правило может совпадать с темами $SYS/#
, но не с /a/b/c
.{ eq = "#" }
: полное равенство символов; правило совпадает только с темой #
, а не /a/b/c
.{allow, all}
(разрешает все операции) и {deny, all}
(запрещает все операции).После внесения изменений в rmqtt-acl.toml
, они не будут автоматически применены к системе RMQTT. Необходимо выполнить следующую команду:
curl -X PUT "http://127.0.0.1:6060/api/v1/plugins/1/rmqtt-acl/config/reload"
Во встроенной системе rmqtt-acl.toml
в домене темы (четвёртый элемент правила) поддерживаются следующие заполнители:
%c
: клиентский идентификатор, который будет заменён реальным клиентским идентификатором при применении правила.%u
: имя пользователя клиента, которое будет заменено реальным именем пользователя при применении правила.Например:
["allow", "all", "pubsub", ["sensor/%c/ctrl"]]
Это правило разрешает клиенту с идентификатором light
подписываться и публиковать сообщения в теме sensor/light/ctrl
.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )