Todos os produtos
Search
Central de documentação

ApsaraMQ for RabbitMQ:Creating custom policies for RAM identities

Última atualização: Jun 28, 2026

O Resource Access Management (RAM) oferece políticas de sistema para cenários comuns de controle de acesso. Se as políticas de sistema não oferecerem a granularidade necessária, crie políticas personalizadas para aplicar o princípio de menor privilégio aos recursos do ApsaraMQ for RabbitMQ.

Perfis de permissão comuns

Antes de criar uma política do zero, identifique o padrão de acesso adequado ao seu caso de uso.

Padrão de acesso

Escopo

Exemplo de política

Apenas publicação

Vhost único

Exemplo 2: Publicar mensagens

Apenas consumo

Vhost único

Exemplo 3: Consumir mensagens

Publicação e consumo

Vhost único

Exemplo 4: Publicar e consumir mensagens

Mensageria completa

Vhost único (inclui gerenciamento de credenciais)

Exemplo 1: Acesso total à mensageria em um vhost

Gerenciamento de credenciais

Instância única

Exemplo 5: Gerenciar credenciais de conta estática

Criação de instâncias

Toda a conta

Exemplo 6: Criar instâncias

Criação restrita de instâncias

Toda a conta, com condições

Exemplo 7: Criar instâncias Platinum Edition sem acesso à internet

Administração completa da instância

Instância única

Exemplo 8: Acesso total a uma única instância

Conceitos básicos de políticas personalizadas

Ao contrário das políticas de sistema gerenciadas pela Alibaba Cloud, você é responsável por criar e manter as políticas personalizadas.

  • Anexação: anexe a política personalizada a um usuário RAM, grupo de usuários ou função RAM para que as permissões entrem em vigor.

  • Exclusão: desanexe a política de todos os principais antes de excluí-la. É possível excluir diretamente políticas não anexadas.

  • Versionamento: o RAM fornece controle de versão para políticas personalizadas. Gerencie as versões das políticas pelo console RAM ou pela API.

Operações relacionadas

Formato do ARN de recurso

Todos os recursos do ApsaraMQ for RabbitMQ usam o seguinte formato de Alibaba Cloud Resource Name (ARN):

acs:amqp:$region:$accountid:/instances/$instanceId/...

Variável

Descrição

Exemplo

$region

Região onde o recurso reside. Use * para todas as regiões.

cn-hangzhou

$accountid

ID da conta Alibaba Cloud. Use * para qualquer conta.

1234567890

$instanceId

ID da instância do ApsaraMQ for RabbitMQ

amqp-cn-xxxxx

$vhostName

Nome do vhost

my-vhost

$exchangeName

Nome do exchange

my-exchange

$queueName

Nome da fila

my-queue

Hierarquia de recursos

