Políticas de Fila
Use o serviço Oracle Cloud Infrastructure Identity and Access Management (IAM) para criar políticas para suas filas.
Este tópico abrange detalhes da criação de políticas para controlar o acesso ao serviço Queue.
Ao gravar políticas, observe que o serviço Queue suporta autenticação usando os seguintes métodos:
- Nome do usuário e token de autenticação: Suportado para a API REST e o protocolo STOMP.
- Principal de instâncias: Suportado somente para a API REST (a instância de computação deve ser designada a um grupo dinâmico).
Visão Geral da Sintaxe de Política
A sintaxe geral de uma instrução de política é:
allow <subject> to <verb>
<resource-type> in <location> where <condition>
Por exemplo, você pode especificar:
-
Um grupo comum ou dinâmico por nome ou OCID como
<subject>. Ou você pode usarany-userpara abranger todos os usuários da tenancy. -
inspect,read,useemanagecomo<verb>para conceder a um<subject>acesso a uma ou mais permissões.Conforme você percorre
inspect>read>use>manage, o nível de acesso geralmente aumenta e as permissões concedidas são cumulativas. Por exemplo,useincluireadmais a capacidade de atualizar. -
Uma família de recursos como
virtual-network-familypara oresource-type. Ou você pode especificar um recurso individual em uma família, comovcnsesubnets. -
Um compartimento por nome ou OCID como
<location>. Ou você pode usartenancypara abranger toda a tenancy. -
Uma ou mais condições em
<condition>, que devem ser atendidas para que o acesso seja concedido. Para várias condições, você pode usaranyouall.Uma condição consiste em uma ou mais variáveis. Uma variável pode ser relevante para a própria solicitação (por exemplo,
request.operation) ou para o recurso que está sendo utilizado na solicitação (por exemplo,target.queue.id). Como ilustração, para permitir que um grupo gerencie um espaço de trabalho específico e não qualquer outro espaço de trabalho:allow group <group-name> to manage queues in compartment <compartment-name> where target.queue.id = '<queue-ocid>'Como alternativa, para permitir que um grupo gerencie todos os recursos do serviço Queue na tenancy:
allow group <group-name> to manage queues in tenancy
Para obter mais informações sobre a criação de políticas, consulte Conceitos Básicos de Políticas e Referência de Políticas.
Tipos de Recursos
Para conceder aos usuários acesso aos recursos do serviço Queue, crie políticas de IAM com tipos de recursos do serviço Queue.
Para acessar todos os recursos do serviço Queue, use o tipo de recurso queues.
Se você não quiser que os usuários gerenciem filas, mas quiser que eles produzam para uma fila ou consumam de uma fila, use os seguintes tipos de recursos individuais:
-
queue-push -
queue-pull
Consulte Exemplos de Política para obter mais informações.
Variáveis com Suporte
O serviço Queue suporta todas as variáveis gerais, além das listadas aqui.
Para obter mais informações sobre variáveis gerais que têm suporte dos serviços do OCI, consulte Variáveis Gerais para Todas as Solicitações.
| Variável | Tipo de Variável | Origem |
|---|---|---|
target.queue.id
|
Entidade (OCID) | Solicitação |
target.queue.name
|
String | Solicitação |
Detalhes das Combinações de Verbos e Tipo de Recurso
Há diversos verbos e tipos de recursos do Oracle Cloud Infrastructure que podem ser usados para criar uma política.
As tabelas a seguir mostram as permissões e operações de API abrangidas por cada verbo do Queue. O nível de acesso é cumulativo conforme você vai de inspect a read a use a manage. Um sinal de mais (+) em uma célula da tabela indica acesso incremental em comparação com a célula diretamente acima, enquanto "nenhum extra" indica nenhum acesso incremental.
| Verbos | Permissões | APIs Totalmente Incluídas | APIs Parcialmente Incluídas |
|---|---|---|---|
| inspect |
QUEUE_INSPECT |
|
none |
| read |
INSPECT + QUEUE_READ |
INSPECT +
|
none |
| use |
READ + QUEUE_UPDATE QUEUE_PRODUCE QUEUE_CONSUME |
READ +
|
none |
| manage |
USE + QUEUE_CREATE QUEUE_DELETE QUEUE_MOVE |
USE +
|
none |
| Verbos | Permissões | APIs Totalmente Incluídas | APIs Parcialmente Incluídas |
|---|---|---|---|
| inspect |
none |
none |
none |
| read |
none |
none |
none |
| use |
QUEUE_PRODUCE |
|
none |
| manage |
none |
none |
none |
| Verbos | Permissões | APIs Totalmente Incluídas | APIs Parcialmente Incluídas |
|---|---|---|---|
| inspect |
none |
none |
none |
| read |
none |
none |
none |
| use |
QUEUE_CONSUME |
|
none |
| manage |
none |
none |
none |
Permissões Exigidas para cada Operação de API
A tabela a seguir lista as operações de API do serviço Queue em ordem lógica, agrupadas por tipo de recurso.
Os tipos de recursos são queues, queue-push e queue-pull.
Para obter informações sobre permissões, consulte Permissões.
| Operação de API | Permissões Obrigatórias para Usar a Operação |
|---|---|
ListQueues
|
QUEUE_INSPECT |
CreateQueue
|
QUEUE_CREATE |
GetQueue
|
QUEUE_READ |
DeleteQueue
|
QUEUE_DELETE |
MoveQueue
|
QUEUE_MOVE |
UpdateQueue
|
QUEUE_UPDATE |
ListWorkRequests
|
QUEUE_INSPECT |
GetWorkRequest
|
QUEUE_READ |
ListWorkRequestErrors
|
QUEUE_INSPECT |
ListWorkRequestLogs
|
QUEUE_INSPECT |
GetStats
|
QUEUE_READ |
ListChannels
|
QUEUE_READ |
PutMessages
|
QUEUE_PRODUCE |
GetMessages
|
QUEUE_CONSUME |
UpdateMessage
|
QUEUE_CONSUME |
DeleteMessage | QUEUE_CONSUME |
CreateConsumerGroup |
QUEUE_CONSUMER_GROUP_CREATE |
DeleteConsumerGroup | QUEUE_CONSUMER_GROUP_DELETE |
GetConsumerGroup | QUEUE_CONSUMER_GROUP_READ |
UpdateConsumerGroup | QUEUE_CONSUMER_GROUP_UPDATE |
ListConsumerGroups | QUEUE_CONSUMER_GROUP_INSPECT |
Políticas para Grupos de Consumidores
Defina as permissões para que diferentes pessoas ou aplicativos possam usar filas e grupos de consumidores da maneira que precisarem.
Você precisa dar permissão para que diferentes equipes ou aplicativos trabalhem com grupos de consumidores e fanout de filas. Seguem alguns exemplos.
Permitir Gerenciamento Completo de Filas e Grupos de Consumidores
Use isso se alguém precisar fazer tudo. fazer filas, ativar fanout e gerenciar todos os grupos de consumidores.
allow group QueueAdmins to manage queues in compartment <compartment-name>
allow group QueueAdmins to manage queue-consumer-groups in compartment <compartment-name>
Permissões Concedidas:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Permitir acesso somente leitura a grupos de consumidores
Use essa opção quando quiser que alguém olhe apenas para grupos de consumidores e suas configurações, sem alterações permitidas.
allow group QueueAuditors to inspect queue-consumer-groups in compartment <compartment-name>
allow group QueueAuditors to read queue-consumer-groups in compartment <compartment-name>
Permissões Concedidas:
- QUEUE_CONSUMER_GROUP_INSPECT
- QUEUE_CONSUMER_GROUP_READ
Permitir o gerenciamento de grupos de consumidores, mas não de filas
Use isso para equipes que organizam e configuram grupos de consumidores e filtros, mas não devem mexer com as próprias filas.
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
Permissões Concedidas:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Permitir que Produtores Enviem Mensagens para Filas (Sem Acesso ao Grupo de Consumidores)
Use isso para aplicativos que precisam apenas enviar (enviar) mensagens para uma fila, mas não ler ou ver detalhes do grupo.
allow dynamic-group QueueProducers to use queue-push in compartment <compartment-name>
Permissões Concedidas:
- QUEUE_PRODUCE
Permitir que os Consumidores Consumam de um Grupo de Consumidores Específico
Use isso para aplicativos ou equipes que só devem extrair mensagens de um determinado grupo de consumidores e não ver outros.
allow dynamic-group AppConsumers to use queue-pull in compartment <compartment-name>
where target.consumer-group.id = '<consumer_group_ocid>'
Permissões Concedidas:
- QUEUE_CONSUME
Permitir que Consumidores Consumam de Qualquer Grupo de Consumidores em um Compartimento
Use essa opção quando um aplicativo ou serviço tiver que extrair mensagens de qualquer grupo no mesmo compartimento.
allow dynamic-group SharedConsumers to use queue-pull in compartment <compartment-name>
Permissões Concedidas:
- QUEUE_CONSUME
Permitir que os operadores inspecionem filas, mas gerenciem totalmente os grupos de consumidores
Use essas políticas para pessoas que precisam ver detalhes da fila e também desejam organizar totalmente grupos de consumidores e filtros.
allow group FanoutOperators to inspect queues in compartment <compartment-name>
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
Permissões Concedidas:
- Inspecionar filas
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Permitir que os Proprietários da Fila Ativem o Fan-out, mas Delegem o Gerenciamento do Grupo de Consumidores
Use essa opção para equipes em que os proprietários de filas gerenciam as filas, mas as equipes de aplicativos lidam com a configuração do grupo de consumidores.
Proprietários da fila:
allow group QueueOwners to manage queues in compartment <compartment-name>
Equipes de aplicação:
allow group AppTeams to manage queue-consumer-groups in compartment <compartment-name>
Permissões Concedidas:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Práticas Recomendadas
- Dê a cada equipe ou aplicativo apenas as permissões necessárias.
- Use
target.consumer-group.idpara limitar quem pode ler em um grupo. - Mantenha as funções de gerente de produtores, consumidores e fan-out separadas, se possível.
- Dê acesso completo ao gerenciamento de filas apenas para aqueles que precisam.
- Os grupos dinâmicos são úteis para aplicativos ou serviços automatizados que precisam de permissões especiais.
Exemplos de Política
Conheça as políticas de IAM do serviço Queue usando exemplos.
Para administradores, a política a seguir permite que o grupo especificado faça tudo com filas e recursos do serviço Queue relacionados:
Allow QueueManagers to manage queues in compartment <compartment_name>
Use as seguintes políticas para permitir que um grupo especificado produza ou consuma de uma fila:
Allow QueueProducers to use queue-push in compartment <compartment_name>
Allow QueueConsumers to use queue-pull in compartment <compartment_name>
Use a seguinte política para permitir que um grupo especificado inspecione e leia detalhes da fila:
Allow QueueReaders to read queues in compartment <compartment_name>