确保RabbitMQ已安装并启动(若未安装,可通过sudo yum install rabbitmq-server安装,启动命令为sudo systemctl start rabbitmq-server)。
默认的guest用户存在安全风险(仅允许本地访问),建议创建专用用户。
使用以下命令创建用户(将your_username、your_password替换为实际值):
sudo rabbitmqctl add_user your_username your_password
RabbitMQ预定义了5种角色,用于控制用户权限级别:
设置角色的命令(以administrator为例):
sudo rabbitmqctl set_user_tags your_username administrator
权限需针对**虚拟主机(vhost)**设置,控制用户对虚拟主机内资源的操作(配置、写入、读取)。
创建虚拟主机(若未创建,默认虚拟主机为/):
sudo rabbitmqctl add_vhost your_vhost
分配权限:
语法:sudo rabbitmqctl set_permissions -p your_vhost your_username "conf_regex" "write_regex" "read_regex"
conf_regex:允许配置的资源(如队列、交换机),.*表示所有;write_regex:允许写入的资源(如发送消息到队列),.*表示所有;read_regex:允许读取的资源(如从队列消费消息),.*表示所有。示例(为用户分配your_vhost的完全权限):
sudo rabbitmqctl set_permissions -p your_vhost your_username ".*" ".*" ".*"
sudo rabbitmqctl list_permissions -p your_vhost
sudo rabbitmqctl list_user_permissions your_username
sudo rabbitmq-plugins enable rabbitmq_management
访问http://服务器IP:15672,使用创建的用户登录。sudo firewall-cmd --permanent --zone=public --add-port=5672/tcp
sudo firewall-cmd --permanent --zone=public --add-port=15672/tcp
sudo firewall-cmd --reload
guest用户,为其分配最小必要权限(如仅允许访问特定虚拟主机);read权限,生产者仅需write权限;