微消息队列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用户具有所有消息收发权限且有控制台所有功能操作权限。
AliyunMQPubOnlyAccess 微消息队列MQTT版的发布权限,被授予该权限的RAM用户具有使用阿里云账号所有资源通过SDK发送消息的权限。
AliyunMQSubOnlyAccess 微消息队列MQTT版的订阅权限,被授予该权限的RAM用户具有使用阿里云账号所有资源通过SDK订阅消息的权限。
AliyunMQReadOnlyAccess 微消息队列MQTT版的只读权限,被授予该权限的RAM用户仅有通过访问控制台或调用管控API读取资源信息的权限。

自定义策略

自定义权限策略(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 更新指定实例的报警信息

控制台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:CreateGroupId 创建Group ID 授予某RAM用户Topic和Group的相关权限前,需授予该用户Topic和Group所在实例的mq:MqttInstanceAccess权限。
mq:ListGroupId 获取Group ID列表
mq:QueryMqttClientByClientId 根据Client ID查询设备信息
mq:QueryMqttClientByGroupId 根据Group ID查询设备信息
mq:QueryMqttHistoryOnline 根据Group ID查询历史在线设备信息
mq:DeleteGroupId 删除Group ID
mq:QueryMqttDeviceTrace 查询设备轨迹
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描述
RevokeToken * *
  • mq:MqttInstanceAccess
  • mq:RevokeToken
QueryToken * *
  • mq:MqttInstanceAccess
  • mq:QueryToken
ApplyToken
  • 实例:acs:mq:*:*:instance/{mqttInstanceId}
  • Topic:acs:mq:*:*:topic/{mqttInstanceId}/{topic}
  • 实例:acs:mq:*:*:instance/post-cn-09k1noy****
  • Topic:acs:mq:*:*:topic/post-cn-09k1noy****/Topic_****
  • mq:MqttInstanceAccess
  • mq:ApplyToken
CreateGroupId
  • 实例:acs:mq:*:*:instance/{mqttInstanceId}
  • Group ID:acs:mq:*:*:groupId/{mqttInstanceId}/{gid}
  • 实例:acs:mq:*:*:instance/post-cn-09k1noy****
  • Group ID:acs:mq:*:*:groupId/post-cn-09k1noy****/GID_****
  • mq:MqttInstanceAccess
  • mq:CreateGroupId
DeleteGroupId
  • mq:MqttInstanceAccess
  • mq:DeleteGroupId
ListGroupId
  • mq:MqttInstanceAccess
  • mq:ListGroupId
CreateTopic
  • 实例:acs:mq:*:*:instance/{mqttInstanceId}
  • Topic:acs:mq:*:*:topic/{mqttInstanceId}/{topic}
  • 实例:acs:mq:*:*:instance/post-cn-09k1noy****
  • Topic:acs:mq:*:*:topic/post-cn-09k1noy****/Topic_****
  • mq:MqttInstanceAccess
  • mq:CreateMqttTopic
DeleteTopic
  • mq:MqttInstanceAccess
  • mq:DeleteMqttTopic
ListTopic
  • mq:MqttInstanceAccess
  • mq:ListMqttTopic
UpdateTopic
  • mq:MqttInstanceAccess
  • mq:UpdateMqttTopic
CreateMqttInboundRule
  • 实例:acs:mq:*:*:instance/{mqttInstanceId}
  • Rule:acs:mq:*:*:rule/{mqttInstanceId}/{ruleId}
  • 实例:acs:mq:*:*:instance/post-cn-09k1noy****
  • Rule:acs:mq:*:*:rule/post-cn-09k1noy****/111****
  • mq:MqttInstanceAccess
  • mq:CreateMqttInboundRule
DeleteMqttInboundRule
  • mq:MqttInstanceAccess
  • mq:DeleteMqttInboundRule
ListMqttInboundRuleInPage
  • mq:MqttInstanceAccess
  • mq:ListMqttInboundRule
UpdateMqttInboundRule
  • mq:MqttInstanceAccess
  • mq:UpdateMqttInboundRule
CreateMqttOutboundRule
  • mq:MqttInstanceAccess
  • mq:CreateMqttOutboundRule
DeleteMqttOutboundRule
  • mq:MqttInstanceAccess
  • mq:DeleteMqttOutboundRule
ListMqttOutboundRuleInPage
  • mq:MqttInstanceAccess
  • mq:ListMqttOutboundRule
UpdateMqttOutboundRule
  • mq:MqttInstanceAccess
  • mq:UpdateMqttOutboundRule
CreateClientStatusNotifyRule
  • mq:MqttInstanceAccess
  • mq:CreateClientStatusNotifyRule
DeleteClientStatusNotifyRule
  • mq:MqttInstanceAccess
  • mq:DeleteClientStatusNotifyRule
ListClientStatusNotifyRuleInPage
  • mq:MqttInstanceAccess
  • mq:ListClientStatusNotifyRule
UpdateClientStatusNotifyRule
  • mq:MqttInstanceAccess
  • mq:UpdateClientStatusNotifyRule
说明 API的更多信息,请参见云端API概览

更多信息