云消息队列 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。
云消息队列 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**** |
| |
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
CreateTopic |
|
|
|
ListTopics |
| ||
DeleteTopic |
| ||
UpdateTopic |
| ||
UpdateMqttOutboundRule |
|
|
|
CreateMqttInboundRule |
| ||
DeleteMqttOutboundRule |
| ||
UpdateClientStatusNotifyRule |
| ||
ListClientStatusNotifyRuleInPages |
| ||
ListMqttInboundRuleInPages |
| ||
DeleteClientStatusNotifyRule |
| ||
CreateClientStatusNotifyRule |
| ||
CreateMqttOutboundRule |
| ||
UpdateMqttInboundRule |
| ||
DeleteMqttInboundRule |
| ||
ListMqttOutboundRuleInPages |
|
API的更多信息,请参见云端API概览。