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 consoleTrusted 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 Trusted 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 Trusted Cloud by S3NS , 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 aTrusted 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.create no projeto do Cloud que o contém |
projects.topics.delete
|
Exclui o tópico com o nome especificado. | pubsub.topics.delete
no tópico solicitado |
projects.topics.get
|
Recebe a configuração de um tópico. | pubsub.topics.get
no tópico solicitado |
projects.topics.getIamPolicy
|
Recebe a política de controle de acesso do IAM para um tópico. | pubsub.topics.getIamPolicy
no tópico solicitado |
projects.topics.list
|
Lista todos os temas. | pubsub.topics.list
no projeto do Cloud solicitado |
projects.topics.patch
|
Atualiza um tema existente. | pubsub.topics.update
no tópico solicitado |
projects.topics.publish
|
Adiciona uma ou mais mensagens ao tópico. | pubsub.topics.publish
no tópico solicitado |
projects.topics.setIamPolicy
|
Define a política de controle de acesso do IAM para um tópico. | pubsub.topics.setIamPolicy
no 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.consume
na assinatura solicitada |
projects.subscriptions.create
|
Cria uma assinatura para um determinado tópico. | pubsub.subscriptions.create no projeto do Cloud que o contém e pubsub.topics.attachSubscription no 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.delete
na assinatura solicitada |
projects.subscriptions.detach
|
Remove uma assinatura deste tópico. | pubsub.subscriptions.detach
na assinatura |
projects.subscriptions.get
|
Recebe os detalhes de configuração de uma assinatura. | pubsub.subscriptions.get
na assinatura solicitada |
projects.subscriptions.getIamPolicy
|
Recebe a política de controle de acesso do IAM para uma assinatura. | pubsub.subscriptions.getIamPolicy
na assinatura solicitada |
projects.subscriptions.list
|
Lista as assinaturas correspondentes. | pubsub.subscriptions.list
no projeto do Cloud solicitado |
projects.subscriptions.modifyAckDeadline
|
Modifica o prazo de confirmação de uma mensagem específica. | pubsub.subscriptions.consume
na assinatura solicitada |
projects.subscriptions.modifyPushConfig
|
Modifica o pushConfig de uma assinatura especificada. | pubsub.subscriptions.update
na assinatura solicitada |
projects.subscriptions.patch
|
Atualiza uma assinatura. | pubsub.subscriptions.update
na assinatura solicitada |
projects.subscriptions.pull
|
Extrai mensagens do servidor. | pubsub.subscriptions.consume
na assinatura solicitada |
projects.subscriptions.seek
|
Procura uma assinatura existente para um ponto no tempo ou um snapshot. | pubsub.subscriptions.consume na assinatura solicitada e pubsub.snapshots.seek no snapshot solicitado, se houver. |
projects.subscriptions.setIamPolicy
|
Define a política de controle de acesso do IAM para uma assinatura. | pubsub.subscriptions.setIamPolicy
na 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.commit
no esquema solicitado |
projects.schemas.create
|
Cria um esquema. | pubsub.schemas.create no projeto do Cloud que o contém |
projects.schemas.delete
|
Exclui um esquema. | pubsub.schemas.delete
no esquema solicitado |
projects.schemas.deleteRevision
|
Exclui uma revisão de esquema específica. | pubsub.schemas.delete
no esquema solicitado |
projects.schemas.get
|
Recebe um esquema. | pubsub.schemas.get
no esquema solicitado |
projects.schemas.getIamPolicy
|
Recebe a política de controle de acesso do IAM para um esquema. | pubsub.schemas.getIamPolicy no esquema solicitado |
projects.schemas.list
|
Lista os esquemas em um projeto. | pubsub.schemas.list
no projeto do Cloud solicitado |
projects.schemas.listRevisions
|
Lista todas as revisões do esquema nomeado. | pubsub.schemas.listRevisions
no esquema solicitado |
projects.schemas.rollback
|
Cria uma revisão de esquema com base em uma revisão anterior. | pubsub.schemas.rollback
no esquema solicitado |
projects.schemas.validate
|
Valida uma definição de esquema. | pubsub.schemas.validate no projeto do Cloud que o contém |
projects.schemas.validateMessage
|
Valida uma mensagem em relação a um esquema. | pubsub.schemas.validate no 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.create no projeto do Cloud que o contém e a permissão pubsub.subscriptions.consume na assinatura de origem. |
projects.snapshots.delete
|
Remove um snapshot atual. | pubsub.snapshots.delete
no snapshot solicitado |
projects.snapshots.getIamPolicy
|
Recebe a política de controle de acesso do IAM para um snapshot. | pubsub.snapshots.getIamPolicy
no snapshot solicitado |
projects.snapshots.list
|
Lista os snapshots atuais. | pubsub.snapshots.list
no projeto do Cloud solicitado |
projects.snapshots.patch
|
Atualiza um snapshot existente. | pubsub.snapshots.update
no snapshot solicitado |
projects.snapshots.setIamPolicy
|
Define a política de controle de acesso do IAM para um snapshot. | pubsub.snapshots.setIamPolicy
no 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 Trusted Cloud
É possível usar o console Trusted 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 Trusted 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 Trusted 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 Trusted 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.s3ns-system.iam.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.s3ns-system.iam.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 json
Saí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 json
Saí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.s3ns-system.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.s3ns-system.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.