云消息队列 MQTT 版权限管理是通过阿里云的访问控制RAM(Resource Access Management)实现的。使用RAM可以让您避免与其他用户共享云账号密钥,即AccessKey(包含AccessKey ID和AccessKey Secret),按需为用户分配最小权限。本文介绍云消息队列 MQTT 版在RAM中的权限策略。
策略类别
在RAM中,权限策略是用语法结构描述的一组权限的集合,可以精确地描述被授权的Resource(资源集)、Action(操作集)以及授权条件。云消息队列 MQTT 版有以下两类RAM的权限策略:
系统策略
云消息队列 MQTT 版目前提供四种系统默认的权限策略。
权限策略名称 | 说明 |
---|---|
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客户端收发消息权限
- 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 版实例的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: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描述 |
---|---|---|---|
RevokeToken | * | * |
|
QueryToken | * | * |
|
ApplyToken |
|
|
|
CreateGroupId |
|
|
|
DeleteGroupId |
| ||
ListGroupId |
| ||
CreateTopic |
|
|
|
DeleteTopic |
| ||
ListTopic |
| ||
UpdateTopic |
| ||
CreateMqttInboundRule |
|
|
|
DeleteMqttInboundRule |
| ||
ListMqttInboundRuleInPage |
| ||
UpdateMqttInboundRule |
| ||
CreateMqttOutboundRule |
| ||
DeleteMqttOutboundRule |
| ||
ListMqttOutboundRuleInPage |
| ||
UpdateMqttOutboundRule |
| ||
CreateClientStatusNotifyRule |
| ||
DeleteClientStatusNotifyRule |
| ||
ListClientStatusNotifyRuleInPage |
| ||
UpdateClientStatusNotifyRule |
| ||
QuerySessionByClientId |
|
| mq:MqttInstanceAccess |
BatchQuerySessionByClientIds | mq:MqttInstanceAccess | ||
RegisterDeviceCredential | mq:MqttInstanceAccess | ||
GetDeviceCredential | mq:MqttInstanceAccess | ||
UnRegisterDeviceCredential | mq:MqttInstanceAccess | ||
RefreshDeviceCredential | mq:MqttInstanceAccess | ||
QueryMqttTraceDevice |
| ||
QueryMqttTraceMessageOfClient |
| ||
QueryMqttTraceMessagePublish | 实例:acs:mq:*:*:instance/{mqttInstanceId} | 实例:acs:mq:*:*:instance/post-cn-09k1noy**** | mq:MqttInstanceAccess |
QueryMqttTraceMessageSubscribe | mq:MqttInstanceAccess |