O Resource Access Management (RAM) permite controlar o acesso aos recursos do ApsaraMQ for MQTT sem compartilhar o par de AccessKey da sua conta Alibaba Cloud com outros usuários. Um par de AccessKey consiste em um AccessKey ID e um AccessKey secret. Crie usuários RAM e conceda a cada usuário apenas as permissões necessárias.
Como funciona o controle de acesso
O ApsaraMQ for MQTT autoriza o acesso por meio de políticas de RAM. Cada política especifica quais ações um usuário RAM pode executar e em quais recursos. Há quatro tipos de recursos:
|
Tipo de recurso |
Descrição |
Formato de nomenclatura |
Exemplo |
|
Instância |
Uma instância de broker MQTT |
|
|
|
Tópico |
Um tópico de mensagens em uma instância |
|
|
|
Grupo |
Um grupo de clientes em uma instância |
|
|
|
Regra |
Uma regra de roteamento de dados em uma instância |
|
|
Dois tipos de políticas estão disponíveis:
Políticas de sistema -- Predefinidas pela Alibaba Cloud. Prontas para uso, mas não editáveis.
Políticas personalizadas -- Definidas e mantidas por você. Você gerencia as versões da política. Oferecem controle de acesso refinado no nível do recurso.
Para obter detalhes sobre a sintaxe de políticas, consulte Policy structure and syntax. Para o formato do elemento de recurso, consulte Resource.
Pré-requisito de acesso à instância
Antes de conceder permissões em qualquer tópico, grupo ou regra, conceda primeiro a ação mq:MqttInstanceAccess na instância pai. Sem acesso no nível da instância, o usuário RAM não consegue acessar os recursos internos.
Esse pré-requisito aplica-se a todas as categorias de permissão: operações no console, chamadas de API e publicação/assinatura de clientes.
Referência rápida de autorização
Use esta referência rápida para identificar quais permissões conceder antes de ler os detalhes completos das políticas abaixo.
Políticas de sistema (seleção rápida)
Para a maioria dos casos de uso, anexe uma das seguintes políticas de sistema predefinidas a um usuário do Resource Access Management (RAM). Nenhuma configuração é necessária — basta anexar e usar.
|
Política |
Tipo de acesso |
|
|
Acesso total de gerenciamento |
|
|
Apenas acesso de publicação via SDK |
|
|
Apenas acesso de assinatura via SDK |
|
|
Acesso somente leitura (console e API) |
Permissões adicionais do console
As políticas de sistema não incluem todas as permissões necessárias para acessar todas as áreas do console do ApsaraMQ for MQTT. Conceda as seguintes permissões separadamente, se necessário:
|
Permissão |
Necessária para |
|
|
Acessar a página Overview no console do ApsaraMQ for MQTT |
|
|
Visualizar a lista de instâncias no console |
Autorização exclusiva para MQTT
As políticas de sistema listadas acima também abrangem o ApsaraMQ for RocketMQ. Para conceder acesso exclusivamente aos recursos do ApsaraMQ for MQTT, use uma política personalizada. Uma política personalizada para acesso exclusivo ao MQTT geralmente inclui:
mq:MqttInstanceAccessna instância de destino (obrigatório antes de conceder quaisquer permissões no nível de recurso)mq:PUBoumq:SUBcom escopo definido para tópicos ou grupos específicos, conforme necessário
Políticas de sistema
O ApsaraMQ for MQTT fornece quatro políticas de sistema padrão.
|
Política |
Descrição |
|
AliyunMQFullAccess |
Acesso total de gerenciamento a todas as operações do ApsaraMQ for MQTT no console, equivalente a uma conta Alibaba Cloud. |
|
AliyunMQPubOnlyAccess |
Acesso apenas para publicação. Permite publicar mensagens por meio de SDKs em todos os recursos da conta Alibaba Cloud. |
|
AliyunMQSubOnlyAccess |
Acesso apenas para assinatura. Permite assinar mensagens por meio de SDKs de todos os recursos da conta Alibaba Cloud. |
|
AliyunMQReadOnlyAccess |
Acesso somente leitura. Permite visualizar informações de recursos no console ou por meio de chamadas de API. |
O ApsaraMQ for MQTT não possui políticas de sistema independentes. Essas políticas são compartilhadas com o ApsaraMQ for RocketMQ — anexar qualquer uma delas a um usuário RAM concede acesso a ambos os serviços.
As políticas AliyunMQFullAccess e AliyunMQReadOnlyAccess não incluem permissões para visualizar a lista de instâncias no console. Conceda mq:MqttInstanceAccess separadamente para ativar o acesso à lista de instâncias. Consulte Instance management actions .
Ações de políticas personalizadas
Políticas personalizadas permitem especificar exatamente quais ações um usuário RAM pode executar em recursos específicos. As seções a seguir listam todas as ações disponíveis agrupadas por escopo.
Para visualizar exemplos de políticas personalizadas, consulte Sample permission policies.
Ações de publicação e assinatura do cliente
Estas ações controlam a publicação e a assinatura de mensagens por meio dos SDKs do ApsaraMQ for MQTT.
Formatos de nomenclatura de recursos:
Tópico:
acs:mq:*:*:topic/{mqttInstanceId}/{topic}Group ID:
acs:mq:*:*:groupId/{mqttInstanceId}/{gid}
|
Ação |
Descrição |
|
mq:PUB |
Publicar mensagens em um tópico |
|
mq:SUB |
Assinar mensagens de um tópico |
Não é possível conceder permissões de publicação e assinatura de clientes entre contas Alibaba Cloud diferentes.
Ações de gerenciamento de instâncias
Formato de nomenclatura de recursos: acs:mq:*:*:instance/{mqttInstanceId}
|
Ação |
Descrição |
|
mq:MqttInstanceAccess |
Consultar informações básicas da instância. Obrigatória antes de conceder quaisquer permissões de tópico, grupo ou regra. |
|
mq:ListMqttInstance |
Listar todas as instâncias |
|
mq:UpdateMqttInstance |
Modifique informações da instância |
|
mq:DeleteMqttInstance |
Exclua uma instância |
|
mq:UpdateMqttInstanceWarn |
Atualize configurações de alerta de uma instância |
|
mq:MqttMetaData |
Acessar a página Overview e a página inicial no console do ApsaraMQ for MQTT |
Após concedermq:MqttMetaData, conceda tambémmq:ListMqttInstancepara que o usuário RAM possa visualizar a lista de instâncias no console.
Ações de gerenciamento de tópicos
Formato de nomenclatura de recursos: acs:mq:*:*:topic/{mqttInstanceId}/{topic}
|
Ação |
Descrição |
|
mq:CreateMqttTopic |
Crie um tópico |
|
mq:DeleteMqttTopic |
Exclua um tópico |
|
mq:ListMqttTopic |
Listar tópicos |
|
mq:UpdateMqttTopic |
Atualize a descrição de um tópico |
|
mq:QueryMqttClientByTopic |
Consultar quais clientes assinam um tópico |
|
mq:QueryMqttMsgTransTrend |
Consultar estatísticas de mensagens de um tópico |
|
mq:SendMqttMessageByConsole |
Enviar uma mensagem de teste pelo console |
Ações de gerenciamento de grupos
Formato de nomenclatura de recursos: acs:mq:*:*:groupId/{mqttInstanceId}/{gid}
|
Ação |
Descrição |
|
mq:CreateMqttGroupId |
Crie um grupo |
|
mq:DeleteMqttGroupId |
Exclua um grupo |
|
mq:ListMqttGroupId |
Listar grupos |
|
mq:QueryMqttClientByClientId |
Consultar informações do cliente pelo ID do cliente |
|
mq:QueryMqttClientByGroupId |
Consultar informações do cliente pelo ID do grupo |
|
mq:QueryMqttHistoryOnline |
Consultar histórico de conexões online por ID do grupo |
|
mq:QueryMqttTraceDevice |
Rastrear um cliente específico |
|
mq:QueryMqttDeviceTrace |
Consultar detalhes de um cliente específico |
Ações de gerenciamento de regras
Formato de nomenclatura de recursos: acs:mq:*:*:rule/{mqttInstanceId}/{ruleId}
Ao conceder permissões de regra, certifique-se de que as instâncias, tópicos e grupos relacionados pertençam à mesma conta Alibaba Cloud.
|
Ação |
Descrição |
|
mq:CreateMqttInboundRule |
Crie uma regra de entrada de dados |
|
mq:DeleteMqttInboundRule |
Exclua uma regra de entrada de dados |
|
mq:ListMqttInboundRule |
Listar regras de entrada de dados |
|
mq:UpdateMqttInboundRule |
Atualize uma regra de entrada de dados |
|
mq:CreateMqttOutboundRule |
Crie uma regra de saída de dados |
|
mq:DeleteMqttOutboundRule |
Exclua uma regra de saída de dados |
|
mq:ListMqttOutboundRule |
Listar regras de saída de dados |
|
mq:UpdateMqttOutboundRule |
Atualize uma regra de saída de dados |
|
mq:CreateClientStatusNotifyRule |
Crie uma regra de notificação de status do cliente |
|
mq:DeleteClientStatusNotifyRule |
Exclua uma regra de notificação de status do cliente |
|
mq:ListClientStatusNotifyRule |
Listar regras de notificação de status do cliente |
|
mq:UpdateClientStatusNotifyRule |
Atualize uma regra de notificação de status do cliente |
Permissões de operações de API
Cada operação de API requer mq:MqttInstanceAccess além de uma ou mais ações adicionais. Para APIs relacionadas a regras, certifique-se de que as instâncias, tópicos e grupos envolvidos pertençam à mesma conta Alibaba Cloud.
Gerenciamento de tokens
|
API |
Formato de nomenclatura de recursos |
Ações obrigatórias |
|
Instância: |
mq:MqttInstanceAccess, mq:ApplyToken |
|
|
|
mq:MqttInstanceAccess, mq:RevokeToken |
|
|
|
mq:MqttInstanceAccess, mq:QueryToken |
Operações de mensagens
|
API |
Ações obrigatórias |
|
mq:MqttInstanceAccess, mq:SendMessage |
Operações de grupos
Todas as operações de API de grupos usam os seguintes formatos de nomenclatura de recursos:
Instância:
acs:mq:*:*:instance/{mqttInstanceId}Grupo:
acs:mq:*:*:groupId/{mqttInstanceId}/{gid}
|
API |
Ações obrigatórias |
|
mq:MqttInstanceAccess, mq:CreateMqttGroupId |
|
|
mq:MqttInstanceAccess, mq:DeleteMqttGroupId |
|
|
mq:MqttInstanceAccess, mq:ListMqttGroupId |
|
|
mq:MqttInstanceAccess, mq:QuerySessionByClientId |
|
|
mq:MqttInstanceAccess, mq:BatchQuerySessionByClientIds |
Operações de credenciais de dispositivo
|
API |
Ações obrigatórias |
|
mq:MqttInstanceAccess, mq:RegisterDeviceCredential |
|
|
mq:MqttInstanceAccess, mq:GetDeviceCredential |
|
|
mq:MqttInstanceAccess, mq:ListDeviceCredentialClientId |
|
|
mq:MqttInstanceAccess, mq:UnRegisterDeviceCredential |
|
|
mq:MqttInstanceAccess, mq:RefreshDeviceCredential |
Operações de rastreamento de mensagens
|
API |
Formato de nomenclatura de recursos |
Ações obrigatórias |
|
-- |
mq:MqttInstanceAccess, mq:QueryMqttDeviceTrace |
|
|
-- |
mq:MqttInstanceAccess, mq:QueryMqttDeviceTrace |
|
|
Instância: |
mq:MqttInstanceAccess, mq:QueryMqttPubTrace |
|
|
-- |
mq:MqttInstanceAccess, mq:QueryMqttSubTrace |
Operações de autenticação personalizada
|
API |
Ações obrigatórias |
|
mq:MqttInstanceAccess, mq:AddCustomAuthIdentity |
|
|
mq:MqttInstanceAccess, mq:QueryCustomAuthIdentity |
|
|
mq:MqttInstanceAccess, mq:UpdateCustomAuthIdentity |
|
|
mq:MqttInstanceAccess, mq:DeleteCustomAuthIdentity |
|
|
mq:MqttInstanceAccess, mq:AddCustomAuthPermission |
|
|
mq:MqttInstanceAccess, mq:QueryCustomAuthPermission |
|
|
mq:MqttInstanceAccess, mq:UpdateCustomAuthPermission |
|
|
mq:MqttInstanceAccess, mq:DeleteCustomAuthPermission |
|
|
mq:MqttInstanceAccess, mq:DeleteCustomAuthConnectBlack |
|
|
mq:MqttInstanceAccess, mq:QueryCustomAuthConnectBlack |
|
|
mq:MqttInstanceAccess, mq:AddCustomAuthConnectBlack |
Operações de tópicos
Todas as operações de API de tópicos usam os seguintes formatos de nomenclatura de recursos:
Instância:
acs:mq:*:*:instance/{mqttInstanceId}Tópico:
acs:mq:*:*:topic/{mqttInstanceId}/{topic}
|
API |
Ações obrigatórias |
|
CreateTopic |
mq:MqttInstanceAccess, mq:CreateMqttTopic |
|
ListTopics |
mq:MqttInstanceAccess, mq:SUB, mq:ListMqttTopic |
|
DeleteTopic |
mq:MqttInstanceAccess, mq:PUB, mq:DeleteMqttTopic |
|
UpdateTopic |
mq:MqttInstanceAccess, mq:UpdateMqttTopic |
Operações de regras
Todas as operações de API de regras usam os seguintes formatos de nomenclatura de recursos:
Instância:
acs:mq:*:*:instance/{mqttInstanceId}Regra:
acs:mq:*:*:rule/{mqttInstanceId}/{ruleId}
|
API |
Ações obrigatórias |
|
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 |
Operações de recuperação de desastres
|
API |
Ações obrigatórias |
|
mq:MqttInstanceAccess, mq:DisasterDowngrade |
|
|
mq:MqttInstanceAccess, mq:DisasterRecovery |
Para a referência completa de APIs, consulte List of operations by function.