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 auchany-userverwenden, um alle Benutzer im Mandanten abzudecken. -
inspect,read,useundmanageals<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:useumfasstreadsowie die Möglichkeit zum Aktualisieren. -
Eine Ressourcenfamilie wie
virtual-network-familyalsresource-type. Sie können auch eine einzelne Ressource in einer Familie angeben, wievcnsundsubnets. -
Ein Compartment nach Name oder OCID als
<location>. Sie können auchtenancyverwenden, 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 Sieanyoderallverwenden.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.
| Verben | Berechtigungen | Vollständig abgedeckte APIs | Teilweise abgedeckte APIs |
|---|---|---|---|
| inspect |
QUEUE_INSPECT |
|
keine |
| read |
INSPECT + QUEUE_READ |
INSPECT +
|
keine |
| use |
READ + QUEUE_UPDATE QUEUE_PRODUCE QUEUE_CONSUME |
READ +
|
keine |
| manage |
USE + QUEUE_CREATE QUEUE_DELETE QUEUE_MOVE |
USE +
|
keine |
| Verben | Berechtigungen | Vollständig abgedeckte APIs | Teilweise abgedeckte APIs |
|---|---|---|---|
| inspect |
keine |
keine |
keine |
| read |
keine |
keine |
keine |
| use |
QUEUE_PRODUCE |
|
keine |
| manage |
keine |
keine |
keine |
| Verben | Berechtigungen | Vollständig abgedeckte APIs | Teilweise abgedeckte APIs |
|---|---|---|---|
| inspect |
keine |
keine |
keine |
| read |
keine |
keine |
keine |
| use |
QUEUE_CONSUME |
|
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.
| 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>