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 |
|
|
Apenas consumo |
Vhost único |
|
|
Publicação e consumo |
Vhost único |
|
|
Mensageria completa |
Vhost único (inclui gerenciamento de credenciais) |
|
|
Gerenciamento de credenciais |
Instância única |
|
|
Criação de instâncias |
Toda a conta |
|
|
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 |
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 |
|
|
Região onde o recurso reside. Use |
|
|
|
ID da conta Alibaba Cloud. Use |
|
|
|
ID da instância do ApsaraMQ for RabbitMQ |
|
|
|
Nome do vhost |
|
|
|
Nome do exchange |
|
|
|
Nome da fila |
|
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) |
|
|
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) |
|
|
Verifica se um exchange existe. Retorna um erro caso não exista. |
|
exchange.bind |
|
|
Vincula um exchange de source a um exchange de destino. |
|
|
|
||
|
exchange.unbind |
|
|
Desvincula um exchange de source de um exchange de destino. |
|
|
|
||
|
queue.declare (passive=false) |
|
|
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) |
|
|
Verifica se uma fila existe. Retorna um erro caso não exista. |
|
queue.declare (com dead-letter exchange) |
|
|
Declara uma fila vinculada a um dead-letter exchange. |
|
|
|
||
|
|
|
||
|
queue.bind |
|
|
Vincula uma fila a um exchange. |
|
|
|
||
|
queue.unbind |
|
|
Desvincula uma fila de um exchange. |
|
|
|
||
|
BasicRecover |
|
|
Reentrega mensagens não confirmadas a um consumidor. |
|
BasicCancel |
|
|
Cancela a assinatura de um consumidor. |
|
BasicPublish |
|
|
Publica uma mensagem em um exchange. |
|
BasicConsume |
|
|
Inicia um consumidor em uma fila. |
|
BasicAck |
|
|
Confirma uma ou mais mensagens. |
|
BasicNack |
|
|
Rejeita uma ou mais mensagens. |
|
BasicReject |
|
|
Rejeita uma única mensagem. |
|
BasicGet |
|
|
Acessa diretamente as mensagens em uma fila. |
Ações do console e OpenAPI
|
Operação da API |
Ação |
Recurso |
Descrição |
|
ListInstances |
|
|
Consulta a lista de instâncias. |
|
CreateInstance |
|
|
Cria uma instância. Suporta chaves de condição. |
|
DeleteInstance |
|
|
Exclui uma instância. |
|
GetInstance |
|
|
Visualiza uma instância. |
|
ListVhost |
|
|
Consulta a lista de vhosts. |
|
CreateVhost |
|
|
Cria um vhost. |
|
DeleteVhost |
|
|
Exclui um vhost. Também requer |
|
ListExchange |
|
|
Consulta a lista de exchanges. Também requer |
|
CreateExchange |
|
|
Cria um exchange. |
|
DeleteExchange |
|
|
Exclui um exchange. |
|
ListQueue |
|
|
Consulta a lista de filas. Também requer |
|
CreateQueue |
|
|
Cria uma fila. |
|
DeleteQueue |
|
|
Exclui uma fila. |
|
QueuePurge |
|
|
Limpa uma fila. |
|
ListStaticAccounts |
|
|
Visualiza o nome de usuário e a senha. Também requer |
|
FetchStaticAccount |
|
|
Cria um nome de usuário e senha. Também requer |
|
DeleteStaticAccount |
|
|
Exclui o nome de usuário e a senha. |
|
Consultar mensagens por fila |
|
|
Acessa mensagens em uma fila. |
|
Consultar mensagens por ID da mensagem |
|
|
Acessa mensagens em uma fila. |
|
Reenviar mensagens |
|
|
Reenvia mensagens. |
|
Enviar mensagens |
|
|
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 |
|
|
String |
|
Restringe quais edições de instância uma identidade RAM pode criar. |
|
|
String |
|
Define se a instância suporta acesso à internet. |
Exemplos de políticas
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"
}
]
}