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 de este artículo.
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. En ella 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.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 a partir 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:
|
|
Pub/Sub Publisher( Provides access to publish messages to a topic. Lowest-level resources where you can grant this role:
|
|
Cloud Pub/Sub Service Agent( Grants Cloud Pub/Sub Service Account access to manage resources. |
|
Pub/Sub Subscriber( Provides access to consume messages from a subscription and to attach subscriptions to a topic. Lowest-level resources where you can grant this role:
|
|
Pub/Sub Viewer( Provides access to view topics and subscriptions. Lowest-level resources where you can grant this role:
|
|
Controlar el acceso mediante la consola Google Cloud
Puede usar la Google Cloud consola para gestionar el control de acceso de sus temas y proyectos.
Para definir controles de acceso a nivel de proyecto, sigue estos pasos:
En la Google Cloud consola, ve a la página Gestión de identidades y accesos.
Selecciona el proyecto.
Haz clic en
Añadir.Escribe uno o varios nombres principales.
En la lista Selecciona un rol, elige el que quieras conceder.
Haz clic en Guardar.
Comprueba que el principal aparece con el rol que le has concedido.
Para definir controles de acceso para temas y suscripciones, sigue estos pasos:
En la Google Cloud consola, ve a la lista Temas de Pub/Sub.
Si es necesario, selecciona el proyecto en el que hayas habilitado Pub/Sub.
Sigue uno de estos pasos:
Para definir roles en uno o varios temas, selecciónalos.
Para definir roles en una suscripción asociada a un tema, haz clic en el ID del tema. En la página Detalles del tema, haz clic en el ID de suscripción. Aparecerá la página Detalles de la suscripción.
Si el panel de información está oculto, haz clic en Mostrar panel de información.
En la pestaña Permisos, haz clic en
Añadir principal.Escribe uno o varios nombres principales.
En la lista Selecciona un rol, elige el que quieras conceder.
Haz clic en Guardar.
Controlar el acceso mediante la API IAM
La API IAM de Pub/Sub te permite definir y obtener políticas en temas y suscripciones concretos de un proyecto, así como probar los permisos de un usuario para un recurso determinado. Al igual que con los métodos de Pub/Sub habituales, puedes invocar los métodos de la API IAM a través de las bibliotecas de cliente, el Explorador de APIs o directamente a través de HTTP.
Ten en cuenta que no puedes usar la API IAM de Pub/Sub para gestionar políticas a nivel de proyecto. Google Cloud
En las siguientes secciones se muestran ejemplos de cómo definir y obtener una política, así como de cómo probar qué permisos tiene una llamada para un recurso determinado.
Obtener una póliza
El método getIamPolicy()
te permite obtener una política.
Este método devuelve un objeto JSON que contiene la política asociada al recurso.
Aquí tienes un fragmento de código de ejemplo para obtener una política de una suscripción:
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
gcloud
Obtén la política de suscripciones:
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json
Resultado:
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.admin", "members": [ "user:user-1@gmail.com" ] }, { "role": "roles/pubsub.editor", "members": [ "serviceAccount:service-account-2@appspot.gserviceaccount.com", "user:user-3@gmail.com" ] } ] }
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración de PHP que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub para PHP.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
A continuación, se muestra un fragmento de código para obtener una política de un tema:C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
gcloud
Obtener la política de temas
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json
Resultado:
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role":" roles/pubsub.viewer", "members": [ "user:user-1@gmail.com" ] } ] }
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración de PHP que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub para PHP.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
Definir una política
El método setIamPolicy()
te permite asociar una política a un recurso. El método setIamPolicy()
usa un SetIamPolicyRequest
, que contiene la política que se va a definir y el recurso al que se adjunta la política.
Devuelve la política resultante.
A continuación, se muestra un fragmento de código de ejemplo para definir una política para una suscripción:
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
gcloud
1. Guarda la política de la suscripción.
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json > subscription_policy.json
2. Abre subscription_policy.json
y actualiza las vinculaciones asignando los roles adecuados a las entidades principales correspondientes.
Para obtener más información sobre cómo trabajar con archivos subscription_policy.json
, consulta
Política en la documentación de IAM.
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.admin", "members": [ "user:user-1@gmail.com" ] }, { "role": "roles/pubsub.editor", "members": [ "serviceAccount:service-account-2@appspot.gserviceaccount.com" ] } ] }
3. Aplica la nueva política de suscripciones.
gcloud pubsub subscriptions set-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ subscription_policy.json
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
PHP
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
A continuación, se muestra un fragmento de código para definir una política para un tema:
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
gcloud
1. Guarda la política del tema.
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json > topic_policy.json
2. Abre topic_policy.json
y actualiza las vinculaciones asignando los roles adecuados a las entidades principales correspondientes.
Para obtener más información sobre cómo trabajar con archivos subscription_policy.json
, consulta
Política en la documentación de IAM.
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.editor", "members": [ "user:user-1@gmail.com", "user:user-2@gmail.com" ] } ] }
3. Aplica la nueva política de temas.
gcloud pubsub topics set-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ topic_policy.json
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
PHP
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
Probar permisos
Puedes usar el método testIamPermissions()
para comprobar qué permisos se pueden añadir o quitar del recurso en cuestión. Toma como parámetros un nombre de recurso y un conjunto de permisos, y devuelve el subconjunto de permisos.
A continuación, se muestra un fragmento de código de muestra para probar los permisos de una suscripción:
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
gcloud
gcloud iam list-testable-permissions \ https://pubsub.googleapis.com/v1/projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json
Resultado:
[ { "name": "pubsub.subscriptions.consume", "stage": "GA" }, { "name": "pubsub.subscriptions.delete", "stage": "GA" }, { "name": "pubsub.subscriptions.get", "stage": "GA" }, { "name": "pubsub.subscriptions.getIamPolicy", "stage": "GA" }, { "name": "pubsub.subscriptions.setIamPolicy", "stage": "GA" }, { "name": "pubsub.subscriptions.update", "stage": "GA" } ]
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración de PHP que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub para PHP.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
A continuación, se muestra un fragmento de código para probar los permisos de un tema:
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
gcloud
gcloud iam list-testable-permissions \ https://pubsub.googleapis.com/v1/projects/${PROJECT}/topics/${TOPIC} \ --format json
Salida
[ { "name": "pubsub.topics.attachSubscription", "stage": "GA" }, { "name": "pubsub.topics.delete", "stage": "GA" }, { "name": "pubsub.topics.detachSubscription", "stage": "GA" }, { "name": "pubsub.topics.get", "stage": "GA" }, { "name": "pubsub.topics.getIamPolicy", "stage": "GA" }, { "name": "pubsub.topics.publish", "stage": "GA" }, { "name": "pubsub.topics.setIamPolicy", "stage": "GA" }, { "name": "pubsub.topics.update", "stage": "GA" } ]
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración de PHP que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub para PHP.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
Comunicación entre proyectos
La gestión de identidades y accesos de Pub/Sub es útil para ajustar el acceso en la comunicación entre proyectos.
Supongamos que una cuenta de servicio del proyecto de Cloud A quiere publicar mensajes en un tema del proyecto de Cloud B. Primero, habilita la API Pub/Sub en el proyecto A.
En segundo lugar, concede a la cuenta de servicio el permiso Editar en el proyecto de Cloud B. Sin embargo, este enfoque suele ser demasiado genérico. Puedes usar la API IAM para conseguir un nivel de acceso más detallado.
Por ejemplo, este fragmento usa el método setIamPolicy()
en project-b y un archivo topic_policy.json
preparado para conceder a la cuenta de servicio foobar@
project-a.iam.gserviceaccount.com
de project-a el rol de editor en el tema projects/
project-b/topics/
topic-b:
gcloud pubsub topics set-iam-policy \ projects/project-b/topics/topic-b \ topic_policy.json
Updated IAM policy for topic topic-b. bindings: - members: - serviceAccount:foobar@project-a.iam.gserviceaccount.com role: roles/pubsub.publisher etag: BwWGrQYX6R4=
Comportamiento de disponibilidad parcial
Las comprobaciones de autorización dependen del subsistema de gestión de identidades y accesos. Para ofrecer una latencia de respuesta baja y constante en las operaciones de datos (publicación y consumo de mensajes), el sistema puede recurrir a las políticas de gestión de identidades y accesos almacenadas en caché. Para obtener información sobre cuándo entrarán en vigor los cambios, consulta la documentación de gestión de identidades y accesos.
Siguientes pasos
- Si tienes problemas para acceder a los recursos de Pub/Sub o autenticarte en ellos, consulta la sección Solución de problemas generales.