Todos os produtos
Search
Central de documentação

ApsaraMQ for RocketMQ:Custom policies for ApsaraMQ for RocketMQ

Última atualização: Jun 27, 2026

Se as políticas de sistema predefinidas do ApsaraMQ for RocketMQ não atenderem aos seus requisitos de controle de acesso, crie políticas personalizadas do Resource Access Management (RAM) para aplicar o princípio de menor privilégio no nível de instância, tópico ou grupo.

Políticas de sistema versus políticas personalizadas

As políticas do RAM dividem-se em duas categorias:

Tipo

Criado por

Editável

Controle de versão

Políticas de sistema

Alibaba Cloud

Não

Não

Políticas personalizadas

Você

Sim

Sim, por meio do gerenciamento de versões do RAM

Após criar uma política personalizada, anexe-a a um usuário RAM, grupo de usuários RAM ou função RAM para conceder as permissões especificadas. É possível excluir diretamente uma política personalizada que não esteja anexada a nenhum principal. Para excluir uma política personalizada anexada a um principal, desanexe-a primeiro.

Ações e escopo de recursos

A tabela a seguir lista as ações disponíveis para políticas personalizadas do ApsaraMQ for RocketMQ e os tipos de recurso aos quais cada ação se aplica.

Ação

Descrição

Tipos de recurso aplicáveis

mq:QueryInstanceBaseInfo

Consultar detalhes da instância

Instância

mq:PUB

Publicar mensagens em um tópico

Tópico

mq:SUB

Inscrever-se para receber mensagens de um tópico ou grupo

Tópico, Grupo

mq:*

Todas as ações

Todos

Formatos de ARN de recurso

O ApsaraMQ for RocketMQ oferece suporte a dois modelos de escopo de recurso, dependendo se a instância utiliza namespaces. A hierarquia de escopo, do mais amplo ao mais restrito, é: Instância > Tópico/Grupo.

  • Com namespaces: tópicos e grupos têm escopo definido na instância. O ID da instância faz parte do ARN do tópico e do grupo.

  • Sem namespaces: tópicos e grupos possuem escopo global. O ARN contém apenas o nome do tópico ou do grupo.

Recurso

ARN (com namespace)

ARN (sem namespace)

Instância

acs:mq:*:*:{instanceId}

acs:mq:*:*:{instanceId}

Tópico

acs:mq:*:*:{instanceId}%{topic}

acs:mq:*:*:{topic}

Grupo

acs:mq:*:*:{instanceId}%{groupId}

acs:mq:*:*:{groupId}

Todos os recursos em uma instância

acs:mq:*:*:{instanceId}*

N/A

Importante

Antes de conceder permissões em um tópico ou grupo, conceda a permissão mq:QueryInstanceBaseInfo na instância correspondente.

Criar e aplicar uma política personalizada

  1. Crie uma política personalizada no console do RAM. Para obter etapas detalhadas, consulte Criar uma política personalizada.

  2. Anexe a política a um usuário RAM, grupo de usuários RAM ou função RAM.

  3. Verifique se o principal acessa apenas os recursos pretendidos.

Para utilizar uma política personalizada, compreenda os requisitos de gerenciamento de permissões do seu negócio e as informações de autorização do ApsaraMQ for RocketMQ. Para a lista completa de ações e definições de recursos, consulte Autorização do RAM.

Exemplos de políticas

Importante

Os exemplos JSON abaixo contêm comentários // apenas para fins explicativos. Remova todos os comentários antes de usar o código. O JSON não suporta comentários em linha.

Conceder permissões de publicação e assinatura em um tópico e grupo específicos

Esta política concede a um usuário RAM permissão para publicar mensagens e se inscrever para receber mensagens de um tópico e grupo específicos em uma única instância.

Substitua os seguintes espaços reservados pelos seus valores:

Espaço reservado

Descrição

Exemplo

{instanceId}

ID da instância RocketMQ

MQ_INST_abc123

{topic}

Nome do tópico

order-topic

{groupId}

ID do grupo de consumidores

GID_order-consumer

Instâncias com namespaces:

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "mq:QueryInstanceBaseInfo"
            ],
            "Resource": [
                "acs:mq:*:*:{instanceId}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "mq:PUB",
                "mq:SUB"
            ],
            "Resource": [
                "acs:mq:*:*:{instanceId}%{topic}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "mq:SUB"
            ],
            "Resource": [
                "acs:mq:*:*:{instanceId}%{groupId}"
            ]
        }
    ]
}

A política contém três instruções:

  • Instrução 1: concede mq:QueryInstanceBaseInfo na instância. Obrigatória antes de conceder permissões no nível de tópico ou grupo.

  • Instrução 2: concede mq:PUB e mq:SUB em um tópico específico, com escopo limitado à instância pelo formato de ARN {instanceId}%{topic}.

  • Instrução 3: concede mq:SUB em um grupo específico.

Instâncias sem namespaces:

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "mq:QueryInstanceBaseInfo"
            ],
            "Resource": [
                "acs:mq:*:*:{instanceId}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "mq:PUB",
                "mq:SUB"
            ],
            "Resource": [
                "acs:mq:*:*:{topic}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "mq:SUB"
            ],
            "Resource": [
                "acs:mq:*:*:{groupId}"
            ]
        }
    ]
}

Diferença: os ARNs de tópico e grupo não incluem o prefixo do ID da instância. O campo de recurso usa acs:mq:*:*:{topic} em vez de acs:mq:*:*:{instanceId}%{topic}.

Conceder permissões totais em todos os recursos de uma instância

Esta política concede todas as permissões em cada recurso (tópicos, grupos) dentro de uma única instância. Aplica-se apenas a instâncias com namespaces.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "mq:*"
            ],
            "Resource": [
                "acs:mq:*:*:{instanceId}*"
            ]
        }
    ]
}

O caractere curinga * após {instanceId} corresponde a todos os tópicos e grupos nessa instância. Substitua {instanceId} pelo ID da sua instância.

Referências