蚊子的ACL,以限制客户端

问题描述 投票:0回答:1

我有一个TLS工作的mosquitto,想添加ACL来限制客户端读写创建主题。

所有客户端发布到 /device/registration 主题,客户机只能订阅客户机特定的主题。/device/certificate/<client_id>为此,我在ACL文件中设置了以下内容。

mosquitto.acl

topic write /device/registration
pattern read /device/certificate/%c

如何添加后台流程(backend-app 客户端)对所有这些主题进行读写?

同时完全禁止所有客户端订阅话题 $SYS/# 和创建任何其他名称的主题?

mqtt mosquitto
1个回答
1
投票

好的,所以ACL文件通常会对特定的用户应用规则,每个用户的规则集由前导决定。user <username> 的条目。

第一条之前的任何规则 user <username> 条目应用于任何匿名用户(假设 allow_anonymous true 是在配置文件中)。)

目前,你的规则适用于所有匿名用户。

为后台服务添加规则的最简单的方法是让它作为一个特定的用户登录,并有一个明确的规则来允许该用户。

topic write /device/registration
pattern read /device/certificate/%c

user backend-app
pattern readwrite #

这将允许 backend-app 用户可以同时发布和订阅任何主题。你可以在文件中指定用户密码,并使用 password_file 设置。(但是如果你要动态地添加用户设备,那么最好是使用 auth_plugin 的设置来访问数据库中的ACLUserPassword细节,并且可以很容易地更新。)

使用Userpassword进行设备授权比只使用client_id更好,因为没有什么可以阻止某人将他们的client_id设置为与任何人相匹配的密码。

© www.soinside.com 2019 - 2024. All rights reserved.