权限策略
云消息队列 MQTT 版权限管理是通过阿里云的访问控制RAM(Resource Access Management)实现的。使用RAM可以让您避免与其他用户共享云账号密钥,即AccessKey(包含AccessKey ID和AccessKey Secret),按需为用户分配最小权限。本文介绍云消息队列 MQTT 版在RAM中的权限策略。
策略类别
在RAM中,权限策略是用语法结构描述的一组权限的集合,可以精确地描述被授权的Resource(资源集)、Action(操作集)以及授权条件。云消息队列 MQTT 版有以下两类RAM的权限策略:
系统策略
云消息队列 MQTT 版目前提供四种系统默认的权限策略。
云消息队列 MQTT 版目前不支持独立的系统权限策略。您在为RAM用户授予以下系统权限策略时,除了对云消息队列 MQTT 版生效外,还会对云消息队列 RocketMQ 版生效。
| 权限策略名称 | 说明 | 
| AliyunMQFullAccess | 管理云消息队列 MQTT 版的权限,等同于阿里云账号的权限,被授予该权限的RAM用户具有所有消息收发权限且有控制台所有功能操作权限。 说明  此权限暂不支持通过控制台查看MQTT实例列表,如需查看,需授予mq:MqttInstanceAccess权限以查询指定实例的基本信息。更多信息,请参见控制台实例操作权限。 | 
| AliyunMQPubOnlyAccess | 云消息队列 MQTT 版的发布权限,被授予该权限的RAM用户具有使用阿里云账号所有资源通过SDK发送消息的权限。 | 
| AliyunMQSubOnlyAccess | 云消息队列 MQTT 版的订阅权限,被授予该权限的RAM用户具有使用阿里云账号所有资源通过SDK订阅消息的权限。 | 
| AliyunMQReadOnlyAccess | 云消息队列 MQTT 版的只读权限,被授予该权限的RAM用户仅有通过访问控制台或调用管控API读取资源信息的权限。 说明  此权限暂不支持通过控制台查看MQTT实例列表,如需查看,需授予mq:MqttInstanceAccess权限以查询指定实例的基本信息。更多信息,请参见控制台实例操作权限。 | 
自定义策略
自定义权限策略(Policy)可以满足您更细粒度的授权需求。
云消息队列 MQTT 版的Resource与Action的对应规则如下所述。
在云消息队列 MQTT 版中,实例、Topic、Group和规则各为一种Resource,对这些Resource授予的权限即为Action。关于Resource的格式及格式说明,请参见资源(Resource)。
云消息队列 MQTT 版的Resource和Action的可选值和对应规则可分为控制台、OpenAPI和云消息队列 MQTT 版客户端三大类。针对控制台资源的相关操作,按资源类型又可分为实例、Topic、Group和规则四类。
如需访问云消息队列 MQTT 版的资源以及OpenAPI,则需有访问云消息队列 MQTT 版实例的权限,对应的Action为mq:MqttInstanceAccess。
自定义策略的示例请参见权限策略示例。
MQTT客户端收发消息权限
消息收发权限涉及Topic和Group ID的Resource命名格式:
- Topic:acs:mq:*:*:topic/{mqttInstanceId}/{topic} 
- Group ID:acs:mq:*:*:groupId/{mqttInstanceId}/{gid} 
| Action名称 | Action描述 | 备注 | 
| mq:PUB | 消息发布 | 授予某RAM用户Topic和Group的相关权限前,需授予该用户Topic和Group所在实例的mq:MqttInstanceAccess权限。 | 
| mq:SUB | 消息订阅 | 
MQTT客户端收发消息权限不支持跨云账号授权。
控制台实例操作权限
云消息队列 MQTT 版实例的Resource命名格式:acs:mq:*:*:instance/{mqttInstanceId}。
| Action名称 | Action说明 | 备注 | 
| mq:MqttInstanceAccess | 查询指定实例的基本信息 | 授予某RAM用户Topic和Group的相关权限前,需授予该用户Topic和Group所在实例的mq:MqttInstanceAccess权限。 | 
| mq:DeleteMqttInstance | 删除实例 | 无 | 
| mq:UpdateMqttInstance | 变更实例的信息 | 无 | 
| mq:ListMqttInstance | 获取实例列表 | 无 | 
| mq:UpdateMqttInstanceWarn | 更新指定实例的报警信息 | 无 | 
| mq:MqttMetaData | 访问MQTT控制台概览页面以及首页 | 授予某RAM用户访问MQTT控制台概览页面和首页权限后,还需要授予获取实例列表的权限,才能看到实例列表。 | 
控制台Topic操作权限
Topic的Resource命名格式:acs:mq:*:*:topic/{mqttInstanceId}/{topic}。
| Action名称 | Action说明 | 备注 | 
| mq:QueryMqttClientByTopic | 根据Topic查询订阅的客户端信息 | 授予某RAM用户Topic和Group的相关权限前,需授予该用户Topic和Group所在实例的mq:MqttInstanceAccess权限。 | 
| mq:QueryMqttMsgTransTrend | 根据Topic查询消息的收发报表 | |
| mq:SendMqttMessageByConsole | 控制台发消息测试 | |
| mq:CreateMqttTopic | 创建Topic | |
| mq:DeleteMqttTopic | 删除Topic | |
| mq:ListMqttTopic | 查询Topic | |
| mq:UpdateMqttTopic | 更新Topic备注信息 | 
控制台Group ID操作权限
Group ID的Resource命名格式:acs:mq:*:*:groupId/{mqttInstanceId}/{gid}。
| Action名称 | Action说明 | 备注 | 
| mq:CreateMqttGroupId | 创建Group ID | 授予某RAM用户Topic和Group的相关权限前,需授予该用户Topic和Group所在实例的mq:MqttInstanceAccess权限。 | 
| mq:ListMqttGroupId | 获取Group ID列表 | |
| mq:QueryMqttClientByClientId | 根据Client ID查询设备信息 | |
| mq:QueryMqttClientByGroupId | 根据Group ID查询设备信息 | |
| mq:QueryMqttHistoryOnline | 根据Group ID查询历史在线设备信息 | |
| mq:DeleteMqttGroupId | 删除Group ID | |
| mq:QueryMqttTraceDevice | 查询设备轨迹 | |
| mq:QueryMqttDeviceTrace | 查询设备的相关消息 | 
控制台规则操作权限
规则的Resource命名格式:acs:mq:*:*:rule/{mqttInstanceId}/{ruleId}。
授予规则权限时需确保涉及的实例、Topic和Group ID资源属于同一云账号。
| Action名称 | Action说明 | 备注 | 
| mq:CreateMqttInboundRule | 创建数据流入规则 | 授予某RAM用户规则的相关权限前,需授予该用户规则所在实例的mq:MqttInstanceAccess权限。 | 
| mq:DeleteMqttInboundRule | 删除数据流入规则 | |
| mq:ListMqttInboundRule | 查询数据流入规则 | |
| mq:UpdateMqttInboundRule | 更新数据流入规则 | |
| mq:CreateMqttOutboundRule | 创建数据流出规则 | |
| mq:DeleteMqttOutboundRule | 删除数据流出规则 | |
| mq:ListMqttOutboundRule | 查询数据流出规则 | |
| mq:UpdateMqttOutboundRule | 更新数据流出规则 | |
| mq:CreateClientStatusNotifyRule | 创建客户端状态通知规则 | |
| mq:DeleteClientStatusNotifyRule | 删除客户端状态通知规则 | |
| mq:ListClientStatusNotifyRule | 查询客户端状态通知规则 | |
| mq:UpdateClientStatusNotifyRule | 更新客户端状态通知规则 | 
OpenAPI权限
授予规则的OpenAPI权限需保证涉及的实例、Topic和Group ID资源属于同一阿里云账号。
| API | Resource命名格式 | Resource命名示例 | Action描述 | 
| acs:mq:*:*:* | acs:mq:*:*:* | 
 | |
