EMQX 4.3版本用户认证方式的差别以及鉴权方式mysql acl

  1. AMD64=linux-64bit=X86
  2. ARM64=linux-Aarch64=ARM
  3. windows 64bit指代的是X86_64=X86

安装之前确认服务器系统和架构,找适合自己的系统的结构。

emqx安装依赖于openssl 和erlang
先yum安装一下

yum install openssl-1.1.1

由于新机器默认是1.0.2的版本,需要升级为1.1.1

openssl version # 查看当前openssl版本

 yum install erlang

一、4.3版本之前的用户名密码验证配置

第一:4.3之前的版本是修改配置文件/etc/emqx/emqx.conf中allow_anonymous为false,关闭匿名用户登录。

#禁止匿名登录,allow_anonymous默认是true
vim /etc/emqx/emqx.conf
## Value: true | false
allow_anonymous = false

第二:Emqx4.3版本之前存在一个emqx_auth_username扩展,可以通过启动emqx_auth_username插件模块修改其配置实现账号密码验证。进行如下操作即可使用。

#命令添加账号密码或者编辑配置文件
emqx_ctl users add admin public
#编辑用户名密码配置文件
vim /etc/emqx/plugins/emqx_auth_username.conf
## username 认证数据
auth.user.2.username = admin
auth.user.2.password = public
## Password hash
auth.user.password_hash = sha256

  #导入插件模块

  cd /usr/lib/emqx/bin sh emqx_ctl plugins load emqx_auth_username

或者./bin/emqx plugins load emqx_auth_username

二:4.3版本之后的用户名密码验证配置

备注:Emqx4.3版本之后不一样了,官方文档:版本发布 | EMQX 文档 里有注明4.3版本中emqx_auth_clientid 与 emqx_auth_usernmae 合并为 emqx_auth_mnesia。emqx_auth_username模块从此废弃。在Emqx4.3版中加载emq_auth_username插件会报不存在的错误,所以不要再去寻找安装emqx_auth_username模块了。直接修改emqx_auth_mnesia.conf模块配置文件,添加账号密码。

第一:关闭匿名访问登录。修改配置文件/etc/emqx/emqx.conf中allow_anonymous为false,

#禁止匿名登录,allow_anonymous默认是true

vim /etc/emqx/emqx.conf

## Value: true | false

allow_anonymous = false

第二:配置中增加用户明密码配置./etc/plugins/emqx_auth_mnesia.conf

# etc/plugins/emqx_auth_mnesia.conf

## clientid 认证数据 auth.client.1.clientid = admin auth.client.1.password = public

## username 认证数据

auth.user.2.username = admin

auth.user.2.password = public

## Value: plain | md5 | sha | sha256

auth.mnesia.password_hash = sha256  密码方式自己选

第三: 加载插件,或者直接重启emqx ./bin/emqx restart

目前启动插件有以下四种方式:

  1. 默认加载
  2. 命令行启停插件
  3. 使用 Dashboard 启停插件
  4. 调用管理 API 启停插件

第四:最好将需要一直开启的插件,加在插件文件里,防止漏启,实际上执行启动插件后,会自动加载在此配置文件中。

接下来就用工具mqttx客户端自己去测试效果吧

三:emqx使用mysql来鉴权,控制哪些客户端可以连接到平台 


第一 . 关闭匿名访问登录

第二. 修改mysql配置文件 ./emqx/etc/plugins/emqx_auth_mysql.conf

EMQX 4.3版本用户认证方式的差别以及鉴权方式mysql acl_第1张图片

# etc/plugins/emqx_auth_mysql.conf

## 不加盐,仅做哈希处理
auth.mysql.password_hash = sha256

## salt 前缀:使用 sha256 加密 salt + 密码 拼接的字符串
auth.mysql.password_hash = salt,sha256

## salt 后缀:使用 sha256 加密 密码 + salt 拼接的字符串
auth.mysql.password_hash = sha256,salt

## pbkdf2 with macfun iterations dklen
## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512
## auth.mysql.password_hash = pbkdf2,sha256,1000,20

 3. 保存,创建数据库,创建表 。然后加载插件 ./bin/emqx_ctl plugins load emqx_auth_mysql

切记:没有数据库表存在,加在插件会报错。

超级用户可以跳过acl权限控制

生成mqtt_user表的执行语句,看这个:

MySQL 认证 | EMQX 文档https://www.emqx.io/docs/zh/v4.4/advanced/auth-mysql.html#mysql-%E8%BF%9E%E6%8E%A5%E4%BF%A1%E6%81%AF

emqx鉴权方式mysql完成之后,配置订阅acl策略。操作步骤

1. 修改配置文件./emqx/etc/emqx.conf 文件

EMQX 4.3版本用户认证方式的差别以及鉴权方式mysql acl_第2张图片

1. 修改配置文件./emqx/etc/acl.conf 文件,可以在配置文件中修改策略,注释允许订阅所有主题的配置

EMQX 4.3版本用户认证方式的差别以及鉴权方式mysql acl_第3张图片

EMQX 4.3版本用户认证方式的差别以及鉴权方式mysql acl_第4张图片

3. 根据需要修改订阅规则,以及在acl表中增加用户订阅topic

# 修改配置文件连接数据库 etc/plugins/emqx_auth_mysql.conf
EMQX 4.3版本用户认证方式的差别以及鉴权方式mysql acl_第5张图片
auth.mysql.super_query = select is_superuser from mqtt_user where username = '%u' limit 1

 参考:EMQX 启用MySQL ACL 权限控制功能_猿又圆的博客-CSDN博客_启动emqx

4. 完成配置后使用 emqx restart 重启emqx broker服务才能生效

超级用户 SQL(super_query):
进行 ACL 鉴权时,EMQ X 将使用当前客户端信息填充并执行用户配置的超级用户 SQL,查询客户端是否为超级用户。客户端为超级用户时将跳过 ACL SQL

创建mqtt_ctl表

CREATE TABLE `mqtt_acl` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `allow` int(1) DEFAULT 1 COMMENT '0: deny, 1: allow',
  `ipaddr` varchar(60) DEFAULT NULL COMMENT 'IpAddress',
  `username` varchar(100) DEFAULT NULL COMMENT 'Username',
  `clientid` varchar(100) DEFAULT NULL COMMENT 'ClientId',
  `access` int(2) NOT NULL COMMENT '1: subscribe, 2: publish, 3: pubsub',
  `topic` varchar(100) NOT NULL DEFAULT '' COMMENT 'Topic Filter',
  PRIMARY KEY (`id`),
  INDEX (ipaddr),
  INDEX (username),
  INDEX (clientid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • username 为客户端连接的时候指定的用户名,此处的值如果设置为 $all 表示该规则适用于所有的用户
  • password 为使用 salt 加密后的密文
  • salt 为加密串
  • is_superuser 是否为超级用户,用于控制 ACL,缺省为0;设置成 1 的时候为超级用户,可以跳过 ACL 检查

四,emqx.conf常用配置功能

第一:配置最大允许连接数和池

EMQX 4.3版本用户认证方式的差别以及鉴权方式mysql acl_第6张图片

第二:匿名访问登录关闭

第三:系统调优---emqx百万连接测试系统、网络、erlang虚拟机参数调优

./etc/emqx.conf文件修改如下配置

 ## Erlang Process Limit
node.process_limit = 2097152
 
## Sets the maximum number of simultaneously existing ports for this system
node.max_ports = 1048576

你可能感兴趣的:(mqtt,vim,编辑器,linux)