消息队列RocketMQ版的权限管理是通过阿里云的访问控制RAM(Resource Access Management)产品实现的。使用RAM可以让您避免与其他用户共享云账号密钥,即AccessKey(包含AccessKey ID和AccessKey Secret),按需为用户分配最小权限。本文介绍消息队列RocketMQ版在RAM中的权限策略和示例。

背景信息

在RAM中,权限策略是用权限策略语法和结构描述的一组权限的集合,可以精确地描述被授权的Resource(资源集)、Action(操作集)以及授权条件。更多信息,请参见权限策略基本元素

消息队列RocketMQ版有以下RAM权限策略:

  • 系统策略

    系统策略统一由阿里云创建,您只能使用不能修改,策略版本的更新由阿里云维护。

  • 自定义策略

    自定义策略可由您自主创建、更新和删除,策略版本的更新由您自行维护。您需要到RAM控制台编辑相应权限策略,再给相应用户授予该权限。具体的策略内容示例,请参见下文的权限策略示例

系统策略

消息队列RocketMQ版提供以下系统默认的权限策略。

权限策略名称 说明
AliyunMQFullAccess 消息队列RocketMQ版的管理权限,等同于阿里云账号的权限,被授予该权限的RAM用户具有所有消息收发权限及控制台和API的所有操作权限。
AliyunMQReadOnlyAccess 消息队列RocketMQ版的只读权限,被授予该权限的RAM用户仅有通过访问控制台或调用管控API读取资源信息的权限。

自定义策略

消息队列RocketMQ版支持自定义权限策略,为您提供更细粒度的权限管理。

消息队列RocketMQ版中,实例、Topic和Group等各为不同的Resource,对这些Resource授予的操作即为Action。

实例操作权限

Resource Action 权限说明
acs:rocketmq:{regionId}:{accountId}:instance/* rocketmq:ListInstances 获取实例列表。
acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId} rocketmq:DeleteInstance 主动释放按量付费实例。
rocketmq:ListAlertRules 查询实例的报警规则。
rocketmq:UpdateInstance 更新实例配置。
rocketmq:GetInstances 获取实例配置。

Topic操作权限

Resource Action 权限说明
acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}/topic/* rocketmq:ListTopics 获取Topic列表。
acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}/topic/{TopicName} rocketmq:CreateTopic 创建Topic。
rocketmq:GetTopic 获取Topic配置。
rocketmq:UpdateTopic 更新Topic配置。
rocketmq:DeleteTopic 删除Topic。
rocketmq:ListTraceQueryRecords 查询消息轨迹信息。
rocketmq:ListMessages 查询消息。
rocketmq:VerifyConsumeMessage 消费消息验证。
rocketmq:GetMessageDetail 获取消息详情信息。
rocketmq:ListTopicSubscriptions 查询Topic相关订阅组。
rocketmq:DeleteTraceQueryRecord 删除轨迹查询任务。
rocketmq:SubmitQueryTrace 提交轨迹查询任务。
rocketmq:GetTraceData 根据轨迹查询任务获取轨迹详细信息。
rocketmq:GetTraceQueryRecord 获取轨迹查询任务列表。
rocketmq:DownloadMessage 下载消息。
rocketmq:ListTraceQueryResults 获取消息轨迹查询任务列表。
rocketmq:VerifySendMessage 发送消息验证。

ConsumerGroup操作权限

Resource Action 权限说明
acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}/consumergroup/{ConsumerGroupId} rocketmq:GetConsumerGroup 获取消费者分组详细信息。
rocketmq:CreateConsumerGroup 创建消费者分组。
rocketmq:UpdateConsumerGroup 更新消费者分组信息。
rocketmq:DeleteConsumerGroup 删除消费者分组。
rocketmq:GetConsumerGroupLag 查询消费者分组的消息堆积数据。
acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}/consumergroup/* rocketmq:ListConsumerGroups 获取消费者分组列表。
acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}/consumergroup/{ConsumerGroupId} rocketmq:ListConsumerGroupSubscriptions 查询指定消费者分组的订阅关系列表。
rocketmq:ListConsumerConnections 根据消费者分组查询客户端连接信息。
rocketmq:GetConsumerGroupSubscription 根据消费者分组查询订阅关系详细信息。
rocketmq:GetConsumerStack 根据消费者分组查询客户端堆栈数据。
rocketmq:ResetConsumeOffset 重置消费进度。

权限策略示例

重要 如需直接复制示例代码,请替换如下内容:
  • {regionId}:替换为实例所属的地域ID。具体内容,请参见服务接入点
  • {accountId}:替换为您的阿里云账号ID。
  • {InstanceId}:替换为消息队列RocketMQ版的实例ID。
  • {ConsumerGroupId}:替换为Group ID。
  • {TopicName}:替换为Topic名称。
  • 示例一:授予RAM用户对于某个实例的所有操作权限。
    {
        "Version": "1",
        "Statement": [
           {
                "Effect": "Allow",
                "Action": [
                    "rocketmq:ListInstances"
                ],
                "Resource": [
                    "acs:rocketmq:{regionId}:{accountId}:instance/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "rocketmq:*"
                ],
                "Resource": [
                    "acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}*"
                ]
            }
        ]
    }
  • 示例二:授予RAM用户创建实例的权限。
    {  
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "rocketmq:CreateInstance"
                ],
                "Resource": [
                    "acs:rocketmq:{regionId}:{accountId}:instance/*" 
                ]
            }
        ]
    }       
  • 示例三:授予RAM用户删除某个指定Topic的权限。
    {  
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "rocketmq:DeleteTopic"
                ],
                "Resource": [
                    "acs:rocketmq:{regionId}:{accountId}:instance/{InstanceId}/topic/{TopicName}" 
                ]
            }
        ]
    }       

相关文档