Queue-Policys

Mit dem IAM-Service (Oracle Cloud Infrastructure Identity and Access Management) können Sie Policys für Ihre Queues erstellen.

In diesem Thema werden Details zum Schreiben von Policys für die Kontrolle des Zugriffs auf den Queue-Service beschrieben.

Beachten Sie beim Schreiben von Policys, dass der Queue-Service die Authentifizierung mit den folgenden Methoden unterstützt:

  • Benutzername und Authentifizierungstoken: Wird sowohl für die REST-API als auch für das STOMP-Protokoll unterstützt.
  • Instanz-Principal: Wird nur für die REST-API unterstützt (die Compute-Instanz muss einer dynamischen Gruppe zugewiesen sein).

Überblick über die Policy-Syntax

Die allgemeine Syntax einer Policy-Anweisung lautet:

allow <subject> to <verb>
                    <resource-type> in <location> where <condition>
                

Beispiel: Sie können Folgendes angeben:

  • Eine Gruppe oder dynamische Gruppe nach Name oder OCID als <subject> . Sie können auch any-user verwenden, um alle Benutzer im Mandanten abzudecken.

  • inspect, read, use und manage als <verb> , um <subject> Zugriff auf Berechtigungen zu erteilen.

    Die Zugriffsebene erhöht sich im Allgemeinen in der Reihenfolge der Verben inspect > read > use > manage, und die erteilten Berechtigungen sind kumulativ. Beispiel: use umfasst read sowie die Möglichkeit zum Aktualisieren.

  • Eine Ressourcenfamilie wie virtual-network-family als resource-type . Sie können auch eine einzelne Ressource in einer Familie angeben, wie vcns und subnets.

  • Ein Compartment nach Name oder OCID als <location> . Sie können auch tenancy verwenden, um den gesamten Mandanten abzudecken.

  • Eine oder mehrere Bedingungen in <condition> , die erfüllt sein müssen, damit der Zugriff erteilt wird. Bei mehreren Bedingungen können Sie any oder all verwenden.

    Eine Bedingung besteht aus mindestens einer Variablen. Eine Variable kann für die Anforderung selbst (z.B. request.operation) oder für die Ressource relevant sein, die in der Anforderung bearbeitet wird (z.B. target.queue.id). So berechtigen Sie eine Gruppe zum Verwalten eines bestimmten Workspace und keines anderen Workspace:

    allow group <group-name> to manage queues in compartment <compartment-name> where target.queue.id = '<queue-ocid>'

    Oder so erteilen Sie einer Gruppe die Berechtigung zum Verwalten aller Queue-Ressourcen im Mandanten:

    allow group <group-name> to manage queues in tenancy

Weitere Informationen zum Erstellen von Policys finden Sie unter Erste Schritte mit Policys und in der Policy-Referenz.

Ressourcentypen

Um Benutzern Zugriff auf Queue-Ressourcen zu erteilen, erstellen Sie IAM-Policys mit Queue-Ressourcentypen.

Verwenden Sie für den Zugriff auf alle Queue-Ressourcen den Ressourcentyp queues.

Wenn Sie Benutzern keine Berechtigungen zum Verwalten von Queues, sondern nur zum Produzieren in einer Queue oder zum Konsumieren aus einer Queue erteilen möchten, verwenden Sie die folgenden individuellen Ressourcentypen:

  • queue-push
  • queue-pull

Weitere Informationen finden Sie unter Policy-Beispiele.

Unterstützte Variablen

Der Queue-Service unterstützt alle allgemeinen plus die hier aufgelisteten Variablen.

Weitere Informationen zu allgemeinen Variablen, die von OCI-Services unterstützt werden, finden Sie unter Allgemeine Variablen für alle Anforderungen.

Variable Variablentyp Quelle
target.queue.id Entity (OCID) Anforderung
target.queue.name String Anforderung

Details zu Kombinationen aus Verben und Ressourcentypen

Für das Erstellen einer Policy stehen in Oracle Cloud Infrastructure verschiedene Verben und Ressourcentypen zur Verfügung.

In den folgenden Tabellen werden die Berechtigungen und API-Vorgänge angezeigt, die von jedem Verb für Queue abgedeckt werden. Die Zugriffsebene ist kumulativ von inspect zu read zu use zu manage. Ein Pluszeichen (+) in einer Tabellenzelle gibt den inkrementellen Zugriff im Vergleich zur Zelle direkt darüber an, während "Keine zusätzlichen" keinen inkrementellen Zugriff angibt.