instances/
├── $instanceId/
│   ├── vhosts/
│   │   └── $vhostName/
│   │       ├── exchanges/
│   │       │   └── $exchangeName/
│   │       │       └── messages/*
│   │       └── queues/
│   │           └── $queueName/
│   │               └── messages/*
│   └── staticAccount/*

Para consultar as regiões suportadas, veja Endpoints.

Referência de ações

As ações do ApsaraMQ for RabbitMQ dividem-se em duas categorias: ações da API de cliente, para operações do protocolo AMQP, e ações do console e OpenAPI, para gerenciamento via console e API.

Ações da API de cliente

API de cliente

Ação

Recurso

Descrição

exchange.declare (passive=false)

amqp:CreateExchange

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/*

Declara um exchange. Cria o exchange se ele não existir. Se já existir, valida suas propriedades e retorna um erro em caso de incompatibilidade.

exchange.declare (passive=true)

amqp:GetExchange

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName

Verifica se um exchange existe. Retorna um erro caso não exista.

exchange.bind

amqp:GetExchange (source)

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName (source)

Vincula um exchange de source a um exchange de destino.

amqp:CreateExchange (destino)

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/* (destino)

exchange.unbind

amqp:GetExchange (source)

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName (source)

Desvincula um exchange de source de um exchange de destino.

amqp:CreateExchange (destino)

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/* (destino)

queue.declare (passive=false)

amqp:CreateQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

Declara uma fila. Cria a fila se ela não existir. Se já existir, valida suas propriedades e retorna um erro em caso de incompatibilidade.

queue.declare (passive=true)

amqp:GetQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName

Verifica se uma fila existe. Retorna um erro caso não exista.

queue.declare (com dead-letter exchange)

amqp:CreateQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

Declara uma fila vinculada a um dead-letter exchange.

amqp:GetQueue

acs:amqp:$region:$accountid:/vhosts/$vhostName/queues/$queueName

amqp:CreateExchange (dead-letter)

acs:amqp:$region:$accountid:/instances/$instanceName/vhosts/$vhostName/exchanges/$exchangeName (dead-letter)

queue.bind

amqp:CreateQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

Vincula uma fila a um exchange.

amqp:GetExchange

acs:amqp:$region:$accountid:/instances/$instanceName/vhosts/$vhostName/exchanges/$exchangeName

queue.unbind

amqp:CreateQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

Desvincula uma fila de um exchange.

amqp:GetExchange

acs:amqp:$region:$accountid:/instances/$instanceName/vhosts/$vhostName/exchanges/$exchangeName

BasicRecover

amqp:BasicRecover

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

Reentrega mensagens não confirmadas a um consumidor.

BasicCancel

amqp:BasicCancel

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Cancela a assinatura de um consumidor.

BasicPublish

amqp:BasicPublish

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName/messages/*

Publica uma mensagem em um exchange.

BasicConsume

amqp:BasicConsume

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Inicia um consumidor em uma fila.

BasicAck

amqp:BasicAck

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Confirma uma ou mais mensagens.

BasicNack

amqp:BasicNack

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Rejeita uma ou mais mensagens.

BasicReject

amqp:BasicReject

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Rejeita uma única mensagem.

BasicGet

amqp:BasicGet

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Acessa diretamente as mensagens em uma fila.

Ações do console e OpenAPI

Operação da API

Ação

Recurso

Descrição

ListInstances

amqp:ListInstance

acs:amqp:$region:$accountid:/instances/*

Consulta a lista de instâncias.

CreateInstance

amqp:CreateInstance

acs:amqp:$region:$accountid:/instances/*

Cria uma instância. Suporta chaves de condição.

DeleteInstance

amqp:DeleteInstance

acs:amqp:$region:$accountid:/instances/$instanceId

Exclui uma instância.

GetInstance

amqp:GetInstance

acs:amqp:$region:$accountid:/instances/$instanceId

Visualiza uma instância.

ListVhost

amqp:ListVhost

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/*

Consulta a lista de vhosts.

CreateVhost

amqp:CreateVhost

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/*

Cria um vhost.

DeleteVhost

amqp:DeleteVhost

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName

Exclui um vhost. Também requer amqp:GetInstance na instância.

ListExchange

amqp:ListExchange

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/*

Consulta a lista de exchanges. Também requer amqp:GetInstance na instância.

CreateExchange

amqp:CreateExchange

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/*

Cria um exchange.

DeleteExchange

amqp:DeleteExchange

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName

Exclui um exchange.

ListQueue

amqp:ListQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

Consulta a lista de filas. Também requer amqp:GetInstance na instância.

CreateQueue

amqp:CreateQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/*

Cria uma fila.

DeleteQueue

amqp:DeleteQueue

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName

Exclui uma fila.

QueuePurge

amqp:QueuePurge

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Limpa uma fila.

ListStaticAccounts

amqp:ListStaticAccounts

acs:amqp:$region:$accountid:/instances/$instanceId/staticAccount/*

Visualiza o nome de usuário e a senha. Também requer amqp:GetInstance na instância.

FetchStaticAccount

amqp:FetchStaticAccount

acs:amqp:$region:$accountid:/instances/$instanceId/staticAccount/*

Cria um nome de usuário e senha. Também requer amqp:GetInstance na instância.

DeleteStaticAccount

amqp:DeleteStaticAccount

acs:amqp:$region:$accountid:/instances/$instanceId/staticAccount/*

Exclui o nome de usuário e a senha.

Consultar mensagens por fila

amqp:BasicGet

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Acessa mensagens em uma fila.

Consultar mensagens por ID da mensagem

amqp:BasicGet

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Acessa mensagens em uma fila.

Reenviar mensagens

amqp:BasicGet, amqp:BasicPublish

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Reenvia mensagens.

Enviar mensagens

amqp:BasicPublish

acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/*

Envia mensagens.

Chaves de condição para CreateInstance

A ação CreateInstance suporta as seguintes chaves de condição para restringir a criação de instâncias. Para mais informações, consulte Condição.

Chave de condição

Tipo

Valores válidos

Descrição

amqp:InstanceType

String

enterprise (Enterprise Edition), vip (Platinum Edition)

Restringe quais edições de instância uma identidade RAM pode criar.

amqp:SupportEIP

String

true, false

Define se a instância suporta acesso à internet.

Exemplos de políticas

Importante

Substitua as variáveis de espaço reservado nos exemplos a seguir pelos seus valores reais. Para detalhes sobre cada variável, consulte Formato do ARN de recurso.

Exemplo 1: Acesso total à mensageria em um vhost

Concede permissões para publicar, consumir e gerenciar exchanges, filas e credenciais de conta estática em um vhost específico.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "amqp:GetInstance",
                "amqp:ListVhost",
                "amqp:GetVhost"
            ],
            "Resource": [
                "acs:amqp:*:*:/instances/$instanceId",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:ListExchange",
                "amqp:CreateExchange",
                "amqp:DeleteExchange",
                "amqp:ListQueue",
                "amqp:DeleteQueue",
                "amqp:CreateQueue",
                "amqp:BasicRecover",
                "amqp:BasicCancel",
                "amqp:BasicPublish",
                "amqp:BasicConsume",
                "amqp:BasicAck",
                "amqp:BasicNack",
                "amqp:BasicReject",
                "amqp:QueuePurge",
                "amqp:BasicGet",
                "amqp:GetExchange",
                "amqp:GetQueue"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:ListStaticAccounts",
                "amqp:FetchStaticAccount",
                "amqp:DeleteStaticAccount"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/staticAccount/*",
            "Effect": "Allow"
        }
    ]
}

Exemplo 2: Publicar mensagens

Concede as permissões mínimas para um cliente produtor publicar mensagens em exchanges dentro de um vhost específico: declarar exchanges e filas, publicar mensagens e confirmar a entrega.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "amqp:GetInstance"
            ],
            "Resource": [
                "acs:amqp:*:*:/instances/$instanceId",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:CreateExchange",
                "amqp:CreateQueue",
                "amqp:BasicRecover",
                "amqp:BasicPublish",
                "amqp:BasicAck",
                "amqp:BasicNack",
                "amqp:GetExchange",
                "amqp:GetQueue"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
            "Effect": "Allow"
        }
    ]
}

Exemplo 3: Consumir mensagens

Concede as permissões mínimas para um cliente consumidor receber mensagens de filas dentro de um vhost específico: declarar exchanges e filas, consumir mensagens e gerenciar confirmações.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "amqp:GetInstance",
                "amqp:GetVhost"
            ],
            "Resource": [
                "acs:amqp:*:*:/instances/$instanceId",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:CreateExchange",
                "amqp:CreateQueue",
                "amqp:BasicRecover",
                "amqp:BasicCancel",
                "amqp:BasicConsume",
                "amqp:BasicAck",
                "amqp:BasicNack",
                "amqp:BasicReject",
                "amqp:QueuePurge",
                "amqp:BasicGet",
                "amqp:GetExchange",
                "amqp:GetQueue"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
            "Effect": "Allow"
        }
    ]
}

Exemplo 4: Publicar e consumir mensagens

Concede permissões para publicar e consumir mensagens em um vhost específico. Combina as ações do Exemplo 2 e do Exemplo 3.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "amqp:GetInstance",
                "amqp:GetVhost"
            ],
            "Resource": [
                "acs:amqp:*:*:/instances/$instanceId",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:ListExchange",
                "amqp:CreateExchange",
                "amqp:DeleteExchange",
                "amqp:ListQueue",
                "amqp:DeleteQueue",
                "amqp:CreateQueue",
                "amqp:BasicRecover",
                "amqp:BasicCancel",
                "amqp:BasicPublish",
                "amqp:BasicConsume",
                "amqp:BasicAck",
                "amqp:BasicNack",
                "amqp:BasicReject",
                "amqp:QueuePurge",
                "amqp:BasicGet",
                "amqp:GetExchange",
                "amqp:GetQueue"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
            "Effect": "Allow"
        }
    ]
}

Exemplo 5: Gerenciar credenciais de conta estática

Concede permissões para listar, criar e excluir credenciais de conta estática (pares de nome de usuário e senha) de uma instância específica.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "amqp:ListStaticAccounts",
                "amqp:FetchStaticAccount",
                "amqp:DeleteStaticAccount"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/staticAccount/*"
        },
        {
            "Effect": "Allow",
            "Action": "amqp:GetInstance",
            "Resource": "acs:amqp:*:*:/instances/$instanceId"
        }
    ]
}

Exemplo 6: Criar instâncias

Concede permissões para criar instâncias do ApsaraMQ for RabbitMQ de qualquer edição em qualquer região.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "amqp:CreateInstance",
            "Resource": "acs:amqp:*:$accountid:/instances/*"
        }
    ]
}

Exemplo 7: Criar instâncias Platinum Edition sem acesso à internet

Usa chaves de condição para restringir a criação de instâncias à Platinum Edition (vip) sem suporte a acesso à internet (SupportEIP: false).

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "amqp:CreateInstance",
            "Resource": "acs:amqp:*:$accountid:/instances/*",
            "Condition": {
                "StringEquals": {
                    "amqp:InstanceType": [
                        "vip"
                    ],
                    "amqp:SupportEIP": [
                        "false"
                    ]
                }
            }
        }
    ]
}

Exemplo 8: Acesso total a uma única instância

Concede todas as permissões do ApsaraMQ for RabbitMQ em uma única instância, incluindo gerenciamento de vhost, operações de mensageria e gerenciamento de contas estáticas. A ação amqp:ListInstance tem escopo definido para todas as instâncias, garantindo que a instância alvo apareça na lista de instâncias do console.

{
    "Version": "1",
    "Statement": [
        {
            "Action": "amqp:ListInstance",
            "Resource": "acs:amqp:*:*:/instances/*",
            "Effect": "Allow"
        },
        {
            "Action": "amqp:*",
            "Resource": [
                "acs:amqp:*:*:/instances/$instanceId",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:ListStaticAccounts",
                "amqp:FetchStaticAccount",
                "amqp:DeleteStaticAccount"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/staticAccount/*",
            "Effect": "Allow"
        }
    ]
}

Referências