用户和权限管理
云消息队列 RabbitMQ 版开源身份验证和权限管理方式和阿里云访问控制(RAM)两种身份验证和权限模式,开源客户端访问云消息队列 RabbitMQ 版服务端时,根据不同身份验证和权限模式,传入用户名和密码进行权限认证,认证通过才允许访问服务端。
背景信息
云消息队列 RabbitMQ 版支持开源身份验证和权限管理方式和阿里云访问控制(RAM)两种身份验证和权限模式,在创建实例时,仅可选择其中一种,且不支持后续修改。两种方式对比如下。
|
身份验证和权限模式 |
说明 |
生效范围 |
优缺点 |
|
支持创建自定义用户名和密码,并支持为用户添加授权。 |
客户端SDK |
|
|
|
用户名和密码可通过阿里云访问控制(RAM)的AccessKey和AccessKey Secret生成。具体操作,请参见下文的创建静态用户名密码。 |
|
|
注意事项
-
开源身份验证和权限管理方式
-
仅支持新购的Serverless系列独享实例,存量实例不支持。
-
请尽量不要使用简单密码,避免用户名密码的泄露。
-
禁用默认的guest账号。
-
-
阿里云访问控制(RAM)
您的客户端在调用SDK收发消息时,请尽可能使用长期存活的Connection,以免每次收发消息时都需要创建新的Connection,消耗大量的网络资源和服务端资源,甚至引起服务端SYN Flood防护。更多信息,请参见Connection。
开源身份验证和权限管理方式
创建用户名密码
登录云消息队列 RabbitMQ 版控制台,然后在左侧导航栏选择实例列表。
在实例列表页面的顶部菜单栏选择地域,然后在实例列表中,单击目标实例名称。
在左侧导航栏,单击用户和权限管理。
-
在用户和权限管理页面,单击创建用户名密码。
-
在创建用户名密码面板,输入用户名、密码和确认密码等信息,单击确定。
编辑用户密码
-
在用户和权限管理页面,找到要编辑用户名,在其右侧操作列,单击编辑。
-
在编辑用户名密码面板,填写密码和确认密码等信息,单击确定。
删除用户
如果用户被删除,客户端使用该用户名密码连接云消息队列 RabbitMQ 版时会被拒绝。
-
在用户和权限管理页面,找到要删除的用户名,在其右侧操作列,单击删除。
-
在删除对话框,单击确定。
权限管理
云消息队列 RabbitMQ 版开源身份验证和权限管理方式以Vhost为维度进行授权,用户权限仅在其所属的Vhost内生效。 用户对Exchange和Queue的操作权限通过正则表达式(Regex)进行细粒度控制。详情请参见开源身份验证和权限管理。
新增权限
-
在用户和权限管理页面,找到需要添加权限的用户,在其右侧操作列,单击权限管理。
-
在权限管理面板,单击新增权限。
-
在下拉列表中选择需要配置的Vhost,然后输入相应操作的正则表达式,然后单击确定。
-
正则表达式匹配对象为Exchange和Queue。
-
.*表示所有资源。 -
^$表示只匹配空字符串,覆盖所有资源并阻止用户执行任何操作。 -
'^(amq\.gen.*|amq\.default)$'表示可以访问系统资源和default Exchange。
重要若采用公网接入点,在权限配置完成后,还需配置公网IP白名单。
-
更新权限
如果用户的Virtual Host权限被修改,客户端使用该用户名密码连接该Virtual Host时,可能会在发送消息、消费消息等操作时出现错误。
-
在权限管理面板,找到要删除的Virtual Host,在其右侧操作列,单击更新。
-
输入需要修改操作的正则表达式,然后单击确定。
删除权限
如果用户的Virtual Host权限被删除,客户端使用该用户名密码连接该Virtual Host时会被拒绝。
-
在权限管理面板,找到要删除的Virtual Host,在其右侧操作列,单击删除。
-
在删除对话框,单击确定。
阿里云访问控制(RAM)
创建静态用户名密码
登录云消息队列 RabbitMQ 版控制台,然后在左侧导航栏选择实例列表。
在实例列表页面的顶部菜单栏选择地域,然后在实例列表中,单击目标实例名称。
在左侧导航栏,单击用户和权限管理。
-
在用户和权限管理页面,单击创建用户名密码。
-
在创建用户名密码面板,输入AccessKey ID和AccessKey Secret,然后单击确定。
说明AccessKey ID和AccessKey Secret需要在阿里云RAM控制台获取,具体获取方式,请参见创建AccessKey。
用户和权限管理页面,显示创建的静态用户名与密码,密码处于隐藏状态。创建成功后,凭证列表中显示新增的凭证记录,包含实例 ID、Access Key、用户名、密码和创建时间等列。在操作列可单击删除移除该凭证。
-
在创建的静态用户名密码的密码列,单击显示密码,可查看用户名的密码。
如果您使用RAM用户的AccessKey创建的静态用户名密码接入云消息队列 RabbitMQ 版并收发消息,请确保该RAM用户已被授予收发消息权限。更多信息,请参见RAM权限策略。
删除静态用户名密码
如果静态用户名密码被删除或者创建静态用户名密码所使用的AccessKey被禁用或删除,则该静态用户名密码失效。客户端使用该静态用户名密码连接云消息队列 RabbitMQ 版时会被拒绝。
-
在用户和权限管理页面,找到要删除的静态用户名密码,在其右侧操作列,单击删除。
-
在提示对话框,认真阅读提示信息,单击确定。
在用户和权限管理页面,不再显示被删除的静态用户名密码。
相关操作
创建用户名密码后,您的客户端可以直接使用开源RabbitMQ版客户端接入云消息队列 RabbitMQ 版。更多信息,请参见SDK列表及示例代码。