queue
Verben Berechtigungen Vollständig abgedeckte APIs Teilweise abgedeckte APIs
inspect

QUEUE_INSPECT

ListQueues

ListWorkRequests

ListWorkRequestErrors

ListWorkRequestLogs

keine

read

INSPECT +

QUEUE_READ

INSPECT +

GetQueue

GetWorkRequest

GetStats

ListChannels

keine

use

READ +

QUEUE_UPDATE

QUEUE_PRODUCE

QUEUE_CONSUME

READ +

UpdateQueue

PutMessages

GetMessages

UpdateMessage

DeleteMessage

keine

manage

USE +

QUEUE_CREATE

QUEUE_DELETE

QUEUE_MOVE

USE +

CreateQueue

DeleteQueue

MoveQueue

keine

queue-push
Verben Berechtigungen Vollständig abgedeckte APIs Teilweise abgedeckte APIs
inspect

keine

keine

keine

read

keine

keine

keine

use

QUEUE_PRODUCE

PutMessages

keine

manage

keine

keine

keine

queue-pull
Verben Berechtigungen Vollständig abgedeckte APIs Teilweise abgedeckte APIs
inspect

keine

keine

keine

read

keine

keine

keine

use

QUEUE_CONSUME

GetMessages

UpdateMessage

DeleteMessage

keine

manage

keine

keine

keine

Für jeden API-Vorgang erforderliche Berechtigungen

In der folgenden Tabelle werden die API-Vorgänge für Queue in logischer Reihenfolge nach Ressourcentyp gruppiert aufgeführt.

Die Ressourcentypen sind queues, queue-push und queue-pull.

Informationen zu Berechtigungen finden Sie unter Berechtigungen.

Erforderliche Berechtigungen
API-Vorgang Für den Vorgang erforderliche Berechtigungen
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

Policys für Consumer-Gruppen

Legen Sie die Berechtigungen so fest, dass verschiedene Personen oder Apps Queues und Nutzungsgruppen so verwenden können, wie sie benötigen.

Sie müssen verschiedenen Teams oder Apps die Berechtigung erteilen, mit Warteschlangen-Fanout und Nutzungsgruppen zu arbeiten. Hier finden Sie einige Beispiele.

Vollständige Verwaltung von Warteschlangen und Verbrauchergruppen zulassen

Verwenden Sie diese Option, wenn jemand alles tun muss. Erstellen Sie Queues, aktivieren Sie Fanout und verwalten Sie alle Nutzungsgruppen.

allow group QueueAdmins to manage queues in compartment <compartment-name>
allow group QueueAdmins to manage queue-consumer-groups in compartment <compartment-name>
                    

Erteilte Berechtigungen:

  • QUEUE_CONSUMER_GROUP_CREATE
  • QUEUE_CONSUMER_GROUP_UPDATE
  • QUEUE_CONSUMER_GROUP_DELETE
  • QUEUE_CONSUMER_GROUP_READ
  • QUEUE_CONSUMER_GROUP_INSPECT

Schreibgeschützten Zugriff auf Nutzungsgruppen zulassen

Verwenden Sie diese Option, wenn nur Nutzungsgruppen und deren Einstellungen angezeigt werden sollen. Änderungen sind nicht zulässig.

 allow group QueueAuditors to inspect queue-consumer-groups in compartment <compartment-name>
allow group QueueAuditors to read queue-consumer-groups in compartment <compartment-name>
                    

Erteilte Berechtigungen:

  • QUEUE_CONSUMER_GROUP_INSPECT
  • QUEUE_CONSUMER_GROUP_READ

Verwalten von Verbrauchergruppen, aber nicht Warteschlangen zulassen

Verwenden Sie diese Option für Teams, die Nutzungsgruppen und Filter organisieren und einrichten, aber nicht mit den Warteschlangen selbst mischen sollten.

allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
                    

Erteilte Berechtigungen:

  • QUEUE_CONSUMER_GROUP_CREATE
  • QUEUE_CONSUMER_GROUP_UPDATE
  • QUEUE_CONSUMER_GROUP_DELETE
  • QUEUE_CONSUMER_GROUP_READ
  • QUEUE_CONSUMER_GROUP_INSPECT

Senden von Nachrichten an Queues durch Producer zulassen (kein Nutzungsgruppenzugriff)

