Criteri coda
Utilizzare il servizio Oracle Cloud Infrastructure Identity and Access Management (IAM) per creare criteri per le code.
In questo argomento vengono descritti i dettagli per la scrittura dei criteri per controllare l'accesso al servizio Coda.
Quando si scrivono i criteri, tenere presente che il servizio Queue supporta l'autenticazione utilizzando i metodi riportati di seguito.
- Nome utente e token di autenticazione: sono supportati sia per l'API REST che per il protocollo STOMP.
- Principal istanza: supportato solo per l'API REST (l'istanza di computazione deve essere assegnata a un gruppo dinamico).
Panoramica della sintassi dei criteri
Di seguito è riportata la sintassi generale di un'istruzione criterio.
allow <subject> to <verb>
<resource-type> in <location> where <condition>
Ad esempio, è possibile specificare quanto riportato di seguito.
-
Gruppo o gruppo dinamico per nome o OCID come
<subject>. In alternativa, è possibile utilizzareany-userper coprire tutti gli utenti nella tenancy. -
inspect,read,useemanagecome<verb>per concedere a<subject>l'accesso a una o più autorizzazioni.Quando si passa da
inspect>read>use>manage, il livello di accesso generalmente aumenta e le autorizzazioni concesse sono cumulative. Ad esempio,useincludereadoltre alla possibilità di eseguire l'aggiornamento. -
Una famiglia di risorse come
virtual-network-familyperresource-type. In alternativa, è possibile specificare una singola risorsa in una famiglia comevcnsesubnets. -
Compartimento in base al nome o all'OCID come
<location>. In alternativa, è possibile utilizzaretenancyper coprire l'intera tenancy. -
Una o più condizioni in
<condition>, che devono essere soddisfatte affinché l'accesso sia concesso. Per più condizioni, è possibile utilizzareanyoall.Una condizione è costituita da una o più variabili. Una variabile può essere rilevante per la richiesta stessa (ad esempio,
request.operation) o per la risorsa su cui si agisce nella richiesta (ad esempio,target.queue.id). Per illustrare, per consentire a un gruppo di gestire un'area di lavoro specifica e non un'altra area di lavoro:allow group <group-name> to manage queues in compartment <compartment-name> where target.queue.id = '<queue-ocid>'In alternativa, per consentire a un gruppo di gestire tutte le risorse Coda nella tenancy:
allow group <group-name> to manage queues in tenancy
Per ulteriori informazioni sulla creazione dei criteri, consulta la Guida introduttiva ai criteri e il riferimento ai criteri.
Resource-Types
Per concedere agli utenti l'accesso alle risorse della coda, creare criteri IAM con i tipi di risorsa Coda.
Per accedere a tutte le risorse della coda, utilizzare il tipo di risorsa queues.
Se non si desidera che gli utenti gestiscano le code, ma si desidera che vengano prodotte in una coda o utilizzate da una coda, utilizzare i tipi di risorsa seguenti:
-
queue-push -
queue-pull
Per ulteriori informazioni, vedere Esempi di criteri.
Variabili supportate
Il servizio Queue supporta tutte le variabili generali, oltre a quelle elencate qui.
Per ulteriori informazioni sulle variabili generali supportate dai servizi OCI, vedere Variabili generali per tutte le richieste.
| Variabile | Tipo di variabile | Origine |
|---|---|---|
target.queue.id
|
Entità (OCID) | Richiedi |
target.queue.name
|
Stringa | Richiedi |
Dettagli per le combinazioni verbi-tipo di risorsa
Esistono vari verbi e tipi di risorse di Oracle Cloud Infrastructure che è possibile utilizzare per creare un criterio.
Le tabelle seguenti mostrano le autorizzazioni e le operazioni API coperte da ciascun verbo per la coda. Il livello di accesso è cumulativo quando si passa da inspect a read a use a manage. Un segno più (+) in una cella di tabella indica l'accesso incrementale rispetto alla cella direttamente sopra di essa, mentre "nessun extra" indica nessun accesso incrementale.
| Verbi | Autorizzazioni | API completamente coperte | API parzialmente coperte |
|---|---|---|---|
| ispezionare |
QUEUE_INSPECT |
|
nessuno |
| letto |
ISPEZIONA + QUEUE_READ |
ISPEZIONA +
|
nessuno |
| utilizzare |
LETTO + QUEUE_UPDATE QUEUE_PRODUCE QUEUE_CONSUME |
LETTO +
|
nessuno |
| gestisci |
USE + QUEUE_CREATE QUEUE_DELETE QUEUE_MOVE |
USE +
|
nessuno |
| Verbi | Autorizzazioni | API completamente coperte | API parzialmente coperte |
|---|---|---|---|
| ispezionare |
nessuno |
nessuno |
nessuno |
| letto |
nessuno |
nessuno |
nessuno |
| utilizzare |
QUEUE_PRODUCE |
|
nessuno |
| gestisci |
nessuno |
nessuno |
nessuno |
| Verbi | Autorizzazioni | API completamente coperte | API parzialmente coperte |
|---|---|---|---|
| ispezionare |
nessuno |
nessuno |
nessuno |
| letto |
nessuno |
nessuno |
nessuno |
| utilizzare |
QUEUE_CONSUME |
|
nessuno |
| gestisci |
nessuno |
nessuno |
nessuno |
Autorizzazioni necessarie per ogni operazione API
Nella tabella seguente sono elencate le operazioni API per la coda in ordine logico, raggruppate per tipo di risorsa.
I tipi di risorsa sono queues, queue-push e queue-pull.
Per informazioni sulle autorizzazioni, vedere Autorizzazioni.
| Operazione API | Autorizzazioni necessarie per utilizzare l'operazione |
|---|---|
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 |
Criteri per gruppi di consumer
Imposta le autorizzazioni in modo che persone o applicazioni diverse possano utilizzare code e gruppi di consumer nel modo desiderato.
È necessario concedere l'autorizzazione a team o app diversi per eseguire il lavoro con fanout della coda e gruppi di consumer. Di seguito vengono riportati alcuni esempi.
Consenti gestione completa code e gruppi di consumer
Utilizzare questa opzione se qualcuno deve eseguire tutte le operazioni. Creare code, attivare il fanout e gestire tutti i gruppi di consumer.
allow group QueueAdmins to manage queues in compartment <compartment-name>
allow group QueueAdmins to manage queue-consumer-groups in compartment <compartment-name>
Autorizzazioni concesse:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Consenti accesso in sola lettura ai gruppi di consumer
Utilizzare questa opzione quando si desidera che qualcuno esamini solo i gruppi di consumer e le relative impostazioni, senza modifiche consentite.
allow group QueueAuditors to inspect queue-consumer-groups in compartment <compartment-name>
allow group QueueAuditors to read queue-consumer-groups in compartment <compartment-name>
Autorizzazioni concesse:
- QUEUE_CONSUMER_GROUP_INSPECT
- QUEUE_CONSUMER_GROUP_READ
Consenti gestione gruppi di consumatori ma non code
Utilizzare questa opzione per i team che organizzano e impostano gruppi di consumer e filtri, ma non devono interferire con le code stesse.
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
Autorizzazioni concesse:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Consenti ai producer di inviare messaggi alle code (nessun accesso al gruppo di consumer)
Utilizzare questa opzione per le app che devono solo inviare messaggi (push) in una coda, ma non leggere o visualizzare i dettagli del gruppo.
allow dynamic-group QueueProducers to use queue-push in compartment <compartment-name>
Autorizzazioni concesse:
- QUEUE_PRODUCE
Consenti consumo consumatori da un gruppo di consumatori specifico
Utilizzare questa opzione per le applicazioni o i team che devono estrarre i messaggi solo da un determinato gruppo di consumer e non visualizzarne altri.
allow dynamic-group AppConsumers to use queue-pull in compartment <compartment-name>
where target.consumer-group.id = '<consumer_group_ocid>'
Autorizzazioni concesse:
- QUEUE_CONSUME
Consenti consumo da qualsiasi gruppo di consumatori in un compartimento
Utilizzare questa opzione quando un'applicazione o un servizio deve estrarre i messaggi da qualsiasi gruppo nello stesso compartimento.
allow dynamic-group SharedConsumers to use queue-pull in compartment <compartment-name>
Autorizzazioni concesse:
- QUEUE_CONSUME
Consenti agli operatori di ispezionare le code ma gestisci completamente i gruppi di consumatori
Utilizzare questi criteri per le persone che devono visualizzare i dettagli della coda e che desiderano organizzare in modo completo gruppi e filtri di consumer.
allow group FanoutOperators to inspect queues in compartment <compartment-name>
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
Autorizzazioni concesse:
- Ispeziona code
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Consenti ai proprietari delle code di abilitare il fan-out ma delega la gestione dei gruppi di consumer
Utilizzare questa opzione per i team in cui i proprietari delle code gestiscono le code, ma i team delle applicazioni gestiscono l'impostazione dei gruppi di consumer.
Proprietari coda:
allow group QueueOwners to manage queues in compartment <compartment-name>
Team applicativi:
allow group AppTeams to manage queue-consumer-groups in compartment <compartment-name>
Autorizzazioni concesse:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Procedure ottimali
- Dai a ogni team o app solo le autorizzazioni di cui hanno bisogno.
- Utilizzare
target.consumer-group.idper limitare gli utenti che possono leggere da un gruppo. - Mantieni separati, se possibile, i ruoli di producer, consumer e fan-out manager.
- Offri accesso completo alla gestione delle code solo a coloro che ne hanno bisogno.
- I gruppi dinamici sono utili per applicazioni o servizi automatizzati che richiedono autorizzazioni speciali.
Esempi di criteri
Informazioni sui criteri IAM della coda mediante esempi.
Per gli amministratori, il criterio riportato di seguito consente al gruppo specificato di eseguire tutte le operazioni con le code e le risorse correlate del servizio Coda.
Allow QueueManagers to manage queues in compartment <compartment_name>
Utilizzare i criteri riportati di seguito per consentire a un gruppo specificato di produrre o consumare da una coda.
Allow QueueProducers to use queue-push in compartment <compartment_name>
Allow QueueConsumers to use queue-pull in compartment <compartment_name>
Utilizzare il seguente criterio per consentire a un gruppo specificato di ispezionare e leggere i dettagli della coda:
Allow QueueReaders to read queues in compartment <compartment_name>