| acs:mq:*:*:* | acs:mq:*:*:* | 
 | |
| 
 | 
 | 
 | |
| 
 | |||
| 
 | 
 | 
 | |
| 
 | |||
| 
 | |||
| 
 | 
 | 
 | |
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 实例:acs:mq:*:*:instance/{mqttInstanceId} | 实例:acs:mq:*:*:instance/post-cn-09k1noy**** | 
 | |
| 
 | |||
| 实例:acs:mq:*:*:instance/{mqttInstanceId} | 实例:acs:mq:*:*:instance/post-cn-09k1noy**** | 
 | |
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 实例:acs:mq:*:*:instance/{mqttInstanceId} | 实例:acs:mq:*:*:instance/post-cn-09k1noy**** | 
 | |
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 实例:acs:mq:*:*:instance/{mqttInstanceId} | 实例:acs:mq:*:*:instance/post-cn-09k1noy**** | 
 | |
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| CreateTopic | 
 | 
 | 
 | 
| ListTopics | 
 | ||
| DeleteTopic | 
 | ||
| UpdateTopic | 
 | ||
| UpdateMqttOutboundRule | 
 | 
 | 
 | 
| CreateMqttInboundRule | 
 | ||
| DeleteMqttOutboundRule | 
 | ||
| UpdateClientStatusNotifyRule | 
 | ||
| ListClientStatusNotifyRuleInPages | 
 | ||
| ListMqttInboundRuleInPages | 
 | ||
| DeleteClientStatusNotifyRule | 
 | ||
| CreateClientStatusNotifyRule | 
 | ||
| CreateMqttOutboundRule | 
 | ||
| UpdateMqttInboundRule | 
 | ||
| DeleteMqttInboundRule | 
 | ||
| ListMqttOutboundRuleInPages | 
 | 
API的更多信息,请参见云端API概览。