用户和权限管理

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

云消息队列 RabbitMQ 版开源身份验证和权限管理方式和阿里云访问控制(RAM)两种身份验证和权限模式,开源客户端访问云消息队列 RabbitMQ 版服务端时,根据不同身份验证和权限模式,传入用户名和密码进行权限认证,认证通过才允许访问服务端。

背景信息

云消息队列 RabbitMQ 版支持开源身份验证和权限管理方式阿里云访问控制(RAM)两种身份验证和权限模式,在创建实例时,仅可选择其中一种,且不支持后续修改。两种方式对比如下所示。

身份验证和权限模式

说明

生效范围

优缺点

开源身份验证和权限管理方式

支持创建自定义用户名和密码,并支持为用户添加授权。

客户端SDK

  • 优点:

    • 支持开源RabbitMQ无缝迁移上云。

    • 权限的增删改查更加直观。

    • 支持对Vhost下资源进行细粒度的权限管理。

  • 缺点:

    • 为提升安全性,内网环境下需要集成私网连接(PrivateLink),使用私网接入点会产生一定费用。

阿里云访问控制(RAM)

用户名和密码可通过阿里云访问控制(RAM)的AccessKeyAccessKey Secret生成。具体操作,请参见下文的创建静态用户名密码

  • 控制台

  • OpenAPI

  • 客户端SDK

  • 优点:

    • 内网无需集成私网连接(PrivateLink),不会产生费用。

    • 支持Vhost、Exchange、Queue粒度的授权。

  • 缺点:

    • 高度依赖RAM,耦合性过高。

    • 权限配置相对复杂。

    • 迁移上云时,客户端需要修改用户名和密码。

注意事项

  • 开源身份验证和权限管理方式

    • 仅支持新购的Serverless系列独享实例,存量实例不支持。

    • 请尽量不要使用简单密码,避免用户名密码的泄露。

    • 禁用默认的guest账号。

  • 阿里云访问控制(RAM)

    • 登录云消息队列 RabbitMQ 版控制台的账号为阿里云账号或至少已被授予查看、创建和删除静态用户名密码权限的RAM用户。关于静态用户名密码权限以及授权操作,请参见RAM权限策略RAM主子账号授权

    • 创建或删除静态用户名密码所属的实例需处于服务中状态。

    • AccessKeyAccessKey Secret是账号级别的权限认证,多个实例(同一阿里云账号下)可共用一对AccessKeyAccessKey Secret,同一对AccessKeyAccessKey Secret对应不同实例,会生成不同的用户名和密码。

    • 如果需要更新静态用户名密码,您可以删除该静态用户名密码后重新创建。

重要

您的客户端在调用SDK收发消息时,请尽可能使用长期存活的Connection,以免每次收发消息时都需要创建新的Connection,消耗大量的网络资源和服务端资源,甚至引起服务端SYN Flood防护。更多信息,请参见Connection

开源身份验证和权限管理方式

创建用户名密码

  1. 登录云消息队列 RabbitMQ 版控制台,然后在左侧导航栏选择实例列表

  2. 实例列表页面的顶部菜单栏选择地域,然后在实例列表中,单击目标实例名称。

  3. 在左侧导航栏,单击用户和权限管理

  4. 用户和权限管理页面,单击创建用户名密码

  5. 创建用户名密码面板,输入用户名密码确认密码等信息,单击确定

编辑用户密码

  1. 用户和权限管理页面,找到要编辑用户名,在其右侧操作列,单击编辑

  2. 编辑用户名密码面板,填写密码确认密码等信息,单击确定

删除用户

警告

如果用户被删除,客户端使用该用户名密码连接云消息队列 RabbitMQ 版时会被拒绝。

  1. 用户和权限管理页面,找到要删除的用户名,在其右侧操作列,单击删除

  2. 删除对话框,单击确定

权限管理

云消息队列 RabbitMQ 版开源身份验证和权限管理方式以Vhost为维度进行授权,用户权限仅在其所属的Vhost内生效。 用户对ExchangeQueue的操作权限通过正则表达式(Regex)进行细粒度控制。详情请参见开源身份验证和权限管理

新增权限

  1. 用户和权限管理页面,找到需要添加权限的用户,在其右侧操作列,单击权限管理

  2. 权限管理面板,单击新增权限

  3. 在下拉列表中选择需要配置的Vhost,然后输入相应操作的正则表达式,然后单击确定

    • 正则表达式匹配对象为ExchangeQueue。

    • .* 表示所有资源。

    • ^$表示只匹配空字符串,覆盖所有资源并阻止用户执行任何操作。

    • '^(amq\.gen.*|amq\.default)$' 表示可以访问系统资源和default Exchange。

    重要

    若采用公网接入点,在权限配置完成后,还需配置公网IP白名单

更新权限

警告

如果用户的Virtual Host权限被修改,客户端使用该用户名密码连接该Virtual Host时,可能会在发送消息、消费消息等操作时出现错误。

  1. 权限管理面板,找到要删除的Virtual Host,在其右侧操作列,单击更新

  2. 输入需要修改操作的正则表达式,然后单击确定

删除权限

警告

如果用户的Virtual Host权限被删除,客户端使用该用户名密码连接该Virtual Host时会被拒绝。

  1. 权限管理面板,找到要删除的Virtual Host,在其右侧操作列,单击删除

  2. 删除对话框,单击确定

阿里云访问控制(RAM)

创建静态用户名密码

  1. 登录云消息队列 RabbitMQ 版控制台,然后在左侧导航栏选择实例列表

  2. 实例列表页面的顶部菜单栏选择地域,然后在实例列表中,单击目标实例名称。

  3. 在左侧导航栏,单击用户和权限管理

  4. 用户和权限管理页面,单击创建用户名密码

  5. 创建用户名密码面板,输入AccessKey IDAccessKey Secret,然后单击确定

    说明

    AccessKey IDAccessKey Secret需要在阿里云RAM控制台获取,具体获取方式,请参见创建AccessKey

    用户和权限管理页面,显示创建的静态用户名与密码,密码处于隐藏状态。用户名密码

  6. 在创建的静态用户名密码的密码列,单击显示密码,可查看用户名的密码。

说明

如果您使用RAM用户的AccessKey创建的静态用户名密码接入云消息队列 RabbitMQ 版并收发消息,请确保该RAM用户已被授予收发消息权限。更多信息,请参见RAM权限策略

删除静态用户名密码

警告

如果静态用户名密码被删除或者创建静态用户名密码所使用的AccessKey被禁用或删除,则该静态用户名密码失效。客户端使用该静态用户名密码连接云消息队列 RabbitMQ 版时会被拒绝。

  1. 用户和权限管理页面,找到要删除的静态用户名密码,在其右侧操作列,单击删除

  2. 提示对话框,认真阅读提示信息,单击确定

    用户和权限管理页面,不再显示被删除的静态用户名密码。

相关操作

创建用户名密码后,您的客户端可以直接使用开源RabbitMQ版客户端接入云消息队列 RabbitMQ 版。更多信息,请参见SDK列表及示例代码