Resource Access Management (RAM) vous permet de contrôler l'accès à vos ressources ApsaraMQ for MQTT sans partager la paire de clés AccessKey de votre compte Alibaba Cloud avec d'autres utilisateurs. Une paire AccessKey se compose d'un AccessKey ID et d'un AccessKey secret. Vous pouvez créer des utilisateurs RAM et accorder à chacun uniquement les permissions dont il a besoin.
Fonctionnement du contrôle d'accès
ApsaraMQ for MQTT autorise l'accès via des stratégies RAM. Chaque stratégie spécifie les actions qu'un utilisateur RAM peut effectuer sur quelles ressources. Il existe quatre types de ressources :
| Type de ressource | Description | Format de nommage | Exemple |
|---|---|---|---|
| Instance | Une instance de broker MQTT | acs:mq:*:*:instance/{mqttInstanceId} |
acs:mq:*:*:instance/post-cn-09k1noy**** |
| Topic | Un topic de message au sein d'une instance | acs:mq:*:*:topic/{mqttInstanceId}/{topic} |
acs:mq:*:*:topic/post-cn-09k1noy**<b data-pending="uicontrol" id="pending_017209d0">/Topic_</b>** |
| Group | Un groupe de clients au sein d'une instance | acs:mq:*:*:groupId/{mqttInstanceId}/{gid} |
acs:mq:*:*:groupId/post-cn-09k1noy**<b data-pending="uicontrol" id="pending_7dfa6d2e">/GID_</b>** |
| Rule | Une règle de routage des données au sein d'une instance | acs:mq:*:*:rule/{mqttInstanceId}/{ruleId} |
acs:mq:*:*:rule/post-cn-09k1noy**<b data-pending="uicontrol" id="pending_34ea50ef">/111</b>** |
Deux types de stratégies sont disponibles :
Stratégies système -- Prédéfinies par Alibaba Cloud. Prêtes à l'emploi, mais non modifiables.
Stratégies personnalisées -- Définies et maintenues par vos soins. Vous gérez les versions de la stratégie. Elles offrent un contrôle d'accès granulaire au niveau des ressources.
Pour plus de détails sur la syntaxe des stratégies, consultez Structure et syntaxe des stratégies. Pour le format de l'élément resource, voir Resource.
Prérequis pour l'accès aux instances
Avant d'accorder des permissions sur un topic, un group ou une rule, vous devez d'abord accorder l'action mq:MqttInstanceAccess sur l'instance parente. Sans accès au niveau de l'instance, l'utilisateur RAM ne peut pas atteindre les ressources contenues dans cette instance.
Ce prérequis s'applique à toutes les catégories de permissions : opérations de console, appels API et publication/abonnement client.
Référence rapide des autorisations
Utilisez cette référence rapide pour identifier les permissions à accorder avant de consulter les détails complets des stratégies ci-dessous.
Stratégies système (sélection rapide)
Pour la plupart des cas d'utilisation, attachez l'une des stratégies système prédéfinies suivantes à un utilisateur Resource Access Management (RAM). Aucune configuration n'est requise : il suffit d'attacher la stratégie pour l'utiliser.
| Stratégie | Type d'accès |
|---|---|
AliyunMQFullAccess |
Accès complet en gestion |
AliyunMQPubOnlyAccess |
Accès SDK en publication uniquement |
AliyunMQSubOnlyAccess |
Accès SDK en abonnement uniquement |
AliyunMQReadOnlyAccess |
Accès en lecture seule (console et API) |
Permissions supplémentaires pour la console
Les stratégies système n'incluent pas toutes les permissions nécessaires pour accéder à chaque section de la console ApsaraMQ for MQTT. Accordez les permissions suivantes séparément si nécessaire :
| Permission | Requise pour |
|---|---|
mq:MqttMetaData |
Accéder à la page Overview de la console ApsaraMQ for MQTT |
mq:ListMqttInstance |
Afficher la liste des instances dans la console |
Autorisation exclusive à MQTT
Les stratégies système énumérées ci-dessus couvrent également ApsaraMQ for RocketMQ. Pour accorder un accès exclusif aux ressources ApsaraMQ for MQTT, utilisez plutôt une stratégie personnalisée. Une stratégie personnalisée pour un accès MQTT uniquement inclut généralement :
mq:MqttInstanceAccesssur l'instance cible (requis avant d'accorder toute permission au niveau des ressources)mq:PUBoumq:SUBlimité à des topics ou des groups spécifiques, selon les besoins
Stratégies système
ApsaraMQ for MQTT fournit quatre stratégies système par défaut.
| Stratégie | Description |
|---|---|
| AliyunMQFullAccess | Accès complet en gestion à toutes les opérations ApsaraMQ for MQTT dans la console, équivalent à un compte Alibaba Cloud. |
| AliyunMQPubOnlyAccess | Accès en publication uniquement. Permet de publier des messages via des SDK vers toutes les ressources du compte Alibaba Cloud. |
| AliyunMQSubOnlyAccess | Accès en abonnement uniquement. Permet de s'abonner aux messages via des SDK depuis toutes les ressources du compte Alibaba Cloud. |
| AliyunMQReadOnlyAccess | Accès en lecture seule. Permet d'afficher les informations sur les ressources dans la console ou via des appels API. |
ApsaraMQ for MQTT ne dispose pas de ses propres stratégies système indépendantes. Ces stratégies sont partagées avec ApsaraMQ for RocketMQ : l'attachement de l'une de ces stratégies à un utilisateur RAM accorde l'accès aux deux services.
AliyunMQFullAccess et AliyunMQReadOnlyAccess n'incluent pas les permissions permettant d'afficher la liste des instances dans la console. Accordez mq:MqttInstanceAccess séparément pour activer l'accès à la liste des instances. Consultez Actions de gestion des instances .
Actions des stratégies personnalisées
Les stratégies personnalisées vous permettent de spécifier exactement les actions qu'un utilisateur RAM peut effectuer sur des ressources spécifiques. Les sections suivantes répertorient toutes les actions disponibles, regroupées par portée.
Pour des exemples de stratégies personnalisées, consultez Exemples de stratégies d'autorisation.
Actions de publication et d'abonnement client
Ces actions contrôlent la publication et l'abonnement aux messages via les SDK ApsaraMQ for MQTT.
Formats de nommage des ressources :
Topic :
acs:mq:*:*:topic/{mqttInstanceId}/{topic}Group ID :
acs:mq:*:*:groupId/{mqttInstanceId}/{gid}
| Action | Description |
|---|---|
| mq:PUB | Publier des messages sur un topic |
| mq:SUB | S'abonner aux messages d'un topic |
Les permissions de publication et d'abonnement client ne peuvent pas être accordées entre différents comptes Alibaba Cloud.
Actions de gestion des instances
Format de nommage des ressources : acs:mq:*:*:instance/{mqttInstanceId}
| Action | Description |
|---|---|
| mq:MqttInstanceAccess | Interroger les informations de base de l'instance. Requis avant d'accorder toute permission sur les topics, groups ou rules. |
| mq:ListMqttInstance | Répertorier toutes les instances |
| mq:UpdateMqttInstance | Modifier les informations de l'instance |
| mq:DeleteMqttInstance | Supprimer une instance |
| mq:UpdateMqttInstanceWarn | Mettre à jour les paramètres d'alerte pour une instance |
| mq:MqttMetaData | Accéder à la page Overview et à la page d'accueil de la console ApsaraMQ for MQTT |
Après avoir accordémq:MqttMetaData, accordez égalementmq:ListMqttInstanceafin que l'utilisateur RAM puisse afficher la liste des instances dans la console.
Actions de gestion des topics
Format de nommage des ressources : acs:mq:*:*:topic/{mqttInstanceId}/{topic}
| Action | Description |
|---|---|
| mq:CreateMqttTopic | Créer un topic |
| mq:DeleteMqttTopic | Supprimer un topic |
| mq:ListMqttTopic | Répertorier les topics |
| mq:UpdateMqttTopic | Mettre à jour la description d'un topic |
| mq:QueryMqttClientByTopic | Interroger les clients abonnés à un topic |
| mq:QueryMqttMsgTransTrend | Interroger les statistiques de messagerie pour un topic |
| mq:SendMqttMessageByConsole | Envoyer un message de test depuis la console |
Actions de gestion des groups
Format de nommage des ressources : acs:mq:*:*:groupId/{mqttInstanceId}/{gid}
| Action | Description |
|---|---|
| mq:CreateMqttGroupId | Créer un group |
| mq:DeleteMqttGroupId | Supprimer un group |
| mq:ListMqttGroupId | Répertorier les groups |
| mq:QueryMqttClientByClientId | Interroger les informations client par ID client |
| mq:QueryMqttClientByGroupId | Interroger les informations client par ID de group |
| mq:QueryMqttHistoryOnline | Interroger les connexions en ligne historiques par ID de group |
| mq:QueryMqttTraceDevice | Tracer un client spécifique |
| mq:QueryMqttDeviceTrace | Interroger les détails d'un client spécifique |
Actions de gestion des rules
Format de nommage des ressources : acs:mq:*:*:rule/{mqttInstanceId}/{ruleId}
Lorsque vous accordez des permissions sur les rules, assurez-vous que les instances, topics et groups associés appartiennent tous au même compte Alibaba Cloud.
| Action | Description |
|---|---|
| mq:CreateMqttInboundRule | Créer une règle de données entrante |
| mq:DeleteMqttInboundRule | Supprimer une règle de données entrante |
| mq:ListMqttInboundRule | Répertorier les règles de données entrantes |
| mq:UpdateMqttInboundRule | Mettre à jour une règle de données entrante |
| mq:CreateMqttOutboundRule | Créer une règle de données sortante |
| mq:DeleteMqttOutboundRule | Supprimer une règle de données sortante |
| mq:ListMqttOutboundRule | Répertorier les règles de données sortantes |
| mq:UpdateMqttOutboundRule | Mettre à jour une règle de données sortante |
| mq:CreateClientStatusNotifyRule | Créer une règle de notification d'état client |
| mq:DeleteClientStatusNotifyRule | Supprimer une règle de notification d'état client |
| mq:ListClientStatusNotifyRule | Répertorier les règles de notification d'état client |
| mq:UpdateClientStatusNotifyRule | Mettre à jour une règle de notification d'état client |
Permissions des opérations API
Chaque opération API nécessite mq:MqttInstanceAccess ainsi qu'une ou plusieurs actions supplémentaires. Pour les API liées aux rules, assurez-vous que les instances, topics et groups associés appartiennent tous au même compte Alibaba Cloud.
Gestion des tokens
| API | Format de nommage des ressources | Actions requises |
|---|---|---|
| ApplyToken | Instance : acs:mq:*:*:instance/{mqttInstanceId}, Topic : acs:mq:*:*:topic/{mqttInstanceId}/{topic} |
mq:MqttInstanceAccess, mq:ApplyToken |
| RevokeToken | acs:mq:*:*:* |
mq:MqttInstanceAccess, mq:RevokeToken |
| QueryToken | acs:mq:*:*:* |
mq:MqttInstanceAccess, mq:QueryToken |
Opérations sur les messages
| API | Actions requises |
|---|---|
| SendMessage | mq:MqttInstanceAccess, mq:SendMessage |
Opérations sur les groups
Toutes les opérations API relatives aux groups utilisent les formats de nommage de ressources suivants :
Instance :
acs:mq:*:*:instance/{mqttInstanceId}Group :
acs:mq:*:*:groupId/{mqttInstanceId}/{gid}
| API | Actions requises |
|---|---|
| CreateGroupId | mq:MqttInstanceAccess, mq:CreateMqttGroupId |
| DeleteGroupId | mq:MqttInstanceAccess, mq:DeleteMqttGroupId |
| ListGroupId | mq:MqttInstanceAccess, mq:ListMqttGroupId |
| QuerySessionByClientId | mq:MqttInstanceAccess, mq:QuerySessionByClientId |
| BatchQuerySessionByClientIds | mq:MqttInstanceAccess, mq:BatchQuerySessionByClientIds |
Opérations sur les identifiants de périphérique
| API | Actions requises |
|---|---|
| RegisterDeviceCredential | mq:MqttInstanceAccess, mq:RegisterDeviceCredential |
| GetDeviceCredential | mq:MqttInstanceAccess, mq:GetDeviceCredential |
| ListDeviceCredentialClientId | mq:MqttInstanceAccess, mq:ListDeviceCredentialClientId |
| UnRegisterDeviceCredential | mq:MqttInstanceAccess, mq:UnRegisterDeviceCredential |
| RefreshDeviceCredential | mq:MqttInstanceAccess, mq:RefreshDeviceCredential |
Opérations de trace des messages
| API | Format de nommage des ressources | Actions requises |
|---|---|---|
| QueryMqttTraceDevice | -- | mq:MqttInstanceAccess, mq:QueryMqttDeviceTrace |
| QueryMqttTraceMessageOfClient | -- | mq:MqttInstanceAccess, mq:QueryMqttDeviceTrace |
| QueryMqttTraceMessagePublish | Instance : acs:mq:*:*:instance/{mqttInstanceId} |
mq:MqttInstanceAccess, mq:QueryMqttPubTrace |
| QueryMqttTraceMessageSubscribe | -- | mq:MqttInstanceAccess, mq:QueryMqttSubTrace |
Opérations d'authentification personnalisée
| API | Actions requises |
|---|---|
| AddCustomAuthIdentity | mq:MqttInstanceAccess, mq:AddCustomAuthIdentity |
| QueryCustomAuthIdentity | mq:MqttInstanceAccess, mq:QueryCustomAuthIdentity |
| UpdateCustomAuthIdentity | mq:MqttInstanceAccess, mq:UpdateCustomAuthIdentity |
| DeleteCustomAuthIdentity | mq:MqttInstanceAccess, mq:DeleteCustomAuthIdentity |
| AddCustomAuthPermission | mq:MqttInstanceAccess, mq:AddCustomAuthPermission |
| QueryCustomAuthPermission | mq:MqttInstanceAccess, mq:QueryCustomAuthPermission |
| UpdateCustomAuthPermission | mq:MqttInstanceAccess, mq:UpdateCustomAuthPermission |
| DeleteCustomAuthPermission | mq:MqttInstanceAccess, mq:DeleteCustomAuthPermission |
| AddCustomAuthConnectBlack | mq:MqttInstanceAccess, mq:DeleteCustomAuthConnectBlack |
| QueryCustomAuthConnectBlack | mq:MqttInstanceAccess, mq:QueryCustomAuthConnectBlack |
| DeleteCustomAuthConnectBlack | mq:MqttInstanceAccess, mq:AddCustomAuthConnectBlack |
Opérations sur les topics
Toutes les opérations API relatives aux topics utilisent les formats de nommage de ressources suivants :
Instance :
acs:mq:*:*:instance/{mqttInstanceId}Topic :
acs:mq:*:*:topic/{mqttInstanceId}/{topic}
| API | Actions requises |
|---|---|
| CreateTopic | mq:MqttInstanceAccess, mq:CreateMqttTopic |
| ListTopics | mq:MqttInstanceAccess, mq:SUB, mq:ListMqttTopic |
| DeleteTopic | mq:MqttInstanceAccess, mq:PUB, mq:DeleteMqttTopic |
| UpdateTopic | mq:MqttInstanceAccess, mq:UpdateMqttTopic |
Opérations sur les rules
Toutes les opérations API relatives aux rules utilisent les formats de nommage de ressources suivants :
Instance :
acs:mq:*:*:instance/{mqttInstanceId}Rule :
acs:mq:*:*:rule/{mqttInstanceId}/{ruleId}
| API | Actions requises |
|---|---|
| CreateMqttInboundRule | mq:MqttInstanceAccess, mq:CreateMqttInboundRule |
| ListMqttInboundRuleInPages | mq:MqttInstanceAccess, mq:ListMqttInboundRule |
| UpdateMqttInboundRule | mq:MqttInstanceAccess, mq:UpdateMqttInboundRule |
| DeleteMqttInboundRule | mq:MqttInstanceAccess, mq:DeleteMqttInboundRule |
| CreateMqttOutboundRule | mq:MqttInstanceAccess, mq:CreateMqttOutboundRule |
| ListMqttOutboundRuleInPages | mq:MqttInstanceAccess, mq:ListMqttOutboundRule |
| UpdateMqttOutboundRule | mq:MqttInstanceAccess, mq:UpdateMqttOutboundRule |
| DeleteMqttOutboundRule | mq:MqttInstanceAccess, mq:DeleteMqttOutboundRule |
| CreateClientStatusNotifyRule | mq:MqttInstanceAccess, mq:CreateClientStatusNotifyRule |
| ListClientStatusNotifyRuleInPages | mq:MqttInstanceAccess, mq:ListClientStatusNotifyRule |
| UpdateClientStatusNotifyRule | mq:MqttInstanceAccess, mq:UpdateClientStatusNotifyRule |
| DeleteClientStatusNotifyRule | mq:MqttInstanceAccess, mq:DeleteClientStatusNotifyRule |
Opérations de reprise après sinistre
| API | Actions requises |
|---|---|
| DisasterDowngrade | mq:MqttInstanceAccess, mq:DisasterDowngrade |
| DisasterRecovery | mq:MqttInstanceAccess, mq:DisasterRecovery |
Pour la référence API complète, consultez Liste des opérations par fonction.