Este documento descreve as opções de controle de acesso disponíveis para você no Pub/Sub.
Visão geral
O Pub/Sub usa o gerenciamento de identidade e acesso (IAM) para controle de acesso.
Com o IAM, é possível conceder papéis específicos a usuários, grupos e contas de serviço, a eles as permissões necessárias para realizar as tarefas. É possível conceder esses papéis do IAM usando o consoleGoogle Cloud ou a API IAM.
No Pub/Sub, o controle de acesso pode ser configurado nos níveis do projeto e do recurso individual. Confira alguns exemplos de como usar o controle de acesso do Pub/Sub:
- Conceder acesso por recurso, em vez de para todo o projeto do Google Cloud. 
- Conceder acesso com capacidades limitadas, como somente publicar mensagens em um tópico ou somente consumir mensagens de uma assinatura, mas não excluir o tópico ou a assinatura. 
- Conceder acesso a todos os recursos de Pub/Sub de um projeto a um grupo de desenvolvedores. 
Se você tiver acesso somente de leitura a um único recurso, como um tema ou uma assinatura, não será possível visualizar o recurso usando o console Google Cloud . Em vez disso, use a Google Cloud CLI para ver o recurso.
Para uma descrição detalhada do IAM e dos recursos dele, consulte a documentação do IAM. Consulte, especificamente, Como conceder, alterar e revogar o acesso a recursos.
Tipos de papéis no Pub/Sub
Assim como outros produtos do Google Cloud , o Pub/Sub oferece suporte a três tipos de papéis:
- Papéis básicos: são papéis altamente permissivos que existiam antes da introdução do IAM. Para mais informações sobre papéis básicos, consulte Papéis básicos. 
- Papéis predefinidos: os papéis predefinidos oferecem acesso granular aGoogle Cloud recursos específicos. Para mais informações sobre papéis predefinidos, consulte Papéis predefinidos. Os papéis predefinidos do Pub/Sub estão incluídos em uma parte posterior desta seção. 
- Papéis personalizados: ajudam a aplicar o princípio de privilégio mínimo. Para mais informações sobre papéis personalizados, consulte Papéis personalizados. 
Permissões obrigatórias do Pub/Sub
As seções a seguir listam as permissões do Pub/Sub necessárias para acessar diferentes recursos do Pub/Sub.
Permissões necessárias para tópicos
A tabela a seguir descreve as permissões necessárias para cada método da API Pub/Sub relacionado a tópicos. Ele mostra qual permissão do IAM é necessária para chamar cada método, além de uma descrição do que o método faz.
| Método | Descrição | Permissão necessária | 
|---|---|---|
| projects.topics.create | Cria o tópico com o nome especificado. | pubsub.topics.createno projeto do Cloud que o contém | 
| projects.topics.delete | Exclui o tópico com o nome especificado. | pubsub.topics.deleteno tópico solicitado | 
| projects.topics.get | Recebe a configuração de um tópico. | pubsub.topics.getno tópico solicitado | 
| projects.topics.getIamPolicy | Recebe a política de controle de acesso do IAM para um tópico. | pubsub.topics.getIamPolicyno tópico solicitado | 
| projects.topics.list | Lista todos os temas. | pubsub.topics.listno projeto do Cloud solicitado | 
| projects.topics.patch | Atualiza um tema existente. | pubsub.topics.updateno tópico solicitado | 
| projects.topics.publish | Adiciona uma ou mais mensagens ao tópico. | pubsub.topics.publishno tópico solicitado | 
| projects.topics.setIamPolicy | Define a política de controle de acesso do IAM para um tópico. | pubsub.topics.setIamPolicyno tópico solicitado | 
| projects.topics.testIamPermissions | Retorna permissões do autor da chamada no recurso especificado. | Nenhum | 
Permissões necessárias para assinaturas
A tabela a seguir descreve as permissões necessárias para cada método da API Pub/Sub relacionado a assinaturas. Ela mostra qual permissão do IAM é necessária para chamar cada método, além de uma descrição do que o método faz.
| Método | Descrição | Permissão necessária | 
|---|---|---|
| projects.subscriptions.acknowledge | Confirma as mensagens associadas aos ack_ids no AcknowledgeRequest. | pubsub.subscriptions.consumena assinatura solicitada | 
| projects.subscriptions.create | Cria uma assinatura para um determinado tópico. | pubsub.subscriptions.createno projeto do Cloud que o contém epubsub.topics.attachSubscriptionno tópico solicitado.
        Para criar uma assinatura S no projeto A que esteja
        vinculada a um tópico T no projeto B, as permissões adequadas precisam
        ser concedidas no projeto A e no tópico T. Nesse caso, as informações de identidade do usuário podem ser capturadas nos registros de auditoria do Projeto B. | 
