Control de acceso con Gestión de Identidades y Accesos

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

(roles/pubsub.admin)

Provides full access to topics and subscriptions.

Lowest-level resources where you can grant this role:

  • Schema
  • Snapshot
  • Subscription
  • Topic

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

pubsub.*

  • pubsub.messageTransforms.validate
  • pubsub.schemas.attach
  • pubsub.schemas.commit
  • pubsub.schemas.create
  • pubsub.schemas.delete
  • pubsub.schemas.get
  • pubsub.schemas.getIamPolicy
  • pubsub.schemas.list
  • pubsub.schemas.listRevisions
  • pubsub.schemas.rollback
  • pubsub.schemas.setIamPolicy
  • pubsub.schemas.validate
  • pubsub.snapshots.create
  • pubsub.snapshots.createTagBinding
  • pubsub.snapshots.delete
  • pubsub.snapshots.deleteTagBinding
  • pubsub.snapshots.get
  • pubsub.snapshots.getIamPolicy
  • pubsub.snapshots.list
  • pubsub.snapshots.listEffectiveTags
  • pubsub.snapshots.listTagBindings
  • pubsub.snapshots.seek
  • pubsub.snapshots.setIamPolicy
  • pubsub.snapshots.update
  • pubsub.subscriptions.consume
  • pubsub.subscriptions.create
  • pubsub.subscriptions.createTagBinding
  • pubsub.subscriptions.delete
  • pubsub.subscriptions.deleteTagBinding
  • pubsub.subscriptions.get
  • pubsub.subscriptions.getIamPolicy
  • pubsub.subscriptions.list
  • pubsub.subscriptions.listEffectiveTags
  • pubsub.subscriptions.listTagBindings
  • pubsub.subscriptions.setIamPolicy
  • pubsub.subscriptions.update
  • pubsub.topics.attachSubscription
  • pubsub.topics.create
  • pubsub.topics.createTagBinding
  • pubsub.topics.delete
  • pubsub.topics.deleteTagBinding
  • pubsub.topics.detachSubscription
  • pubsub.topics.get
  • pubsub.topics.getIamPolicy
  • pubsub.topics.list
  • pubsub.topics.listEffectiveTags
  • pubsub.topics.listTagBindings
  • pubsub.topics.publish
  • pubsub.topics.setIamPolicy
  • pubsub.topics.update
  • pubsub.topics.updateTag

resourcemanager.projects.get

serviceusage.consumerpolicy.analyze

serviceusage.consumerpolicy.get

serviceusage.effectivepolicy.get

serviceusage.groups.*

  • serviceusage.groups.list
  • serviceusage.groups.listExpandedMembers
  • serviceusage.groups.listMembers

serviceusage.quotas.get

serviceusage.services.get

serviceusage.services.list

serviceusage.values.test

(roles/pubsub.editor)

Provides access to modify topics and subscriptions, and access to publish and consume messages.

Lowest-level resources where you can grant this role:

  • Schema
  • Snapshot
  • Subscription
  • Topic

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

pubsub.messageTransforms.validate

pubsub.schemas.attach

pubsub.schemas.commit

pubsub.schemas.create

pubsub.schemas.delete

pubsub.schemas.get

pubsub.schemas.list

pubsub.schemas.listRevisions

pubsub.schemas.rollback

pubsub.schemas.validate

pubsub.snapshots.create

pubsub.snapshots.createTagBinding

pubsub.snapshots.delete

pubsub.snapshots.deleteTagBinding

pubsub.snapshots.get

pubsub.snapshots.list

pubsub.snapshots.listEffectiveTags

pubsub.snapshots.listTagBindings

pubsub.snapshots.seek

pubsub.snapshots.update

pubsub.subscriptions.consume

pubsub.subscriptions.create

pubsub.subscriptions.createTagBinding

pubsub.subscriptions.delete

pubsub.subscriptions.deleteTagBinding

pubsub.subscriptions.get

pubsub.subscriptions.list

pubsub.subscriptions.listEffectiveTags

pubsub.subscriptions.listTagBindings

pubsub.subscriptions.update

pubsub.topics.attachSubscription

pubsub.topics.create

pubsub.topics.createTagBinding

pubsub.topics.delete

pubsub.topics.deleteTagBinding

pubsub.