文章内容

2019/12/14 11:28:32,作 者: 黄兵

RabbitMQ用户权限管理以及vhost

上一篇文章讲解了RabbitMQ的用户管理,这一篇文章介绍RabbitMQ用户权限管理以及vhost。

每一个RabbitMQ都能创建虚拟消息服务器,我们称之为虚拟主机(vhost)。


每一个vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的交换器、队列和绑定……更重要的是他有自己的权限机制。这使得你可以安全的使用RabbitMQ服务器来服务众多应用程序。vhost之于RabbitMQ就像虚拟机之于物理服务器一样:他们通过在各个实例间提供逻辑上分离,允许你为不同应用程序安全保密的运行数据。

vhost的权限控制非常独特,他们是AMQP中唯一无法通过AMQP协议创建的基元(不同于队列,交换器和绑定)。

创建vshot,执行如下命令:

切换到RabbitMQ的安装路径下/usr/sbin/目录中的rabbitmqctl工具来创建:

cd /usr/sbin/
sudo ./rabbitmqctl add_vhost user_vhost

这里创建了一个名称为user_vhost的vhost。

在RabbitMQ 3.8.2版本中,不需要切换rabbitmqctl目录,直接可以执行如下命令:

sudo rabbitmqctl command

删除vhost也很简单:

sudo ./rabbitmqctl delete_vhost user_vhost

删除名称为user_vhost的vhost。

查看所有vhsot,执行如下命令:

sudo ./rabbitmqctl list_vhosts


下面讲解一下RabbitMQ的权限系统

下面是一个用户赋予vhost相应的权限(完全访问)示例:

 sudo ./rabbitmqctl set_permissions -p user_vhost user ".*" ".*" ".*"

这里为user_vhost授予用户user完全访问权限(读、写、配置)。

来具体看看set_permissions命令:

-p user_vhost:告诉了set_permissions条目应该应用到那个vhost上面;

user:被授予权限的用户;

“.*” “.*” “.*”:这是授予的权限,“.*”指代所有权限(读、写、配置),“.*”意味着匹配任何队列或则交换器名字。


参考资料:

1、《RabbitMQ实战 高效部署分布式消息队列》[美] Alvaro Videla, Jason J.W. Williams 著 中国工信出集团 2015.10

分享到:

发表评论

评论列表