| projects.subscriptions.delete | Exclui uma assinatura. | pubsub.subscriptions.deletena assinatura solicitada | 
| projects.subscriptions.detach | Remove uma assinatura deste tópico. | pubsub.subscriptions.detachna assinatura | 
| projects.subscriptions.get | Recebe os detalhes de configuração de uma assinatura. | pubsub.subscriptions.getna assinatura solicitada | 
| projects.subscriptions.getIamPolicy | Recebe a política de controle de acesso do IAM para uma assinatura. | pubsub.subscriptions.getIamPolicyna assinatura solicitada | 
| projects.subscriptions.list | Lista as assinaturas correspondentes. | pubsub.subscriptions.listno projeto do Cloud solicitado | 
| projects.subscriptions.modifyAckDeadline | Modifica o prazo de confirmação de uma mensagem específica. | pubsub.subscriptions.consumena assinatura solicitada | 
| projects.subscriptions.modifyPushConfig | Modifica o pushConfig de uma assinatura especificada. | pubsub.subscriptions.updatena assinatura solicitada | 
| projects.subscriptions.patch | Atualiza uma assinatura. | pubsub.subscriptions.updatena assinatura solicitada | 
| projects.subscriptions.pull | Extrai mensagens do servidor. | pubsub.subscriptions.consumena assinatura solicitada | 
| projects.subscriptions.seek | Procura uma assinatura existente para um ponto no tempo ou um snapshot. | pubsub.subscriptions.consumena assinatura solicitada epubsub.snapshots.seekno snapshot solicitado, se houver. | 
| projects.subscriptions.setIamPolicy | Define a política de controle de acesso do IAM para uma assinatura. | pubsub.subscriptions.setIamPolicyna assinatura solicitada | 
| projects.subscriptions.testIamPermissions | Retorna permissões do autor da chamada no recurso especificado. | Nenhum | 
Permissões necessárias para esquemas
A tabela a seguir descreve as permissões necessárias para cada método da API Pub/Sub relacionado a esquemas. Ela mostra qual permissão do IAM é necessária para chamar cada método, além de uma descrição do que o método faz.
| Método | Descrição | Permissão necessária | 
|---|---|---|
| projects.schemas.commit | Confirma uma nova revisão de esquema. | pubsub.schemas.commitno esquema solicitado | 
| projects.schemas.create | Cria um esquema. | pubsub.schemas.createno projeto do Cloud que o contém | 
| projects.schemas.delete | Exclui um esquema. | pubsub.schemas.deleteno esquema solicitado | 
| projects.schemas.deleteRevision | Exclui uma revisão de esquema específica. | pubsub.schemas.deleteno esquema solicitado | 
| projects.schemas.get | Recebe um esquema. | pubsub.schemas.getno esquema solicitado | 
| projects.schemas.getIamPolicy | Recebe a política de controle de acesso do IAM para um esquema. | pubsub.schemas.getIamPolicyno esquema solicitado | 
| projects.schemas.list | Lista os esquemas em um projeto. | pubsub.schemas.listno projeto do Cloud solicitado | 
| projects.schemas.listRevisions | Lista todas as revisões do esquema nomeado. | pubsub.schemas.listRevisionsno esquema solicitado | 
| projects.schemas.rollback | Cria uma revisão de esquema com base em uma revisão anterior. | pubsub.schemas.rollbackno esquema solicitado | 
| projects.schemas.validate | Valida uma definição de esquema. | pubsub.schemas.validateno projeto do Cloud que o contém | 
| projects.schemas.validateMessage | Valida uma mensagem em relação a um esquema. | pubsub.schemas.validateno projeto do Cloud que o contém | 
Permissões necessárias para snapshots
A tabela a seguir descreve as permissões necessárias para cada método da API Pub/Sub relacionado a snapshots. Ela mostra qual permissão do IAM é necessária para chamar cada método, além de uma descrição do que o método faz.
| Método REST | Descrição | Permissão necessária | 
|---|---|---|
| projects.snapshots.create | Cria um snapshot da assinatura solicitada. | pubsub.snapshots.createno projeto do Cloud que o contém e a permissãopubsub.subscriptions.consumena assinatura de origem. | 
| projects.snapshots.delete | Remove um snapshot atual. | pubsub.snapshots.deleteno snapshot solicitado | 
| projects.snapshots.getIamPolicy | Recebe a política de controle de acesso do IAM para um snapshot. | pubsub.snapshots.getIamPolicyno snapshot solicitado | 
| projects.snapshots.list | Lista os snapshots atuais. | pubsub.snapshots.listno projeto do Cloud solicitado | 
| projects.snapshots.patch | Atualiza um snapshot existente. | pubsub.snapshots.updateno snapshot solicitado | 
| projects.snapshots.setIamPolicy | Define a política de controle de acesso do IAM para um snapshot. | pubsub.snapshots.setIamPolicyno snapshot solicitado | 
| projects.snapshots.testIamPermissions | Retorna permissões do autor da chamada no recurso especificado. | Nenhum | 
Funções disponíveis do Pub/Sub
A tabela a seguir lista todos os papéis do Pub/Sub e as permissões associadas a cada um:
| 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: 
 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 
