用户管理
在 RabbitMQ 中,用户是访问控制 (Access Control) 的基本单元 ,且单个用户可以跨越多个 vhost 进行授权。针对一至多个 vhost ,用户可以被赋予不同级别的访问权限,并使用标准的用户名和密码来认证用户。
创建用户的命令为 rabbitmqctl add_user {username} {password} 。其中 username 表示要创建的用户名称;password 表示创建用户登录的密码。
具体创建一个用户名为 root、 密码为 root123 的用户:
我已经创建了一个 root 用户,所以创建一个其他用户
root@81f22c059192:/# rabbitmqctl add_user test test1
Adding user "test" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
root@81f22c059192:/#
2
3
4
可以通过 rabbitmqctl change_password {username} {newpassword} 命令来更改指定用户的密码 , 其中 username 表示要变更密码的用户名称,newpassword 表示要变更的新的密码。
举例 ,将 root 用户 的密码变更为 root321:
root@81f22c059192:/# rabbitmqctl change_password test test2
Changing password for user "test" ...
root@81f22c059192:/#
2
3
同样可以清除密码,这样用户就不能使用密码登录了,对应的操作命令为 rabbitmqctl clear_password {username} ,其中 username 表示要清除密码的用户名称。
root@81f22c059192:/# rabbitmqctl clear_password test
Clearing password for user "test" ...
root@81f22c059192:/#
2
3
使用 rabbitmqctl authenticate_user {userηame} {password} 可以通过密码来验证用户,其中 username 表示需要被验证的用户名称, password 表示密码 。
下面示例中分别采用 root321 和 root322 来验证 root 用户 :
root@81f22c059192:/# rabbitmqctl authenticate_user root root
Authenticating user "root" ...
Success
root@81f22c059192:/# rabbitmqctl authenticate_user root root1
Authenticating user "root" ...
Error:
Error: failed to authenticate user "root"
user 'root' - invalid credentials
root@81f22c059192:/#
2
3
4
5
6
7
8
9
删除用户的命令是 rabbitmqctl delete_user {username} ,其中 username 表示要删除的用户名称。
删除 root 用户的示例如下:
root@81f22c059192:/# rabbitmqctl delete_user test
Deleting user "test" ...
root@81f22c059192:/#
2
3
rabbitmqctl list_users 命令可以用来罗列当前的所有用户 。每个结果行都包含用户名称,其后紧跟用户的角色 (tags)。
示例如下:
root@81f22c059192:/# rabbitmqctl list_users
Listing users ...
user tags
guest [administrator]
root [administrator]
2
3
4
5
用户的角色分为 5 种类型。
- none: 无任何角色。新创建的用户的角色默认为 none 。
- management: 可以访问 Web 管理页面。 Web 管理页面在 5.3 节中会有详细介绍 。
- policymaker: 包含 management 的所有权限,并且可以 管理策略 (Policy) 和参数 ( Parameter )。详细内容可参考 6.3 节。
- monitoring: 包含 management 的所有权限,并且可以看到所有连接、信道及节点相关的信息。
- administartor: 包含 monitoring 的所有权限,井且可以管理用户、 虚拟主机、权限、策略、参数等。 administator 代表了最高的权限 。
用户的角色可以通过 rabbitmqctl set_user_tags {username} {tag ... } 命令设置 。 其中 username 参数表示需要设置角色的用户名称;tag 参数用于设置 0 个、l 个或者多个的角色,设置之后任何之前现有的身份都会被删除。
示例如下 :
root@81f22c059192:/# rabbitmqctl set_user_tags root administrator
Setting tags for user "root" to [administrator] ...
root@81f22c059192:/# rabbitmqctl list_users
Listing users ...
user tags
guest [administrator]
root [administrator,monitoring]
root@81f22c059192:/#
2
3
4
5
6
7
8