微消息队列 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 的更多详情,请参见 OpenAPI 概览

更多信息