Skip to content

默认授权

客户端授权用于控制 MQTT 客户端的发布和订阅权限。默认授权基于内置的数据库,为用户提供了一种低成本、开箱即用的授权方式。本文将详细介绍如何添加或导入授权信息,管理授权信息以及如何使用占位符、白名单实现更高级的权限控制。

添加授权信息

提示

内置授权的最大条目数为部署连接数的两倍,上限是 10w。若超过此限额,请使用外部授权。

点击部署左侧菜单中的访问控制 -> 客户端授权,在客户端授权页面上选择 + 添加,新增授权会根据当前所处的分类来新建授权信息。授权可以在以下三个层级进行权限控制:

  1. 客户端 ID:对特定客户端 ID 进行授权验证。
  2. 用户名:对特定用户名进行授权验证。
  3. 全部用户:对所有用户基于主题进行授权验证。

新增客户端 ID 授权

客户端 ID 标签下创建指定相关客户端 ID 的授权规则。

  • 客户端 ID:适用此条规则的客户端。
  • 主题:配置该条规则对应的主题。
  • 动作:配置该条规则对应的操作。可选值:发布订阅发布 & 订阅
  • 权限:是否允许当前客户端操作请求;可选值:允许不允许

新增用户名授权

用户名标签下创建指定相关用户名授权规则。

  • 用户名:适用此条规则的用户名。
  • 主题:配置该条规则对应的主题。
  • 动作:配置该条规则对应的操作。可选值:发布订阅发布 & 订阅
  • 权限:是否允许当前用户操作请求;可选值:允许不允许

新增主题授权

全部用户标签下创建指定主题授权规则。

  • 主题:配置该条规则对应的主题。
  • 动作:配置该条规则对应的操作。可选值:发布订阅发布 & 订阅。
  • 权限:是否允许当前主题操作请求;可选值:允许不允许

使用占位符

您可以在设置主题时使用占位符,在匹配规则时将当前客户端信息等动态替换到主题中,支持的占位符如下:

  • ${clientid}
  • ${username}

如果您想要限制所有用户只允许订阅或者发布特定主题,可以类似这样填写:

  • 用户名 ${username},主题 xx/${username}/report
  • 客户端ID ${clientid},主题 xx/${clientid}/report

add_acl

占位符只能用于替换主题的整个字段,例如 a/b/${username}/c/d,但是不能用于替换字段的一部分,例如 a/b${username}c/d

批量导入授权信息

您可以使用提供的 CSV 模板批量导入授权信息(对全部用户配置授权时不支持导入)。导入字段说明如下:

  • clientid:客户端 ID
  • username:用户名
  • topic:授权的主题
  • action:动作(sub/pub/pubsub)
  • access:是否允许(allow/deny)

您可以按以下步骤批量导入授权信息:

  1. 点击导入按钮。

  2. 下载模板。模板示例文件(client ID 授权模板为例)如下图所示:

    auth_csv

  3. 填写授权信息后上传文件。

  4. 点击导入

查看授权信息

当您完成了授权信息的添加,您可以在客户端授权页面中看到授权信息。授权条目的详细信息可以通过客户端 ID, 用户名全部用户(主题)的三个维度来查看。

编辑授权信息

点击授权信息右侧的编辑图标,可以修改当前授权信息。

删除授权信息

点击授权信息右侧的删除图标,可以对授权信息进行删除。

开启授权白名单模式

开启白名单模式后,会默认禁止所有用户订阅和发布。需要为客户端设置授权信息,客户端才能进行订阅发布。

客户端授权页面的全部用户页签下添加一条授权信息,主题中输入 #主题动作选择发布 & 订阅权限选择不允许,点击确认开启白名单模式。

acl_deny_all

提示

  • 默认情况下,授权采用黑名单模式(即默认允许所有订阅和发布操作)。
  • 授权的匹配顺序为:全部用户权限控制 -> 用户名/客户端权限控制。
  • 客户端 ID/用户名与主题的组合是唯一的,对于同一客户端 ID/用户名与主题的多条记录,仅最新一条记录有效。
  • 如果您添加了扩展授权数据源,请确保在扩展授权页面的授权排序中将“默认授权”排在最后,以启用白名单模式。

查看授权统计

点击页面右上方的授权统计图标可以查看授权的指标统计和速率统计。

new_authentication