En este documento se describen las opciones de control de acceso disponibles en Pub/Sub.
Información general
Pub/Sub usa Gestión de Identidades y Accesos (IAM) para el control de acceso.
La gestión de identidades y accesos te permite conceder roles específicos a usuarios, grupos y cuentas de servicio, lo que les da los permisos necesarios para llevar a cabo sus tareas. Puedes conceder estos roles de gestión de identidades y accesos mediante laGoogle Cloud consola o la API de gestión de identidades y accesos.
En Pub/Sub, el control de acceso se puede configurar a nivel de proyecto y de recurso individual. A continuación se muestran algunos ejemplos de cómo usar el control de acceso de Pub/Sub:
Concede acceso por recurso en lugar de a todo el proyecto de Cloud.
Concede acceso con funciones limitadas, como publicar mensajes en un tema o consumir mensajes de una suscripción, pero no eliminar el tema o la suscripción.
Conceder acceso a todos los recursos de Pub/Sub de un proyecto a un grupo de desarrolladores.
Si solo tienes acceso de lectura a un recurso, como un tema o una suscripción, no podrás verlo mediante la consola de Google Cloud . En su lugar, puedes usar Google Cloud CLI para ver el recurso.
Para obtener una descripción detallada de IAM y de sus características, consulta la documentación de IAM. En concreto, consulta Conceder, cambiar y revocar el acceso a los recursos.
Tipos de roles en Pub/Sub
Al igual que otros productos, Pub/Sub admite tres tipos de roles: Google Cloud
Roles básicos: son roles muy permisivos que existían antes de que se introdujera Gestión de Identidades y Accesos. Para obtener más información sobre los roles básicos, consulta Roles básicos.
Roles predefinidos: los roles predefinidos proporcionan acceso granular a recursos específicos deGoogle Cloud . Para obtener más información sobre los roles predefinidos, consulta el artículo Roles predefinidos. Los roles predefinidos de Pub/Sub se incluyen en una sección posterior.
Roles personalizados: los roles personalizados te ayudan a aplicar el principio de mínimos privilegios. Para obtener más información sobre los roles personalizados, consulta el artículo Roles personalizados.
Permisos de Pub/Sub necesarios
En las siguientes secciones se enumeran los permisos de Pub/Sub necesarios para acceder a los distintos recursos de Pub/Sub.
Permisos necesarios para los temas
En la siguiente tabla se indican los permisos necesarios para cada método de la API Pub/Sub relacionado con los temas. Muestra qué permiso de gestión de identidades y accesos se necesita para llamar a cada método, junto con una descripción de lo que hace el método.
| Método | Descripción | Permiso obligatorio |
|---|---|---|
projects.topics.create
|
Crea el tema con el nombre especificado. | pubsub.topics.create
en el proyecto de Cloud que lo contiene |
projects.topics.delete
|
Elimina el tema con el nombre especificado. | pubsub.topics.delete
sobre el tema solicitado |
projects.topics.get
|
Obtiene la configuración de un tema. | pubsub.topics.get
sobre el tema solicitado |
projects.topics.getIamPolicy
|
Obtiene la política de gestión de identidades y accesos de un tema. | pubsub.topics.getIamPolicy
sobre el tema solicitado |
projects.topics.list
|
Muestra todos los temas. | pubsub.topics.list
en el proyecto de Cloud solicitado |
projects.topics.patch
|
Actualiza un tema. | pubsub.topics.update
sobre el tema solicitado |
projects.topics.publish
|
Añade uno o varios mensajes al tema. | pubsub.topics.publish
sobre el tema solicitado |
projects.topics.setIamPolicy
|
Define la política de gestión de identidades y accesos de un tema. | pubsub.topics.setIamPolicy
sobre el tema solicitado |
projects.topics.testIamPermissions
|
Devuelve los permisos que tiene una sobre el recurso especificado. | Ninguno |
Permisos necesarios para las suscripciones
En la siguiente tabla se indican los permisos necesarios para cada método de la API Pub/Sub relacionado con las suscripciones. Se indica qué permiso de gestión de identidades y accesos se necesita para llamar a cada método, junto con una descripción de lo que hace el método.
| Método | Descripción | Permiso obligatorio |
|---|---|---|
projects.subscriptions.acknowledge
|
Confirma los mensajes asociados a los ack_ids de AcknowledgeRequest. | pubsub.subscriptions.consume
en la suscripción solicitada |
projects.subscriptions.create
|
Crea una suscripción a un tema determinado. | pubsub.subscriptions.create
en el proyecto de Cloud que lo contiene y
pubsub.topics.attachSubscription en el tema solicitado.
Para crear una suscripción S en el proyecto A que esté asociada a un tema T en el proyecto B, se deben conceder los permisos adecuados tanto en el proyecto A como en el tema T. En este caso, la información de identidad del usuario se puede registrar en los registros de auditoría del proyecto B. |
projects.subscriptions.delete
|
Elimina una suscripción. | pubsub.subscriptions.delete
en la suscripción solicitada |
projects.subscriptions.detach
|
Desvincula una suscripción de este tema. | pubsub.subscriptions.detach
en la suscripción |
projects.subscriptions.get
|
Obtiene los detalles de configuración de una suscripción. | pubsub.subscriptions.get
en la suscripción solicitada |
projects.subscriptions.getIamPolicy
|
Obtiene la política de control de acceso de gestión de identidades y accesos de una suscripción. | pubsub.subscriptions.getIamPolicy
en la suscripción solicitada |
projects.subscriptions.list
|
Muestra las suscripciones coincidentes. | pubsub.subscriptions.list
en el proyecto de Cloud solicitado |
projects.subscriptions.modifyAckDeadline
|
Modifica el plazo de confirmación de un mensaje específico. | pubsub.subscriptions.consume
en la suscripción solicitada |
projects.subscriptions.modifyPushConfig
|
Modifica pushConfig de una suscripción especificada. | pubsub.subscriptions.update
en la suscripción solicitada |
projects.subscriptions.patch
|
Actualiza una suscripción. | pubsub.subscriptions.update
en la suscripción solicitada |
projects.subscriptions.pull
|
Descarga los mensajes del servidor. | pubsub.subscriptions.consume
en la suscripción solicitada |
projects.subscriptions.seek
|
Busca una suscripción en un momento determinado o una captura. | pubsub.subscriptions.consume
en la suscripción solicitada y pubsub.snapshots.seek
en la captura solicitada, si procede. |
projects.subscriptions.setIamPolicy
|
Define la política de gestión de identidades y accesos de control de acceso de una suscripción. | pubsub.subscriptions.setIamPolicy
en la suscripción solicitada |
projects.subscriptions.testIamPermissions
|
Devuelve los permisos que tiene una sobre el recurso especificado. | Ninguno |
Permisos necesarios para los esquemas
En la siguiente tabla se indican los permisos necesarios para cada método de la API Pub/Sub relacionado con los esquemas. Se indica qué permiso de gestión de identidades y accesos se necesita para llamar a cada método, junto con una descripción de lo que hace el método.
| Método | Descripción | Permiso obligatorio |
|---|---|---|
projects.schemas.commit
|
Confirma una nueva revisión del esquema. | pubsub.schemas.commit
en el esquema solicitado |
projects.schemas.create
|
Crea un esquema. | pubsub.schemas.create
en el proyecto de Cloud que lo contiene |
projects.schemas.delete
|
Elimina un esquema. | pubsub.schemas.delete
en el esquema solicitado |
projects.schemas.deleteRevision
|
Elimina una revisión de esquema específica. | pubsub.schemas.delete
en el esquema solicitado |
projects.schemas.get
|
Obtiene un esquema. | pubsub.schemas.get
en el esquema solicitado |
projects.schemas.getIamPolicy
|
Obtiene la política de gestión de identidades y accesos de un esquema. | pubsub.schemas.getIamPolicy en el esquema solicitado |
projects.schemas.list
|
Muestra los esquemas de un proyecto. | pubsub.schemas.list
en el proyecto de Cloud solicitado |
projects.schemas.listRevisions
|
Muestra todas las revisiones del esquema con el nombre indicado. | pubsub.schemas.listRevisions
en el esquema solicitado |
projects.schemas.rollback
|
Crea una nueva revisión de un esquema a partir de una revisión anterior. | pubsub.schemas.rollback
en el esquema solicitado |
projects.schemas.validate
|
Valida una definición de esquema. | pubsub.schemas.validate
en el proyecto de Cloud que lo contiene |
projects.schemas.validateMessage
|
Valida un mensaje con un esquema. | pubsub.schemas.validate
en el proyecto de Cloud que lo contiene |
Permisos necesarios para las capturas
En la siguiente tabla se indican los permisos necesarios para cada método de la API Pub/Sub relacionado con las copias de seguridad. Se indica qué permiso de gestión de identidades y accesos se necesita para llamar a cada método, junto con una descripción de lo que hace el método.
| Método REST | Descripción | Permiso obligatorio |
|---|---|---|
projects.snapshots.create
|
Crea una captura de la suscripción solicitada. | pubsub.snapshots.create
en el proyecto de Cloud que lo contiene y el permiso pubsub.subscriptions.consume
en la suscripción de origen. |
projects.snapshots.delete
|
Elimina una captura. | pubsub.snapshots.delete
en la captura solicitada |
projects.snapshots.getIamPolicy
|
Obtiene la política de gestión de identidades y accesos de control de acceso de una captura. | pubsub.snapshots.getIamPolicy
en la captura solicitada |
projects.snapshots.list
|
Muestra las capturas existentes. | pubsub.snapshots.list
en el proyecto de Cloud solicitado |
projects.snapshots.patch
|
Actualiza una instantánea. | pubsub.snapshots.update
en la captura solicitada |
projects.snapshots.setIamPolicy
|
Define la política de control de acceso de gestión de identidades y accesos de una captura. | pubsub.snapshots.setIamPolicy
en la captura solicitada |
projects.snapshots.testIamPermissions
|
Devuelve los permisos que tiene una sobre el recurso especificado. | Ninguno |
Roles de Pub/Sub disponibles
En la siguiente tabla se enumeran todos los roles de Pub/Sub y los permisos asociados a cada rol:
| Role | Permissions |
|---|---|
Pub/Sub Admin( Provides full access to topics and subscriptions. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Editor( Provides access to modify topics and subscriptions, and access to publish and consume messages. Lowest-level resources where you can grant this role:
|
|