mosquitto ACL 限制客户端
mosquitto ACL to restrict client
我有使用 TLS 的 mosquitto,我想添加 ACL 来限制客户端访问 reading/writing/creating 个主题。
所有客户端发布到 /device/registration
主题,客户端应该只订阅客户端特定主题 /device/certificate/<client_id>
,为此我在 ACL 文件中有这个
mosquitto.acl
topic write /device/registration
pattern read /device/certificate/%c
如何将后端进程(backend-app
客户端)添加到 read/write 所有这些主题?
还完全禁止所有客户端订阅主题 $SYS/#
并使用任何名称创建任何其他主题?
好的,所以 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
设置在文件集中指定 user/passwords。 (但是,如果您要动态添加 users/devices,最好考虑使用 auth_plugin
设置从可以轻松更新的数据库访问 ACL/User/Password 详细信息。)
User/password 用于设备授权比仅使用 client_id 更好,因为没有什么可以阻止某人将他们的 client_id 设置为与其他人匹配的那个。
我有使用 TLS 的 mosquitto,我想添加 ACL 来限制客户端访问 reading/writing/creating 个主题。
所有客户端发布到 /device/registration
主题,客户端应该只订阅客户端特定主题 /device/certificate/<client_id>
,为此我在 ACL 文件中有这个
mosquitto.acl
topic write /device/registration
pattern read /device/certificate/%c
如何将后端进程(backend-app
客户端)添加到 read/write 所有这些主题?
还完全禁止所有客户端订阅主题 $SYS/#
并使用任何名称创建任何其他主题?
好的,所以 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
设置在文件集中指定 user/passwords。 (但是,如果您要动态添加 users/devices,最好考虑使用 auth_plugin
设置从可以轻松更新的数据库访问 ACL/User/Password 详细信息。)
User/password 用于设备授权比仅使用 client_id 更好,因为没有什么可以阻止某人将他们的 client_id 设置为与其他人匹配的那个。