在RabbitMQ中,用户是访问控制(Access Control)的基本单元,且单个用户可以跨越多个vhost进行授权。针对一至多个vhost,用户可以被赋予不同级别的访问权限,并使用标准的用户名和密码来认证用户。
创建用户的命令为:rabbitmqctl add_user {username} {password}。其中username表示要创建的用户名称;password表示创建用户登录的密码。具体创建一个用户名为root、密码为root123的用户:
[root@node1 ~]# rabbitmqctl add_user root root123
Creating user "root"
可以通过rabbitmqctl change_password {username} {newpassword}命令来更改指定用户的密码,其中username表示要变更密码的用户名称,newpassword表示要变更的新的密码。举例,将root用户的密码变更为root321:
[root@node1 ~]# rabbitmqctl change_password root root321
Changing password for user "root"
同样可以清除密码,这样用户就不能使用密码登录了,对于的操作命令为:rabbitmqctl clear_password {username},其中username表示要清楚密码的用户名称。
使用rabbitmqctl authenticate_user {username} {password}可以通过密码来验证用户,其中username表示需要被验证的用户名称,password表示密码。下面示例中分别采用root321和root322来验证root用户:
[root@node1 ~]# rabbitmqctl authenticate_user root root321
Authenticating user "root"
Success
[root@node1 ~]# rabbitmqctl authenticate_user root root322
Authenticating user "root"
Error: failed to authenticate user "root"
删除用户的命令是:rabbitmqctl delete_user {username},其中username表示要删除的用户名称。删除用户root的示例如下:
[root@node1 ~]# rabbitmqctl delete_user root
Deleting user "root"
rabbitmqctl list_users命令可以用来罗列当前的所有用户。每个结果行都包含用户名称,其后紧跟用户的角色(tags)。示例代码如下:
[root@node1 ~]# rabbitmqctl list_users
Listing users
guest [administrator]
root []
用户的角色分为5种类型:
- none:无任何角色。新创建的用户的角色默认为none。
- management:可以访问Web管理页面。Web管理页面在5.3章节中会有详细介绍。
- policymaker:包含management的所有权限,并且可以管理策略(policy)和参数(parameter)。详细参考5.5章节。
- monitoring:包含management的所有权限,并且可以看到所有连接(connections)、信道(channels)以及节点相关的信息。
- administartor:包含monitoring的所有权限,并且可以管理用户、虚拟主机、权限、策略、参数等等。administator代表了最高的权限。
用户的角色可以通过rabbitmqctl set_user_tags {username} {tag …}命令设置。其中username参数表示需要设置角色的用户名称;tag参数用于设置0个、1个或者多个的角色,设置之后任何之前现有的身份都会被删除。使用示例如下:
[root@node1 ~]# rabbitmqctl set_user_tags root monitoring
Setting tags for user "root" to [monitoring]
[root@node1 ~]# rabbitmqctl list_users -q
guest [administrator]
root [monitoring]
[root@node1 ~]# rabbitmqctl set_user_tags root policymaker -q
[root@node1 ~]# rabbitmqctl list_users -q
guest [administrator]
root [policymaker]
[root@node1 ~]# rabbitmqctl set_user_tags root
Setting tags for user "root" to []
[root@node1 ~]# rabbitmqctl list_users -q
guest [administrator]
root []
[root@node1 ~]# rabbitmqctl set_user_tags root policymaker,management
Setting tags for user "root" to ['policymaker,management']
[root@node1 ~]# rabbitmqctl list_users -q
guest [administrator]
root [policymaker,management]