多租户与权限
RabbitMQ服务器可以创建多个虚拟消息服务器(vhost),每一个vhost本质上是独立的小型RabbitMQ服务器,拥有独立的队列、交换器、绑定管理、权限控制等等,vhost之间是绝对隔离的。
-
添加vhost
rabbitmqctl add_vhost vhost1
-
查看vhost列表
rabbitmqctl list_vhosts
-
删除vhost –此操作会删除其下所有队列、交换器、绑定管理、权限等信息
rabbitmqctl delete_vhost vhost1
-
添加用户
rabbitmqctl add_user [username] [password]
-
变更用户密码
rabbitmqctl change_password [username]
-
验证用户密码
rabbitmqctl authenticate_user [username] [password]
-
删除用户
rabbitmqctl delete_user [username]
-
查看用户列表
rabbitmqctl list_users
-
授权–在RabbitMQ中vhost是权限控制的最小单位
rabbitmqctl set_permissions [-p vhost] [user] [conf] [write] [read] 解释: vhost:要授权的vhost user:要被授权的用户名 conf:对该vhost某些资源配置权限正则表达式(如:创建、删除队列) write:对该vhost某些资源可写权限正则表达式(如:发布消息等) read:对该vhost某些资源可读权限正则表达式(如:读取、清空队列等与消息相关的操作) 示例: - 全部权限 rabbitmqctl set_permissions -p vhost1 user1 ".*" ".*" ".*" - 某个资源配置权限及读写权限 rabbitmqctl set_permissions -p vhost1 user1 "^queue.*" ".*" ".*" - 某个资源配置权限及读权限 rabbitmqctl set_permissions -p vhost1 user1 "^queue.*" "" ".*"
-
取消授权
rabbitmqctl clear_permissions [-p vhost] [username]
-
查看vhost授权情况
rabbitmqctl list_permissions [-p vhost]
-
查看用户授权情况
rabbitmqctl list_user_permissions [username]
-
用户角色分类
- none:无任何角色;
- management:可访问web管理界面;
- policymaker:除management之外还可管理策略和参数;
- monitoring:除manaement之外可查看所有连接、信道及节点相关信息;
- administrator: 除monitoring之外可管理用户、虚拟主机、权限、策略、参数等等,是最高权限。
-
用户授予角色
rabbitmqctl set_user_tags [username] [roles] 示例: rabbitmqctl set_user_tags user1 management rabbitmqctl set_user_tags user1 policymaker,monitoring
-
插件管理
查看插件 rabbitmq-plugins list 启用插件 rabbitmq-plugins enable rabbitmq_management 禁用插件 rabbitmq-plugins disable rabbitmq_management
PS:插件列表显示为 [E*] 是显示启动,[e*] 是隐式启动,插件显示启动有时会隐式启动若干插件。