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 usar any-user para abranger todos os usuários da tenancy.

  • inspect, read, use e manage como <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, use inclui read mais a capacidade de atualizar.

  • Uma família de recursos como virtual-network-family para o resource-type . Ou você pode especificar um recurso individual em uma família, como vcns e subnets.

  • Um compartimento por nome ou OCID como <location> . Ou você pode usar tenancy para 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 usar any ou all.

    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.

queue
Verbos Permissões APIs Totalmente Incluídas APIs Parcialmente Incluídas
inspect

QUEUE_INSPECT

ListQueues

ListWorkRequests

ListWorkRequestErrors

ListWorkRequestLogs

none

read

INSPECT +

QUEUE_READ

INSPECT +

GetQueue

GetWorkRequest

GetStats

ListChannels

none

use

READ +

QUEUE_UPDATE

QUEUE_PRODUCE

QUEUE_CONSUME

READ +

UpdateQueue

PutMessages

GetMessages

UpdateMessage

DeleteMessage

none

manage

USE +

QUEUE_CREATE

QUEUE_DELETE

QUEUE_MOVE

USE +

CreateQueue

DeleteQueue

MoveQueue

none

queue-push
Verbos Permissões APIs Totalmente Incluídas APIs Parcialmente Incluídas
inspect

none

none

none

read

none

none

none

use

QUEUE_PRODUCE

PutMessages

none

manage

none

none

none

queue-pull
Verbos Permissões APIs Totalmente Incluídas APIs Parcialmente Incluídas
inspect

none

none

none

read

none

none

none

use

QUEUE_CONSUME

GetMessages

UpdateMessage

DeleteMessage

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.

Permissões Obrigatórias
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.id para 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>