Politiques de file d'attente
Utilisez le service Oracle Cloud Infrastructure Identity and Access Management (IAM) pour créer des politiques pour vos files d'attente.
Cette rubrique présente des informations détaillées sur l'écriture de politiques pour contrôler l'accès au service de file d'attente.
Lors de l'écriture de politiques, notez que le service de file d'attente prend en charge l'authentification à l'aide des méthodes suivantes :
- Nom d'utilisateur et jeton d'authentification : pris en charge à la fois pour l'API REST et le protocole STOMP.
- Principal d'instance : Prise en charge pour l'API REST uniquement (l'instance de calcul doit être affectée à un groupe dynamique).
Aperçu de la syntaxe d'une politique
La syntaxe globale d'un énoncé de politique est la suivante :
allow <subject> to <verb>
<resource-type> in <location> where <condition>
Par exemple, vous pouvez spécifier :
-
Un groupe ou un groupe dynamique par nom ou OCID comme
<subject>. Vous pouvez également utiliserany-userpour couvrir tous les utilisateurs de la location. -
inspect,read,useetmanagecomme<verb>pour accorder à<subject>l'accès à une ou plusieurs autorisations.inspect>read>use>managereprésentent des niveaux d'accès croissants et les autorisations octroyées sont cumulatives. Par exemple,useinclutreadet la possibilité de mettre à jour. -
Une famille de ressources comme
virtual-network-familypourresource-type. Vous pouvez également spécifier une ressource individuelle d'une famille telle quevcnsetsubnets. -
Un compartiment par nom ou OCID comme
<location>. Vous pouvez également utilisertenancypour couvrir l'ensemble de la location. -
Une ou plusieurs conditions dans
<condition>, qui doivent être remplies pour que l'accès soit accordé. Pour plusieurs conditions, vous pouvez utiliseranyouall.Une condition est constituée d'une ou plusieurs variables. Une variable peut être pertinente pour la demande elle-même (par exemple,
request.operation) ou pour la ressource faisant l'objet d'une action dans la demande (par exemple,target.queue.id). Par exemple, pour permettre à un groupe de gérer un espace de travail particulier et aucun autre espace de travail :allow group <group-name> to manage queues in compartment <compartment-name> where target.queue.id = '<queue-ocid>'Ou, pour permettre à un groupe de gérer toutes les ressources du service de file d'attente de la location :
allow group <group-name> to manage queues in tenancy
Pour plus d'informations sur la création de politiques, voir Introduction aux politiques et Informations de référence sur les politiques.
Types de ressource
Pour donner aux utilisateurs l'accès aux ressources du service de file d'attente, créez des politiques GIA avec des types de ressource de file d'attente.
Pour accéder à toutes les ressources du service de file d'attente, utilisez le type de ressource queues.
Si vous ne voulez pas que les utilisateurs gèrent les files d'attente, mais que vous voulez qu'ils produisent vers une file d'attente ou consomment à partir d'une file d'attente, utilisez les types de ressources individuels suivants :
-
queue-push -
queue-pull
Pour plus d'informations, voir Exemples de politiques.
Variables prises en charge
Le service de file d'attente prend en charge toutes les variables générales, plus celles répertoriées ici.
Pour plus d'informations sur les variables générales prises en charge par les services OCI, voir Variables générales pour toutes les demandes.
| Variable | Type de variable | Source |
|---|---|---|
target.queue.id
|
Entité (OCID) | Demande |
target.queue.name
|
String | Demande |
Détails pour les combinaisons Verbes + Type de ressource
Différents verbes et types de ressource Oracle Cloud Infrastructure peuvent être utilisés pour créer une politique.
Les tableaux suivants présentent les autorisations et les opérations d'API couvertes par chaque verbe pour la file d'attente. Le niveau d'accès est cumulatif au fur et à mesure que vous progressez depuis inspect à read, use et manage. Un signe plus (+) dans une cellule de tableau indique un accès incrémentiel par rapport à la cellule directement au-dessus, alors que la mention "aucun accès supplémentaire" indique qu'il n'y a aucun accès incrémentiel.
| Verbes | Autorisations | API entièrement couvertes | API partiellement couvertes |
|---|---|---|---|
| inspect |
QUEUE_INSPECT |
|
aucune |
| read |
INSPECT + QUEUE_READ |
INSPECT +
|
aucune |
| use |
READ + QUEUE_UPDATE QUEUE_PRODUCE QUEUE_CONSUME |
READ +
|
aucune |
| manage |
USE + QUEUE_CREATE QUEUE_DELETE QUEUE_MOVE |
USE +
|
aucune |
| Verbes | Autorisations | API entièrement couvertes | API partiellement couvertes |
|---|---|---|---|
| inspect |
aucune |
aucune |
aucune |
| read |
aucune |
aucune |
aucune |
| use |
QUEUE_PRODUCE |
|
aucune |
| manage |
aucune |
aucune |
aucune |
| Verbes | Autorisations | API entièrement couvertes | API partiellement couvertes |
|---|---|---|---|
| inspect |
aucune |
aucune |
aucune |
| read |
aucune |
aucune |
aucune |
| use |
QUEUE_CONSUME |
|
aucune |
| manage |
aucune |
aucune |
aucune |
Autorisations requises pour chaque opération d'API
Le tableau suivant répertorie les opérations d'API pour le service de file d'attente dans un ordre logique, regroupées par type de ressource.
Les types de ressource sont queues, queue-push et queue-pull.
Pour plus d'informations sur les autorisations, voir Autorisations.
| Opération d'API | Autorisations requises pour utiliser l'opération |
|---|---|
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 |
Politiques pour les groupes de consommateurs
Définissez les autorisations de sorte que différentes personnes ou applications puissent utiliser les files d'attente et les groupes de consommateurs de ressources de la manière dont elles ont besoin.
Vous devez autoriser différentes équipes ou applications à travailler avec un fanout de file d'attente et des groupes de consommateurs. Voici quelques exemples.
Autoriser la gestion complète des files d'attente et des groupes de consommateurs
Utilisez cette option si quelqu'un doit tout faire. Créez des files d'attente, activez le ventilateur et gérez tous les groupes de consommateurs de ressources.
allow group QueueAdmins to manage queues in compartment <compartment-name>
allow group QueueAdmins to manage queue-consumer-groups in compartment <compartment-name>
Autorisations accordées :
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Autoriser l'accès en lecture seule aux groupes de consommateurs
Utilisez cette option lorsque vous souhaitez que quelqu'un consulte uniquement les groupes de consommateurs de ressources et leurs paramètres (aucune modification n'est permise).
allow group QueueAuditors to inspect queue-consumer-groups in compartment <compartment-name>
allow group QueueAuditors to read queue-consumer-groups in compartment <compartment-name>
Autorisations accordées :
- QUEUE_CONSUMER_GROUP_INSPECT
- QUEUE_CONSUMER_GROUP_READ
Autoriser la gestion des groupes de consommateurs de ressources, mais pas des files d'attente
Utilisez cette option pour les équipes qui organisent et configurent des groupes de consommateurs de ressources et des filtres, mais qui ne doivent pas perturber les files d'attente elles-mêmes.
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
Autorisations accordées :
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Autoriser les fournisseurs à envoyer des messages aux files d'attente (aucun accès de groupe de consommateurs)
Utilisez cette option pour les applications qui n'ont qu'à envoyer (pousser) des messages dans une file d'attente, mais qui ne lisent pas ou ne voient pas les détails du groupe.
allow dynamic-group QueueProducers to use queue-push in compartment <compartment-name>
Autorisations accordées :
- QUEUE_PRODUCE
Autoriser les consommateurs à consommer à partir d'un groupe de consommateurs spécifique
Utilisez cette option pour les applications ou les équipes qui doivent uniquement extraire des messages d'un certain groupe de consommateurs de ressources et ne pas en voir d'autres.
allow dynamic-group AppConsumers to use queue-pull in compartment <compartment-name>
where target.consumer-group.id = '<consumer_group_ocid>'
Autorisations accordées :
- QUEUE_CONSUME
Autoriser les consommateurs à consommer à partir de n'importe quel groupe de consommateurs d'un compartiment
Utilisez cette option lorsqu'une application ou un service doit extraire des messages de n'importe quel groupe du même compartiment.
allow dynamic-group SharedConsumers to use queue-pull in compartment <compartment-name>
Autorisations accordées :
- QUEUE_CONSUME
Autoriser les opérateurs à inspecter les files d'attente mais à gérer entièrement les groupes de consommateurs de ressources
Utilisez ces politiques pour les personnes qui ont besoin de voir les détails de la file d'attente et qui souhaitent organiser entièrement les groupes de consommateurs et les filtres.
allow group FanoutOperators to inspect queues in compartment <compartment-name>
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
Autorisations accordées :
- Inspecter les files d'attente
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Autoriser les responsables de file d'attente à activer le déploiement, mais à déléguer la gestion des groupes de consommateurs
Utilisez cette option pour les équipes où les responsables de file d'attente gèrent les files d'attente, mais où les équipes d'applications gèrent la configuration des groupes de consommateurs.
Responsables de file d'attente :
allow group QueueOwners to manage queues in compartment <compartment-name>
Équipes d'application :
allow group AppTeams to manage queue-consumer-groups in compartment <compartment-name>
Autorisations accordées :
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Meilleures pratiques
- Accordez à chaque équipe ou application uniquement les autorisations dont elle a besoin.
- Utilisez
target.consumer-group.idpour limiter les personnes pouvant lire à partir d'un groupe. - Si possible, gardez les rôles producteur, consommateur et fan-out manager séparés.
- Accordez uniquement à la gestion complète des files d'attente l'accès à ceux qui en ont besoin.
- Les groupes dynamiques sont utiles pour les applications ou les services automatisés qui ont besoin d'autorisations spéciales.
Exemples de politique
En savoir plus sur les politiques GIA pour le service de file d'attente à l'aide d'exemples.
Pour les administrateurs, la politique suivante permet au groupe spécifié d'exécuter toutes les opérations sur les files d'attente et les ressources connexes du service de file d'attente :
Allow QueueManagers to manage queues in compartment <compartment_name>
Utilisez les politiques suivantes pour permettre à un groupe spécifié de produire ou de consommer des ressources d'une file d'attente :
Allow QueueProducers to use queue-push in compartment <compartment_name>
Allow QueueConsumers to use queue-pull in compartment <compartment_name>
Utilisez la politique suivante pour permettre à un groupe spécifié d'inspecter et de lire les détails de la file d'attente :
Allow QueueReaders to read queues in compartment <compartment_name>