文章目录
鉴权,分别由鉴和权组成
- 鉴: 表示身份认证,认证相关用户是否存在以及相关的用户名和密码是否一致
- 权: 完成身份的鉴后,还需要判断用户是否有相关操作的权限。
因此对于某一个用户来说,通常情况下,需要完成鉴和权才能够满足一个完整的业务场景,因此通常将鉴权放在一起考量。本文探讨rabbitmq的鉴权常用的鉴权方式以及相关鉴权设计方式。
1. rabbitmq的鉴权设计
rabbitmq的鉴权作用范围是vhost,不同vhost采用不同的鉴权(账号密码等),因此可以rabbitmq可以通过vhost进行多租户的权限设计。
鉴: 身份认证
身份的认证有常用简单认证方式,可以配置账号和密码。
权: 操作权限
rabbitmq针对权限设计主要通过2种方式
- 配置用户的角色
- 配置用户的操作权限,相关的操作分别是“配置”、“读”、“写”权限
2. rabbitmq鉴权应用范围
rabbitmq的鉴权应用范围vhost级别,能够针对vhost内部的topic、exchange、queue、配置、数据读写等进行赋权和操作限制。不同vhost的鉴权相互隔离,相互独立,因此通常通过vhost来进行多租户的鉴权设计。
3. rabbitmq鉴权的常用方法
给目录创建权限的操作如下
3.1 用户管理
新增账号: rabbitmqctl add_user user-xx passwd-xx
删除用户: rabbitmqctl delete_user user-xx
所有用户: rabbitmqctl list_users
修改密码: rabbitmqctl change_password user-xx passwd-xx2
清除密码: rabbitmqctl clear_password {user-xx}
3.2 角色管理
用户角色分为5中类型:
none:无任何角色。新创建的用户的角色默认为 none。
management:可以访问web管理页面。
policymaker: 包含managerment所有权限,并且可以管理策略(Policy)和参数(Parameter)
monitoring: 包含management所有权限,并且可以看到所有链接、信道及节点相关的信息
administartor:包含monitoring所有权限,并且可以管理用户、虚拟机、权限、策略、参数等。(最高权限)
设置用户角色: rabbitmqctl set_user_tags zhaojigang administrator
设置多个角色: rabbitmqctl set_user_tags hncscwc monitoring policymaker
查看用户角色: rabbitmqctl list_users
3.3 权限管理
命令格式如下:rabbitmqctl set_permissions [-p vhost]{user}{conf}{write}{read}
查询所有权限:rabbitmqctl list_permissions [-p VHostPath]
查看用户权限:rabbitmqctl list_user_permissions user-xx
清除用户权限:rabbitmqctl clear_permissions [-p VHostPath] user-xx
4. 默认鉴权
搭建rabbitmq后会默认创建默认的账号和角色,便于管理。这两个进行了相关梳理
4.1 默认用户
RabbitMQ 安装完成后,会自动创建一个名为 guest 的默认用户,并设置其密码为 guest。可以通过http://localhost:15672登录RabbitMQ的控制台
4.2 默认角色
RabbitMQ中主要有administrator,monitoring,policymaker,management,impersonator,none几种角色。
- none 不能访问 management plugin
- management 用户可以通过AMQP做的任何事外加: 列出自己可以通过AMQP登入的virtual hosts 查看自己的virtual hosts中的queues, exchanges 和 bindings 查看和关闭自己的channels 和 connections 查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。
- policymaker management可以做的任何事外加: 查看、创建和删除自己的virtual hosts所属的policies和parameters
- monitoring management可以做的任何事外加: 列出所有virtual hosts,包括他们不能登录的virtual hosts 查看其他用户的connections和channels 查看节点级别的数据如clustering和memory使用情况 查看真正的关于所有virtual hosts的全局的统计信息
- administrator policymaker和monitoring可以做的任何事外加: 创建和删除virtual hosts 查看、创建和删除users 查看创建和删除permissions 关闭其他用户的connections
5. 参考文档
- RabbitMQ官网
版权归原作者 李姓门徒 所有, 如有侵权,请联系我们删除。