Políticas de Queue
Utilice el servicio Oracle Cloud Infrastructure Identity and Access Management (IAM) para crear políticas para las colas.
En este tema se tratan los detalles de la escritura de políticas para controlar el acceso al servicio Queue.
Al escribir políticas, tenga en cuenta que el servicio Queue soporta la autenticación mediante los siguientes métodos:
- Nombre de usuario y token de autenticación: se admite para la API de REST y el protocolo STOMP.
- Principal de instancia: solo está soportado para la API de REST (la instancia informática debe estar asignada a un grupo dinámico).
Visión general de la sintaxis de las políticas
La sintaxis general de una sentencia de política es:
allow <subject> to <verb>
<resource-type> in <location> where <condition>
Por ejemplo, puede especificar:
-
Un grupo o grupo dinámico por nombre u OCID como
<subject>. O bien, puede utilizarany-userpara abarcar a todos los usuarios del arrendamiento. -
inspect,read,useymanagecomo<verb>para otorgar a<subject>acceso a uno o más permisos.A medida que vaya de
inspect>read>use>manage, el nivel de acceso aumenta y los permisos otorgados se van acumulando. Por ejemplo,useincluyereadmás la capacidad de actualizar. -
Una familia de recursos como
virtual-network-familypararesource-type. O bien, puede especificar un recurso individual en una familia comovcnsysubnets. -
Compartimento por nombre u OCID como
<location>. O bien, puede utilizartenancypara que se abarque todo el arrendamiento. -
Una o más condiciones de
<condition>, que se deben cumplir para que se otorgue acceso. Para varias condiciones, puede utilizaranyuall.Una condición consta de una o más variables. Una variable puede ser relevante para la propia solicitud (por ejemplo,
request.operation) o para el recurso sobre el que se realiza una acción en la solicitud (por ejemplo,target.queue.id). Para ilustrarlo y permitir que un grupo gestione un espacio de trabajo específico y ningún otro espacio de trabajo:allow group <group-name> to manage queues in compartment <compartment-name> where target.queue.id = '<queue-ocid>'O bien, para permitir que un grupo gestione todos los recursos de Queue en el arrendamiento:
allow group <group-name> to manage queues in tenancy
Para obtener más información sobre la creación de políticas, consulte Introducción a las políticas y Referencia de políticas.
Tipos de recursos
Para otorgar a los usuarios acceso a los recursos de Queue, cree políticas de IAM con tipos de recursos de Queue.
Para acceder a todos los recursos de Queue, utilice el tipo de recurso queues.
Si no desea que los usuarios gestionen colas, pero desea que produzcan en una cola o que consuman de una cola, utilice los siguientes tipos de recursos individuales:
-
queue-push -
queue-pull
Consulte Ejemplos de políticas para obtener más información.
Variables soportadas
El servicio Queue soporta todas las variables generales, además de las que se muestran aquí.
Para obtener más información sobre las variables generales soportadas por los servicios de OCI, consulte Variables generales para todas las solicitudes.
| Variable | Tipo de variable | Origen |
|---|---|---|
target.queue.id
|
Entidad (OCID) | Solicitud |
target.queue.name
|
Cadena | Solicitud |
Detalles de las combinaciones de verbo + tipo de recurso
Existen varios verbos y tipos de recurso de Oracle Cloud Infrastructure que puede utilizar para crear una política.
En las siguientes tablas, se muestran los permisos y las operaciones de API que cubre cada verbo de Queue. El nivel de acceso es acumulativo a medida que pasa de inspect a read a use a manage. Un signo más (+) en una celda de la tabla indica un acceso incremental en comparación con la celda situada directamente encima, mientras que "sin extra" indica que no hay un acceso incremental.
| Verbos | Permisos | API totalmente cubiertas | API parcialmente cubiertas |
|---|---|---|---|
| inspect |
QUEUE_INSPECT |
|
none |
| read |
INSPECT + QUEUE_READ |
INSPECT +
|
none |
| use |
READ + QUEUE_UPDATE QUEUE_PRODUCE QUEUE_CONSUME |
READ +
|
none |
| manage |
USE + QUEUE_CREATE QUEUE_DELETE QUEUE_MOVE |
USE +
|
none |
| Verbos | Permisos | API totalmente cubiertas | API parcialmente cubiertas |
|---|---|---|---|
| inspect |
none |
none |
none |
| read |
none |
none |
none |
| use |
QUEUE_PRODUCE |
|
none |
| manage |
none |
none |
none |
| Verbos | Permisos | API totalmente cubiertas | API parcialmente cubiertas |
|---|---|---|---|
| inspect |
none |
none |
none |
| read |
none |
none |
none |
| use |
QUEUE_CONSUME |
|
none |
| manage |
none |
none |
none |
Permisos necesarios para cada operación de API
En la siguiente tabla se muestran las operaciones de API para Queue en un orden lógico, agrupadas por tipo de recurso.
Los tipos de recursos son queues, queue-push y queue-pull.
Para obtener información sobre los permisos, consulte Permisos.
| Operación de API | Permisos necesarios para utilizar la operación |
|---|---|
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 los permisos para que diferentes personas o aplicaciones puedan utilizar las colas y los grupos de consumidores de la forma que necesiten.
Tienes que dar permiso a diferentes equipos o aplicaciones para que trabajen con grupos de consumidores y fanout de colas. A continuación se muestran algunos ejemplos.
Permitir la gestión completa de colas y grupos de consumidores
Utilice esta opción si alguien necesita hacer todo lo posible. Haga colas, active la función de fanout y gestione todos los 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>
Permisos otorgados:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Permitir acceso de solo lectura a grupos de consumidores
Utilice esta opción cuando desee que alguien solo observe los grupos de consumidores y su configuración, sin que se permitan cambios.
allow group QueueAuditors to inspect queue-consumer-groups in compartment <compartment-name>
allow group QueueAuditors to read queue-consumer-groups in compartment <compartment-name>
Permisos otorgados:
- QUEUE_CONSUMER_GROUP_INSPECT
- QUEUE_CONSUMER_GROUP_READ
Permitir gestión de grupos de consumidores pero no de colas
Utilice esto para los equipos que organizan y configuran grupos de consumidores y filtros, pero no deben meterse en las colas en sí.
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
Permisos otorgados:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Permitir a los productores enviar mensajes a colas (sin acceso a grupos de consumidores)
Úsalo para aplicaciones que solo necesitan enviar (empujar) mensajes a una cola, pero no leen ni ven los detalles del grupo.
allow dynamic-group QueueProducers to use queue-push in compartment <compartment-name>
Permisos otorgados:
- QUEUE_PRODUCE
Permitir que los consumidores consuman de un grupo de consumidores específico
Utilice esta opción para aplicaciones o equipos que solo deben extraer mensajes de un determinado grupo de consumidores y no ver otros.
allow dynamic-group AppConsumers to use queue-pull in compartment <compartment-name>
where target.consumer-group.id = '<consumer_group_ocid>'
Permisos otorgados:
- QUEUE_CONSUME
Permitir a los consumidores consumir desde cualquier grupo de consumidores de un compartimento
Utilice esta opción cuando una aplicación o un servicio deba extraer mensajes de cualquier grupo del mismo compartimento.
allow dynamic-group SharedConsumers to use queue-pull in compartment <compartment-name>
Permisos otorgados:
- QUEUE_CONSUME
Permitir a los operadores inspeccionar colas pero gestionar completamente grupos de consumidores
Utilice estas políticas para las personas que necesitan ver los detalles de la cola y que también desean organizar completamente los grupos de consumidores y los filtros.
allow group FanoutOperators to inspect queues in compartment <compartment-name>
allow group FanoutOperators to manage queue-consumer-groups in compartment <compartment-name>
Permisos otorgados:
- Inspeccionar colas
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Permitir que los propietarios de cola activen la salida pero deleguen la gestión de grupos de consumidores
Utilice esta opción para los equipos en los que los propietarios de colas gestionan las colas, pero los equipos de aplicaciones gestionan la configuración de grupos de consumidores.
Propietarios de cola:
allow group QueueOwners to manage queues in compartment <compartment-name>
Equipos de aplicación:
allow group AppTeams to manage queue-consumer-groups in compartment <compartment-name>
Permisos otorgados:
- QUEUE_CONSUMER_GROUP_CREATE
- QUEUE_CONSUMER_GROUP_UPDATE
- QUEUE_CONSUMER_GROUP_DELETE
- QUEUE_CONSUMER_GROUP_READ
- QUEUE_CONSUMER_GROUP_INSPECT
Mejores prácticas
- Proporcione a cada equipo o aplicación solo los permisos que necesitan.
- Utilice
target.consumer-group.idpara limitar quién puede leer de un grupo. - Mantenga los roles de productor, consumidor y gerente de fan-out separados si es posible.
- Solo proporcione acceso completo a la gestión de colas a aquellos que lo necesiten.
- Los grupos dinámicos son útiles para aplicaciones o servicios automatizados que necesitan permisos especiales.
Ejemplos de políticas
Obtenga información sobre las políticas de IAM de Queue mediante ejemplos.
Para los administradores, la siguiente política permite al grupo especificado realizar todas las acciones con las colas y los recursos relacionados del servicio Queue:
Allow QueueManagers to manage queues in compartment <compartment_name>
Utilice las siguientes políticas para permitir que un grupo especificado produzca o consuma una cola:
Allow QueueProducers to use queue-push in compartment <compartment_name>
Allow QueueConsumers to use queue-pull in compartment <compartment_name>
Utilice la siguiente política para permitir que un grupo especificado inspeccione y lea los detalles de la cola:
Allow QueueReaders to read queues in compartment <compartment_name>