MQTT Security - как запретить пользователям, подписывающимся на темы?
Теперь у меня есть все настройки и работа для MQTT. Я использую IBM wmqtt.jar и брокера Mosquitto.
Мой Java-сервлет создает MQTTConnection для брокера и публикуется в разделе "AndroidDeviceID/myAppName"..
Клиент Android подписался на эту тему...
Мне кажется, что если бы кто-нибудь знал имя устройства моего пользователя, они могли бы создать простое приложение для Android и подписаться на эту тему в моем брокере MQTT. Затем они получают от моих пользователей все уведомления (в данном случае сообщения о мгновенных сообщениях).
Как это правильно избежать?
Ответы
Ответ 1
Mosquitto обеспечивает безопасность через аутентификацию имени пользователя и пароля, а также ограничение доступа к темам с списками контроля доступа. На странице руководства mosquitto.conf есть подробные сведения: http://mosquitto.org/man/mosquitto-conf-5.html
Ответ 2
ACL ограничивает доступ клиентов к темам, для этого я использую auth-plugin, вот ссылка mosquitto auth plugin
Ответ 3
В целом, MQTT сохраняет безопасность очень "легкой", поскольку она была первоначально разработана для использования с закрытыми сетями датчиков. Реализация брокера заключается в том, чтобы обеспечить, например, SSL и решить, как обращаться с бэкэндом имени пользователя/пароля.
Шифрование данных сообщений вряд ли когда-либо будет предоставлено самим протоколом и что-то, что обычно выполняется на прикладном уровне, если это важно.
Ответ 4
Если вам нужен более индивидуальный способ управления доступом и разрешения тем, попробуйте использовать брокера HiveMQ MQTT. Как описано в документации, вы можете реализовать свое поведение с помощью плагина. Такой подход позволяет вам полностью решить, как обрабатываются аутентификация и авторизация клиентов, публикуются и подписываются [1]. Если вас интересует, лучший способ начать с вашего собственного плагина описан здесь [2].
Кстати, также очень легко настроить TLS для HiveMQ [3].
Christian
(Команда HiveMQ)
[1] http://www.hivemq.com/docs/plugins/1.5.0/#auth-permission-chapter
[2] http://www.hivemq.com/documentations/getting-started-plugins/
[3] http://www.hivemq.com/docs/hivemq/1.5.0/#hivemqdocs_ssl_tls
Ответ 5
Другим хорошим примером настройки ACL для ограничения тем является Настройка и проверка ограничений тем Mosquitto MQTT.