權限策略
云消息隊列 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**** |
| |
| |||
| |||
| |||
| |||
| |||
| |||
實例: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概覽。