Verwenden Sie diese Option für Apps, die nur Nachrichten in eine Queue senden müssen, aber keine Gruppendetails lesen oder anzeigen.

allow dynamic-group QueueProducers to use queue-push in compartment <compartment-name>
                    

Erteilte Berechtigungen:

  • QUEUE_PRODUCE

Konsum von Verbrauchern aus einer bestimmten Verbrauchergruppe zulassen

Verwenden Sie diese Option für Apps oder Teams, die nur Nachrichten aus einer bestimmten Nutzungsgruppe abrufen und keine anderen anzeigen dürfen.

 allow dynamic-group AppConsumers to use queue-pull in compartment <compartment-name>
 where target.consumer-group.id = '<consumer_group_ocid>'
                    

Erteilte Berechtigungen:

  • QUEUE_CONSUME

Verbrauchern das Konsumieren aus jeder Nutzungsgruppe in einem Compartment erlauben

Verwenden Sie diese Option, wenn eine App oder ein Service Nachrichten aus einer beliebigen Gruppe im selben Compartment abrufen soll.

allow dynamic-group SharedConsumers to use queue-pull in compartment <compartment-name>

Erteilte Berechtigungen:

  • QUEUE_CONSUME

Zulassen, dass Operatoren Warteschlangen prüfen, Consumer-Gruppen jedoch vollständig verwalten

Verwenden Sie diese Policys für Personen, die Warteschlangendetails anzeigen und Nutzungsgruppen und Filter vollständig organisieren möchten.

allow group FanoutOperators to inspect queues in compartment <compartment-name>
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
                    

Erteilte Berechtigungen:

  • Warteschlangen untersuchen
  • QUEUE_CONSUMER_GROUP_CREATE
  • QUEUE_CONSUMER_GROUP_UPDATE
  • QUEUE_CONSUMER_GROUP_DELETE
  • QUEUE_CONSUMER_GROUP_READ
  • QUEUE_CONSUMER_GROUP_INSPECT

Aktivieren von Fan-out durch Queueverantwortliche zulassen, aber Nutzungsgruppenverwaltung delegieren

Verwenden Sie diese Option für Teams, bei denen Queueverantwortliche die Queues verwalten, aber App-Teams das Setup von Nutzungsgruppen verarbeiten.

Warteschlangeneigentümer:

allow group QueueOwners to manage queues in compartment <compartment-name>
                    

Anwendungsteams:

allow group AppTeams to manage queue-consumer-groups in compartment <compartment-name>
                    

Erteilte Berechtigungen:

  • QUEUE_CONSUMER_GROUP_CREATE
  • QUEUE_CONSUMER_GROUP_UPDATE
  • QUEUE_CONSUMER_GROUP_DELETE
  • QUEUE_CONSUMER_GROUP_READ
  • QUEUE_CONSUMER_GROUP_INSPECT

Best Practices

  • Geben Sie jedem Team oder jeder App nur die Berechtigungen, die sie benötigen.
  • Verwenden Sie target.consumer-group.id, um zu begrenzen, wer aus einer Gruppe lesen kann.
  • Producer-, Consumer- und Fan-out-Managerrollen nach Möglichkeit getrennt halten.
  • Erteilen Sie nur vollen Zugriff auf die Warteschlangenverwaltung für diejenigen, die sie benötigen.
  • Dynamische Gruppen sind nützlich für Apps oder automatisierte Services, die spezielle Berechtigungen benötigen.

Policy-Beispiele

Erfahren Sie anhand von Beispielen mehr zu IAM-Policys für Queue.

Für Administratoren: Mit der folgenden Policy werden der angegebenen Gruppe die Berechtigungen für alle Aktionen mit Queues und den zugehörigen Queue-Serviceressourcen erteilt:

Allow QueueManagers to manage queues in compartment <compartment_name>
                

Verwenden Sie die folgenden Policys, um einer angegebenen Gruppe die Berechtigung zum Produzieren in oder zum Konsumieren aus einer Queue zu erteilen:

Allow QueueProducers to use queue-push in compartment <compartment_name>
                
Allow QueueConsumers to use queue-pull in compartment <compartment_name>
                

Verwenden Sie die folgende Policy, um einer angegebenen Gruppe die Berechtigung zum Prüfen und Lesen von Queuedetails zu erteilen:

Allow QueueReaders to read queues in compartment <compartment_name>