微消息队列 MQTT 版权限管理是通过阿里云的访问控制 RAM(Resource Access Management)实现的。使用 RAM 可以让您避免与其他用户共享云账号密钥,即 AccessKey(包含 AccessKeyId 和 AccessKeySecret),按需为用户分配最小权限。本文介绍微消息队列 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。Topic 和 Group 的 Resource 命名格式因实例是否有命名空间而异。您可在微消息队列 MQTT 版控制台的实例详情页面查看实例是否有命名空间。
微消息队列 MQTT 版的 Resource 和 Action 的可选值和对应规则可分为控制台、OpenAPI 和微消息队列 MQTT 版客户端三大类类。针对控制台资源的相关操作,按资源类型又可分为实例、Topic 和 Group 三类。
MQTT 客户端收发消息权限
- 有命名空间
- Topic:acs:mq:*:*:{storeInstanceId}%{topic}
- Group ID:acs:mq:*:*:{mqttInstanceId}%{groupid}
注意 此处的 storeInstanceid 指您为微消息队列 MQTT 版实例绑定的持久化实例的 ID。您可在微消息队列 MQTT 版控制台的实例详情页面获取绑定的持久化实例的 ID。 - 无命名空间
- Topic:acs:mq:*:*:{topic}
- Group ID:acs:mq:*:*:{groupid}
Action 名称 | Action 描述 | 备注 |
---|---|---|
mq:PUB | 消息发布 | 授予某 RAM 用户 Topic 的相关权限前,需授予该用户 Topic 所在实例的 mq:MqttInstanceAccess 权限。 |
mq:SUB | 消息订阅 |
控制台实例操作权限
不论您的微消息队列 MQTT 版实例是否有独立命名空间,Resource 命名格式都统一为 acs:mq:*:*:{mqttInstanceId}。涉及的 Action 及相关说明如下表所示。
Action 名称 | Action 说明 | 备注 |
---|---|---|
mq:MqttInstanceAccess | 查询指定实例的基本信息 | 授予某 RAM 用户 Topic 和 Group 的相关权限前,需授予该用户 Topic 和 Group 所在实例的 mq:MqttInstanceAccess 权限。 |
mq:DeleteMqttInstance | 删除实例 | 无 |
mq:UpdateMqttInstance | 变更实例的信息 | 无 |
mq:BindMqttInstance | 绑定实例 | 如果业务需要绑定实例,需要具备操作指定的微消息队列 MQTT 版实例以及绑定的持久化实例的权限,持久化实例的权限设置,请参见对应产品的权限控制策略。 |
mq:ListMqttInstance | 获取实例列表 | 无 |
mq:UpdateMqttInstanceWarn | 更新指定实例的报警信息 | 无 |
控制台 Topic 操作权限
- 有命名空间:acs:mq:*:*:{storeInstanceId}%{topic}
注意 此处的 storeInstanceid 指您为微消息队列 MQTT 版实例绑定的持久化实例的 ID。您可在微消息队列 MQTT 版控制台的实例详情页面获取绑定的持久化实例的 ID。
- 无命名空间:acs:mq:*:*:{topic}
Action 名称 | Action 说明 | 备注 |
---|---|---|
mq:QueryMqttClientByTopic | 根据 Topic 查询订阅的客户端信息 | 授予某 RAM 用户 Topic 和 Group 的相关权限前,需授予该用户 Topic 和 Group 所在实例的 mq:MqttInstanceAccess 权限。 |
mq:QueryMqttMsgTransTrend | 根据 Topic 查询消息的收发报表 | |
mq:SendMqttMessageByConsole | 控制台发消息测试 |
控制台 Group ID 操作权限
- 有命名空间:acs:mq:*:*:{mqttInstanceId}%{groupId}
注意 此处如果是有独立命名空间的实例,则 Group ID 需要拼接微消息队列 MQTT 版实例 ID 作为前缀。
- 无命名空间:acs:mq:*:*:{groupId}
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:QueryMqttDeviceTrace | 查询设备轨迹 | |
mq:QueryMqttDeviceTrace | 查询设备的相关消息 |
OpenAPI 权限
API | Resource 命名格式(实例无命名空间) | Resource 命名格式(实例有命名空间) | Action 描述 |
---|---|---|---|
RevokeToken |
|
|
|
QueryToken |
|
||
ApplyToken |
|
||
CreateGroupId |
|
||
DeleteGroupId |
|
||
ListGroupId |
|
在文档使用中是否遇到以下问题
更多建议
匿名提交