用户身份识别
为提高数据安全性,云消息队列 RocketMQ 版服务端会在客户端接入时对客户端进行身份验证,仅通过验证的客户端才能连接服务端进行消息收发。同时云消息队列 RocketMQ 版支持ACL身份识别,您可以按需为指定ACL用户赋予具体的Topic或Group的发布订阅权限,实现客户端权限的精细化控制。
使用限制
按量付费实例和包年包月实例使用用户身份识别功能需要提交工单申请开通,申请通过后控制台才会出现访问控制的操作入口。
功能原理
云消息队列 RocketMQ 版的访问控制支持智能身份识别和ACL身份识别两种类型,云消息队列 RocketMQ 版实例需要至少选择其中一种访问控制类型,用于控制客户端接入服务端时的认证方式。具体操作,请参见设置访问控制类型。
智能身份识别:实例默认的认证方式,客户端访问时服务端会根据用户名密码进行认证,仅通过认证的客户端可接入云消息队列 RocketMQ 版服务端进行消息收发。
ACL身份识别:若您需要更精确的权限控制,可以为实例开启ACL身份识别,该方式不仅可以对客户端身份进行识别,还支持对实例下的具体Topic和Group资源进行权限控制。
若两种认证方式都选择:按照客户端填写的用户名密码进行自动匹配,用户名匹配为实例默认用户名则按照智能身份识别进行认证;用户名匹配为ACL自定义用户名,则按照ACL身份识别进行认证。
(实例默认配置)智能身份识别
智能身份识别的具体认证流程如下:
智能身份识别方式下,VPC访问支持免身份识别,系统会根据VPC接入点智能识别用户身份,无需设置用户名密码。
若使用公网访问,或关闭免身份识别功能,则客户端接入时,必须在客户端代码中设置用户名密码。
系统会为每个实例初始化生成一个唯一的默认用户名密码,智能身份识别方式下,客户端中需要设置的用户名密码即为待访问实例的默认用户名密码。获取方式,请参见获取实例的默认用户名密码。
实例默认的用户名具备访问该实例下所有Topic和Group的消息发送和订阅权限,即客户端使用系统默认用户名密码通过认证后,可使用实例下的所有Topic和Group进行消息收发。
ACL身份识别
ACL身份识别的具体认证流程如下:
设置访问控制类型
登录云消息队列 RocketMQ 版控制台,在左侧导航栏单击实例列表。
在顶部菜单栏选择地域,如华东1(杭州),然后在实例列表中,单击目标实例名称。
在左侧导航栏单击访问控制,然后在访问控制类型后单击编辑。
在弹出的提示框中勾选智能身份识别、ACL身份识别至少一种访问控制类型,然后单击确定。
智能身份识别相关操作
仅当访问控制类型勾选智能身份识别时,控制台才显示智能身份识别相关操作入口。
修改系统默认用户名密码、禁用用户名会导致使用默认用户名密码进行认证的客户端无法访问云消息队列 RocketMQ 版实例,请谨慎操作。
设置内网免身份识别
内网免身份识别开启时(默认状态):通过VPC访问的客户端可以不用设置用户名密码,系统通过客户端访问接入点智能识别用户身份;公网访问需要客户端设置用户名密码,用于服务端验证客户端身份。
内网免身份识别关闭时:VPC访问和公网访问场景下,客户端都需要设置用户名密码。
操作入口
登录云消息队列 RocketMQ 版控制台,在左侧导航栏单击实例列表。
在顶部菜单栏选择地域,如华东1(杭州),然后在实例列表中,单击目标实例名称。
在左侧导航栏单击访问控制,然后单击智能身份识别页签。
在内网免身份识别功能开关后选择开启或关闭该功能。
获取实例的默认用户名密码
当实例的访问控制类型为智能身份识别时,公网访问或VPC访问关闭内网免身份识别场景下,客户端消息收发代码中需要填写实例的默认用户名密码。
操作入口
在访问控制页面单击智能身份识别页签。
在用户名列表中查看实例的默认用户名并复制实例密码。
ACL身份识别相关操作
使用ACL身份识别进行访问控制时,您需要创建ACL用户,并且为ACL用户授予指定资源的权限,新创建的ACL用户默认没有任何资源的权限。
客户端在进行连接时,需要设置已创建并授权的ACL用户和密码,用于服务端对客户端进行身份认证,认证通过后,客户端只可以使用ACL权限范围内的资源进行消息收发。
仅当访问控制类型勾选ACL身份识别时,控制台才显示ACL用户和ACL权限相关操作入口。
禁用或删除ACL用户名会导致使用该ACL用户名密码进行认证的客户端无法访问云消息队列 RocketMQ 版实例,请谨慎操作。
创建ACL用户
操作入口
登录云消息队列 RocketMQ 版控制台,在左侧导航栏单击实例列表。
在顶部菜单栏选择地域,如华东1(杭州),然后在实例列表中,单击目标实例名称。
在左侧导航栏单击访问控制,然后单击ACL用户页签。
在ACL用户页面单击新增用户,在弹出的面板中输入相关参数完成创建。
批量创建ACL用户
若您需要创建多个ACL用户,可以通过导出/导入模板的方式快速批量创建。
若当前实例下的ACL用户列表为空,则无法导出ACL用户模板,您可以先创建一个ACL用户,导出模板后,在模板中填写需要批量创建的ACL用户信息,然后再通过导入模板完成批量创建。
导入模板时,可选择是否覆盖已存在的用户:
若覆盖已存在用户功能关闭,待导入模板中的ACL用户已存在时,该ACL用户数据导入失败;
若覆盖已存在用户功能开启,待导入模板中的ACL用户已存在时,系统将按照模板中的内容重新更新该ACL用户信息。
模板字段说明如下:
模板参数 | 说明 | 取值规范 |
Username | 待创建ACL的用户名。 |
|
Password | 待创建ACL的用户密码。 | 长度限制为3~64个字符。 |
AccountStatus | 用户名密码的可用状态。 |
|
模板内容示例如下:
Username | Password | AccountStatus |
user1 | xxx | ENABLE |
user2 | xxx | DISABLE |
user3 | xxx | ENABLE |
操作入口
在访问控制页面单击ACL用户页签。
在ACL用户页面单击导出文件或导入文件。
为ACL用户授权
操作入口
在访问控制页面单击ACL权限页签,然后单击添加权限。
在添加权限面板填写相关参数,然后单击确定。
ACL用户授权参数
参数
说明
示例
用户名
在下拉框中选择已创建的ACL用户,表示需要为哪个ACL用户授权。
user_mq
资源类型
TOPIC:为用户授予Topic级别权限。
GROUP:为用户授予Group资源权限。
TOPIC
资源名
指定授予权限的资源范围,根据资源类型输入Topic名称或Group名称。该参数支持以下设置方式
输入指定资源名称,表示只对该用户授予这一个Topic或Group的操作权限。
输入*表示进行全部资源匹配,表示授予该ACL用户实例下所有Topic或Group的操作权限。
输入字符加*进行后模糊匹配,将匹配上的资源的操作权限授予该ACL用户。
normal_topic
操作类型
表示需要对指定资源进行哪些操作。当资源类型为GROUP时,操作类型仅支持读取。
写入:表示被授予权限的ACL用户拥有指定Topic的消息发送权限。
读取:表示被授予权限的ACL用户拥有指定Topic或Group的消息订阅权限。
写入
IP白名单
设置允许访问资源的客户端IP地址或IP地址段,多个IP地址或地址段之间以英文分号(;)或者逗号(,)隔开。
若不设置,则表示不对客户端IP地址进行限制。
192.168.xx.xx
决策
允许
拒绝
说明当某个资源同时被授予了允许和拒绝的权限策略,则优先拒绝的策略生效。
允许
如上表中的参数示例值所示,表示某客户端在接入服务端时,可使用ACL用户名user_mq及其用户密码进行身份认证,即在客户端消息收发代码中设置ACL用户名密码,若该客户端的IP地址为IP白名单中的192.168.xx.xx,则该客户端允许接入服务端进行消息收发。
该客户端接入后,只能向名称为normal_topic的Topic中发送消息,不能对实例下的其他Topic或Group资源进行操作。
批量为ACL用户授权
若您需要创建多个ACL权限,可以通过导出/导入模板方式快速批量创建。
若当前实例下的ACL权限列表为空,则无法导出ACL权限模板,您可以先创建一个ACL权限,导出模板后,在模板中填写需要批量创建的ACL权限信息,然后再通过导入模板完成批量创建。
导入模板时,可选择是否覆盖已存在的ACL权限,系统以用户名+资源类型+资源名为依据判断是否是同一条ACL权限记录:
若覆盖已存在权限功能关闭,待导入模板中的ACL权限已存在时,该ACL权限数据导入失败,系统不会修改已有的ACL权限数据。
若覆盖已存在权限功能开启,待导入模板中的ACL权限已存在时,系统将按照模板中的内容重新更新该ACL权限信息。
模板字段说明如下:具体参数取值规范,请参见上文ACL用户授权参数。
模板参数 | 说明 |
Username | 待授权的ACL用户名。 填写的ACL用户名必须为已创建的ACL用户。 |
ResourceType | 待授权的资源类型。 |
ResourceName | 待授权的资源名称。 |
Actions | 表示需要对指定资源进行哪些操作。
|
SourceIps | 设置允许访问资源的客户端IP地址或IP地址段 |
Decision | 授予的权限决策。
|
模板内容示例如下:
Username | ResourceType | ResourceName | Actions | SourceIps | Decision |
user1 | TOPIC | topic_normal | PUB | 0.0.0.0/0 | Allow |
user2 | TOPIC | * | PUB|SUB | 0.0.0.0/0 | Allow |
user3 | GROUP | Group_a | SUB | 192.168.xx.xx | Deny |
操作入口
在访问控制页面单击ACL权限页签。
在ACL权限页面单击导出文件或导入文件。
获取ACL用户名密码
使用ACL身份识别进行访问控制时,不管是VPC访问还是公网访问,都需要客户端设置ACL用户名和密码,用于服务端对客户端身份进行认证。
操作入口
在左侧导航栏单击访问控制,然后单击ACL用户页签。
在ACL用户页面的用户列表中查看已创建的ACL用户并复制密码。
- 本页导读