Como controlar o acesso usando o console Google Cloud
É possível usar o console Google Cloud para gerenciar o controle de acesso dos seus tópicos e projetos.
Para definir os controles de acesso no nível do projeto, siga estas etapas:
- No console Google Cloud , acesse a página do IAM. 
- Selecione o projeto. 
- Clique em Adicionar. 
- Digite um ou mais nomes de principais. 
- Na lista Selecionar um papel, escolha o papel que você quer conceder. 
- Clique em Salvar. 
- Verifique se o principal está listado com o papel concedido. 
Para definir os controles de acesso para tópicos e assinaturas, siga estas etapas:
- No console Google Cloud , acesse a lista Tópicos do Pub/Sub. 
- Se necessário, selecione seu projeto compatível com o Pub/Sub. 
- Realize uma das seguintes etapas: - Para definir papéis em um ou mais tópicos, selecione-os. 
- Para definir papéis para uma assinatura anexada a um tópico, clique no ID do tópico. Na página Detalhes do tópico, clique no ID da assinatura. A página Detalhes da assinatura é exibida. 
 
- Se o painel de informações estiver oculto, clique em Mostrar painel de informações. 
- Na guia Permissões, clique em Adicionar principal. 
- Digite um ou mais nomes de principais. 
- Na lista Selecionar um papel, escolha o papel que você quer conceder. 
- Clique em Salvar. 
Como controlar o acesso pela API IAM
A API IAM do Pub/Sub permite definir e receber políticas sobre tópicos e assinaturas individuais em um projeto e testar as permissões de um usuário para um determinado recurso. Assim como acontece com os métodos normais de Pub/Sub, invoque os métodos da API IAM por meio das bibliotecas de cliente, do API Explorer ou diretamente por HTTP.
Não é possível usar a API IAM do Pub/Sub para gerenciar políticas no nível do projeto Google Cloud .
Nas seções a seguir, veja exemplos de como definir e consultar uma política. Além disso, veja como descobrir quais são as permissões de um autor de chamada para um recurso.
Como consultar uma política
O método getIamPolicy() permite que você receba uma política atual.
Esse método retorna um objeto JSON que contém a política associada ao recurso.
Veja um exemplo de código para consultar a política de uma assinatura:
C#
Antes de tentar esse exemplo, siga as instruções de configuração do C# em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C#.
gcloud
Receba a política da assinatura:
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json
Saída:
{ "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
O exemplo a seguir usa a versão principal da biblioteca de cliente do Go Pub/Sub (v2). Se você ainda estiver usando a biblioteca v1, consulte o guia de migração para a v2. Para conferir uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Go em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Java
Antes de tentar essa amostra, siga as instruções de configuração do Java em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
PHP
Antes de tentar esse exemplo, siga as instruções de configuração do PHP em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub PHP.
Python
Antes de tentar esse exemplo, siga as instruções de configuração do Python em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Ruby
O exemplo a seguir usa a biblioteca de cliente do Ruby Pub/Sub v3. Se você ainda estiver usando a biblioteca v2, consulte o guia de migração para a v3. Para conferir uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Ruby em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Ruby.
Veja um exemplo de código para consultar a política de um tópico:C#
Antes de tentar esse exemplo, siga as instruções de configuração do C# em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C#.
gcloud
Acesse a política do tópico:
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json
Saída:
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role":" roles/pubsub.viewer", "members": [ "user:user-1@gmail.com" ] } ] }
Go
O exemplo a seguir usa a versão principal da biblioteca de cliente do Go Pub/Sub (v2). Se você ainda estiver usando a biblioteca v1, consulte o guia de migração para a v2. Para conferir uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Go em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Java
Antes de tentar essa amostra, siga as instruções de configuração do Java em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
PHP
Antes de tentar esse exemplo, siga as instruções de configuração do PHP em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub PHP.
Python
Antes de tentar esse exemplo, siga as instruções de configuração do Python em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Ruby
O exemplo a seguir usa a biblioteca de cliente do Ruby Pub/Sub v3. Se você ainda estiver usando a biblioteca v2, consulte o guia de migração para a v3. Para conferir uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Ruby em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Ruby.
Como definir uma política
O método setIamPolicy() permite que você anexe uma política a um recurso. O método setIamPolicy() usa um SetIamPolicyRequest, que contém a política a ser definida e o recurso ao qual a política está anexada.
Ele retorna a política resultante.
Veja um exemplo de código para definir a política de uma assinatura:
C#
Antes de tentar esse exemplo, siga as instruções de configuração do C# em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C#.
gcloud
1. Salve a política da assinatura.
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json > subscription_policy.json
2. Abra subscription_policy.json e atualize as vinculações, atribuindo os papéis apropriados aos principais adequados.
 Para mais informações sobre como trabalhar com arquivos subscription_policy.json, consulte 
 Política na documentação do 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. Aplique a nova política de assinatura.
gcloud pubsub subscriptions set-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ subscription_policy.json
Go
O exemplo a seguir usa a versão principal da biblioteca de cliente do Go Pub/Sub (v2). Se você ainda estiver usando a biblioteca v1, consulte o guia de migração para a v2. Para conferir uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Go em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Java
Antes de tentar essa amostra, siga as instruções de configuração do Java em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
PHP
Python
Antes de tentar esse exemplo, siga as instruções de configuração do Python em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Ruby
O exemplo a seguir usa a biblioteca de cliente do Ruby Pub/Sub v3. Se você ainda estiver usando a biblioteca v2, consulte o guia de migração para a v3. Para conferir uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Ruby em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Ruby.
Veja um exemplo de código para definir a política de um tópico:
C#
Antes de tentar esse exemplo, siga as instruções de configuração do C# em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C#.
gcloud
1. Salve a política do tópico.
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json > topic_policy.json
2. Abra topic_policy.json e atualize as vinculações, atribuindo os papéis apropriados aos principais adequados.
 Para mais informações sobre como trabalhar com arquivos subscription_policy.json, consulte 
 Política na documentação do IAM.
 
{ "etag": "BwUjMhCsNvY=", "bindings": [ { "role": "roles/pubsub.editor", "members": [ "user:user-1@gmail.com", "user:user-2@gmail.com" ] } ] }
3. Aplique a nova política de tópicos.
gcloud pubsub topics set-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ topic_policy.json
Go
O exemplo a seguir usa a versão principal da biblioteca de cliente do Go Pub/Sub (v2). Se você ainda estiver usando a biblioteca v1, consulte o guia de migração para a v2. Para conferir uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Go em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Java
Antes de tentar essa amostra, siga as instruções de configuração do Java em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
PHP
Python
Antes de tentar esse exemplo, siga as instruções de configuração do Python em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Ruby
O exemplo a seguir usa a biblioteca de cliente do Ruby Pub/Sub v3. Se você ainda estiver usando a biblioteca v2, consulte o guia de migração para a v3. Para conferir uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Ruby em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Ruby.
Como testar permissões
Use o método testIamPermissions() para verificar quais permissões fornecidas podem ser adicionadas ou removidas do recurso específico. Ele recebe o nome do recurso e um conjunto de permissões como parâmetros e retorna o subconjunto de permissões.
Veja um exemplo de código para testar as permissões de uma assinatura:
C#
Antes de tentar esse exemplo, siga as instruções de configuração do C# em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C#.
gcloud
gcloud iam list-testable-permissions \
   https://pubsub.googleapis.com/v1/projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \
   --format jsonSaída:
 [
    {
     "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
O exemplo a seguir usa a versão principal da biblioteca de cliente do Go Pub/Sub (v2). Se você ainda estiver usando a biblioteca v1, consulte o guia de migração para a v2. Para conferir uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Go em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Java
Antes de tentar essa amostra, siga as instruções de configuração do Java em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
PHP
Antes de tentar esse exemplo, siga as instruções de configuração do PHP em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub PHP.
Python
Antes de tentar esse exemplo, siga as instruções de configuração do Python em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Ruby
O exemplo a seguir usa a biblioteca de cliente do Ruby Pub/Sub v3. Se você ainda estiver usando a biblioteca v2, consulte o guia de migração para a v3. Para conferir uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Ruby em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Ruby.
Veja um exemplo de código para testar permissões para um tópico:
C#
Antes de tentar esse exemplo, siga as instruções de configuração do C# em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C#.
gcloud
gcloud iam list-testable-permissions \
   https://pubsub.googleapis.com/v1/projects/${PROJECT}/topics/${TOPIC} \
   --format jsonSaída
 [
   {
     "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
O exemplo a seguir usa a versão principal da biblioteca de cliente do Go Pub/Sub (v2). Se você ainda estiver usando a biblioteca v1, consulte o guia de migração para a v2. Para conferir uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Go em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Java
Antes de tentar essa amostra, siga as instruções de configuração do Java em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
PHP
Antes de tentar esse exemplo, siga as instruções de configuração do PHP em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub PHP.
Python
Antes de tentar esse exemplo, siga as instruções de configuração do Python em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Ruby
O exemplo a seguir usa a biblioteca de cliente do Ruby Pub/Sub v3. Se você ainda estiver usando a biblioteca v2, consulte o guia de migração para a v3. Para conferir uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de tentar esse exemplo, siga as instruções de configuração do Ruby em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Ruby.
Comunicação entre projetos
O IAM do Pub/Sub é útil para o ajuste de acesso na comunicação entre projetos.
Imagine que uma conta de serviço no projeto A do Cloud queira publicar mensagens em um tópico no projeto B do Cloud. Primeiro, ative a API Pub/Sub no projeto A.
Em seguida, conceda à conta de serviço a permissão Editar no projeto B do Cloud. No entanto, essa abordagem geralmente é muito grosseira. Você pode usar a API IAM para conseguir um nível de acesso mais refinado.
Por exemplo, este snippet usa o método setIamPolicy() em project-b e um arquivo topic_policy.json preparado
para conceder à conta de serviço
foobar@project-a.iam.gserviceaccount.com de project-a o papel do editor no tópico
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=
Comportamento de disponibilidade parcial
As verificações de autorização dependem do subsistema do IAM. Para oferecer uma latência de resposta consistentemente baixa para operações de dados (publicação e consumo de mensagens), o sistema pode recorrer a políticas do IAM em cache. Para mais informações sobre quando as alterações entrarão em vigor, consulte a documentação do IAM.
A seguir
- Se você tiver problemas para acessar ou autenticar recursos do Pub/Sub, consulte Solução de problemas geral.