RabbitMQ3.x之四_角色说明及创建用户与授权
文章目录
1. 访问和授权
官网说明:Management Plugin | RabbitMQ
RabbitMQ中的访问和授权时以
Tag
来控制的请注意,由于“管理员”做“监视”做的所有事情,而“监视”完成“管理”做的一切事情,因此每个用户通常最多需要一个标记,也即一个用户只能分配一个
Tag
1. Tags说明
管理 UI 需要身份验证和授权,就像 RabbitMQ 需要的那样 它来自连接客户端。除了成功的身份验证外,管理 UI 访问还由用户标记控制。 这些标签使用 rabbitmqctl 进行管理。 默认情况下,新创建的用户不会设置任何标签。
有关用户和凭据的一般建议,请参阅生产清单 管理。
Tag(标记) | Capabilities(能力) |
---|---|
None(无) | 无法访问管理插件 |
management(管理) | 用户可以通过消息传递协议执行的任何操作,以及:列出他们可以通过 AMQP 登录的虚拟主机在“他们的”中查看所有队列、交换和绑定 虚拟主机查看和关闭自己的频道和连接查看涵盖其所有“全球”统计数据 虚拟主机,包括其他用户的活动 在他们里面 |
policymaker(决策者) | “管理”可以加上的一切:查看、创建和删除虚拟策略和参数 他们可以通过 AMQP 登录的主机 |
monitoring(监测) | “管理”可以加上的一切:列出所有虚拟主机,包括它们可以 不使用消息传递协议进行访问查看其他用户的连接和频道查看节点级数据,例如内存使用情况和集群查看所有虚拟主机的真正全局统计信息 |
administrator(管理员) | “政策制定者”和“监督者”可以加上的一切:创建和删除虚拟主机查看、创建和删除用户查看、创建和删除权限关闭其他用户的连接 |
请注意,由于“管理员”会执行所有“监视” 做,“监控”做“管理”做的一切, 每个用户通常最多需要一个标签。
对资源的正常 RabbitMQ 权限仍适用于监视器和 管理员;仅仅因为用户是监视器或 管理员未授予他们对交易所的完全访问权限, 通过管理的队列和绑定 插件或其他方式。
所有用户只能列出虚拟中的对象 他们拥有任何权限的主机。
如果由于缺少用户而无法访问管理 UI 具有足够的权限或忘记/不正确的权限,CLI 工具必须 用于管理用户及其凭据。rabbitmqctl add_user 应该用于创建用户,rabbitmqctl set_permissions授予 用户所需的权限,最后是 rabbitmqctl set_user_tags应用于授予用户管理 UI 访问权限。
2. 命令行示例
以下示例创建一个对管理 UI/HTTP API 具有完全访问权限的用户(如 所有虚拟主机和管理功能):
# create a user
rabbitmqctl add_user full_access s3crEt
# tag the user with "administrator" for full management UI and HTTP API access
rabbitmqctl set_user_tags full_access administrator
2. 管理界面新建用户及访问授权
rabbitmq默认的guest用户具有所有的操作权限,因此只能限制本地访问,不能远程访问
1. 管理界面新建用户
2. 管理界面中的授权说明
Comma-separated list of tags to apply to the user. Currently supported by the management plugin:
management
User can access the management plugin
policymaker
User can access the management plugin and manage policies and parameters for the vhosts they have access to.
monitoring
User can access the management plugin and see all connections and channels as well as node-related information.
administrator
User can do everything monitoring can do, manage users, vhosts and permissions, close other user’s connections, and manage policies and parameters for all vhosts.
Note that you can set any tag here; the links for the above four tags are just for convenience.
要应用于用户的逗号分隔的标记列表。目前由管理插件支持:
经营
用户可以访问管理插件
-决策者
用户可以访问管理插件,并管理他们可以访问的vhosts的策略和参数。
-监测
用户可以访问管理插件,查看所有连接和通道以及节点相关信息。
管理员
用户可以做监控所能做的一切,管理用户、vhosts和权限,关闭其他用户的连接,并管理所有vhosts的策略和参数。
请注意,您可以在此处设置任何标记;上面四个标签的链接只是为了方便。
3. guest用户不能远程登录提示
3. 创建用户
1. 基本命令
# 创建vhost
rabbitmqctl add_vhost <vhost_name>
# 创建用户
rabbitmqctl add_user <username> <password>
# 给用户分配tag(角色)
rabbitmqctl set_user_tags <username> <tag>
# 查看用户列表
rabbitmqctl list_users
# 修改用密码
rabbitmqctl change_password <username> <newPassword>
# 开启某个用户远程访问
rabbitmqctl set_permissions -p "<vhost_name>" <username> ".*" ".*" ".*"
# 删除用户
rabbitmqctl delete_user <username>
2. 实际案例
# 创建用户
rabbitmqctl add_user mytest test123
# 给用户分配tag(角色)
rabbitmqctl set_user_tags mytest administrator
# 开启远程访问
rabbitmqctl set_permissions -p "/" mytest ".*" ".*" ".*"
3. bat脚本创建用户
- Windows中一个bat脚本执行多条命令的说明
cmd1 & cmd2 & cmd3 : 无论前面命令是否执行成功,后面命令都会执行
cmd1 && cmd2 && cmd3: 仅当前面命令成功时,才执行后面的命令
cmd1 || cmd2 || cmd3: 仅当前面命令失败时.才执行后面命令
- 编写脚本如下
新建一个
createRabbitUser.bat
,内容如下注意:所有命令必须在同一行,不能换行,否则会执行失败
rabbitmqctl add_user mytest test123 && rabbitmqctl set_user_tags mytest administrator && rabbitmqctl set_permissions -p "/" mytest ".*" ".*" ".*"
pause
4. 查看用户列表_命令行
输入命令
rabbitmqctl list_users
,查看用户如下
5. 查看用户列表_管理界面
- 通过脚本创建用户后,如下
点击用户名,如下图
- mytest用户远程登录如下