Este documento descreve as opções de controlo de acesso disponíveis no Pub/Sub.
Vista geral
O Pub/Sub usa a gestão de identidade e de acesso (IAM) para o controlo de acesso.
O IAM permite-lhe conceder funções específicas a utilizadores, grupos e contas de serviço, o que lhes dá as autorizações necessárias para realizar as respetivas tarefas. Pode conceder estas funções de IAM através da Google Cloud consola ou da API IAM.
No Pub/Sub, o controlo de acesso pode ser configurado ao nível do projeto e ao nível do recurso individual. Seguem-se alguns exemplos de utilização do controlo de acesso do Pub/Sub:
Conceda acesso por recurso, em vez de para todo o projeto do Google Cloud.
Conceder acesso com capacidades limitadas, como apenas publicar mensagens num tópico ou apenas consumir mensagens de uma subscrição, mas não eliminar o tópico ou a subscrição.
Conceder acesso a todos os recursos do Pub/Sub num projeto a um grupo de programadores.
Se tiver acesso apenas para visualização a um único recurso, como um tópico ou uma subscrição, não pode ver o recurso através da consola. Google Cloud Em alternativa, pode usar a Google Cloud CLI para ver o recurso.
Para uma descrição detalhada do IAM e das respetivas funcionalidades, consulte a documentação do IAM. Em particular, consulte o artigo Conceder, alterar e revogar o acesso a recursos.
Tipos de funções no Pub/Sub
Semelhante a outros Google Cloud produtos, o Pub/Sub suporta três tipos de funções:
Funções básicas: as funções básicas são funções altamente permissivas que existiam antes da introdução do IAM. Para mais informações sobre as funções básicas, consulte o artigo Funções básicas.
Funções predefinidas: as funções predefinidas dão acesso detalhado aGoogle Cloud recursos específicos. Para mais informações sobre as funções predefinidas, consulte o artigo Funções predefinidas. As funções predefinidas do Pub/Sub estão incluídas numa parte posterior desta secção.
Funções personalizadas: as funções personalizadas ajudam a aplicar o princípio do menor privilégio. Para mais informações sobre funções personalizadas, consulte o artigo Funções personalizadas.
Autorizações do Pub/Sub necessárias
As secções seguintes listam as autorizações do Pub/Sub necessárias para aceder a diferentes recursos do Pub/Sub.
Autorizações necessárias para tópicos
A tabela seguinte descreve as autorizações necessárias para cada método da API Pub/Sub relacionado com tópicos. Mostra que autorização do IAM é necessária para chamar cada método, juntamente com uma descrição do que o método faz.
Método | Descrição | Autorização necessária |
---|---|---|
projects.topics.create
|
Cria o tópico indicado com o nome indicado. | pubsub.topics.create
no projeto na nuvem que o contém |
projects.topics.delete
|
Elimina o tópico com o nome indicado. | pubsub.topics.delete
sobre o tópico pedido |
projects.topics.get
|
Obtém a configuração de um tópico. | pubsub.topics.get
sobre o tópico pedido |
projects.topics.getIamPolicy
|
Obtém a política de controlo de acesso IAM para um tópico. | pubsub.topics.getIamPolicy
sobre o tópico pedido |
projects.topics.list
|
Apresenta todos os tópicos. | pubsub.topics.list
no projeto na nuvem pedido |
projects.topics.patch
|
Atualiza um tópico existente. | pubsub.topics.update
sobre o tópico pedido |
projects.topics.publish
|
Adiciona uma ou mais mensagens ao tópico. | pubsub.topics.publish
sobre o tópico pedido |
projects.topics.setIamPolicy
|
Define a política de controlo de acesso IAM para um tópico. | pubsub.topics.setIamPolicy
sobre o tópico pedido |
projects.topics.testIamPermissions
|
Devolve as autorizações que um autor da chamada tem no recurso especificado. | Nenhum |
Autorizações necessárias para subscrições
A tabela seguinte descreve as autorizações necessárias para cada método da API Pub/Sub relacionado com subscrições. Mostra a autorização de IAM necessária para chamar cada método, juntamente com uma descrição do que o método faz.
Método | Descrição | Autorização necessária |
---|---|---|
projects.subscriptions.acknowledge
|
Confirma as mensagens associadas aos ack_ids no AcknowledgeRequest. | pubsub.subscriptions.consume
na subscrição pedida |
projects.subscriptions.create
|
Cria uma subscrição para um determinado tópico. | pubsub.subscriptions.create
no projeto do Google Cloud que contém o tópico e
pubsub.topics.attachSubscription no tópico pedido.
Para criar uma subscrição S no projeto A que esteja
anexada a um tópico T no projeto B, as autorizações adequadas têm de
ser concedidas no projeto A e no tópico T. Neste caso, as informações de identidade do utilizador podem ser capturadas nos registos de auditoria do projeto B. |
projects.subscriptions.delete
|
Elimina uma subscrição existente. | pubsub.subscriptions.delete
na subscrição pedida |
projects.subscriptions.detach
|
Desassocia uma subscrição deste tópico. | pubsub.subscriptions.detach
na subscrição |
projects.subscriptions.get
|
Obtém os detalhes de configuração de uma subscrição. | pubsub.subscriptions.get
na subscrição pedida |
projects.subscriptions.getIamPolicy
|
Obtém a política de controlo de acesso IAM para uma subscrição. | pubsub.subscriptions.getIamPolicy
na subscrição pedida |
projects.subscriptions.list
|
Apresenta as subscrições correspondentes. | pubsub.subscriptions.list
no projeto na nuvem pedido |
projects.subscriptions.modifyAckDeadline
|
Modifica o prazo de confirmação para uma mensagem específica. | pubsub.subscriptions.consume
na subscrição pedida |
projects.subscriptions.modifyPushConfig
|
Modifica o pushConfig de uma subscrição especificada. | pubsub.subscriptions.update
na subscrição pedida |
projects.subscriptions.patch
|
Atualiza uma subscrição existente. | pubsub.subscriptions.update
na subscrição pedida |
projects.subscriptions.pull
|
Extrai mensagens do servidor. | pubsub.subscriptions.consume
na subscrição pedida |
projects.subscriptions.seek
|
Procura uma subscrição existente num determinado momento ou num instantâneo. | pubsub.subscriptions.consume
na subscrição pedida e pubsub.snapshots.seek
na captura de ecrã pedida, se existir. |
projects.subscriptions.setIamPolicy
|
Define a política de controlo de acesso do IAM para uma subscrição. | pubsub.subscriptions.setIamPolicy
na subscrição pedida |
projects.subscriptions.testIamPermissions
|
Devolve as autorizações que um autor da chamada tem no recurso especificado. | Nenhum |
Autorizações necessárias para esquemas
A tabela seguinte descreve as autorizações necessárias para cada método da API Pub/Sub relacionado com esquemas. Mostra a autorização de IAM necessária para chamar cada método, juntamente com uma descrição do que o método faz.
Método | Descrição | Autorização necessária |
---|---|---|
projects.schemas.commit
|
Confirma uma nova revisão do esquema. | pubsub.schemas.commit
no esquema pedido |
projects.schemas.create
|
Cria um esquema. | pubsub.schemas.create
no projeto na nuvem que o contém |
projects.schemas.delete
|
Elimina um esquema. | pubsub.schemas.delete
no esquema pedido |
projects.schemas.deleteRevision
|
Elimina uma revisão de esquema específica. | pubsub.schemas.delete
no esquema pedido |
projects.schemas.get
|
Obtém um esquema. | pubsub.schemas.get
no esquema pedido |
projects.schemas.getIamPolicy
|
Obtém a política de controlo de acesso IAM para um esquema. | pubsub.schemas.getIamPolicy no esquema pedido |
projects.schemas.list
|
Apresenta esquemas num projeto. | pubsub.schemas.list
no projeto na nuvem pedido |
projects.schemas.listRevisions
|
Apresenta todas as revisões do esquema com nome. | pubsub.schemas.listRevisions
no esquema pedido |
projects.schemas.rollback
|
Cria uma nova revisão do esquema a partir de uma revisão anterior. | pubsub.schemas.rollback
no esquema pedido |
projects.schemas.validate
|
Valida uma definição de esquema. | pubsub.schemas.validate
no projeto na nuvem que o contém |
projects.schemas.validateMessage
|
Valida uma mensagem de acordo com um esquema. | pubsub.schemas.validate
no projeto na nuvem que o contém |
Autorizações necessárias para as capturas instantâneas
A tabela seguinte descreve as autorizações necessárias para cada método da API Pub/Sub relacionado com instantâneos. Mostra a autorização de IAM necessária para chamar cada método, juntamente com uma descrição do que o método faz.
Método REST | Descrição | Autorização necessária |
---|---|---|
projects.snapshots.create
|
Cria um instantâneo a partir da subscrição pedida. | pubsub.snapshots.create
no projeto do Google Cloud que contém o recurso e a autorização pubsub.subscriptions.consume
na subscrição de origem. |
projects.snapshots.delete
|
Remove um instantâneo existente. | pubsub.snapshots.delete
no resumo pedido |
projects.snapshots.getIamPolicy
|
Obtém a política de controlo de acesso IAM para um instantâneo. | pubsub.snapshots.getIamPolicy
no resumo pedido |
projects.snapshots.list
|
Lista os instantâneos existentes. | pubsub.snapshots.list
no projeto na nuvem pedido |
projects.snapshots.patch
|
Atualiza uma imagem instantânea existente. | pubsub.snapshots.update
no resumo pedido |
projects.snapshots.setIamPolicy
|
Define a política de controlo de acesso do IAM para um instantâneo. | pubsub.snapshots.setIamPolicy
no resumo pedido |
projects.snapshots.testIamPermissions
|
Devolve as autorizações que um autor da chamada tem no recurso especificado. | Nenhum |
Funções do Pub/Sub disponíveis
A tabela seguinte apresenta todas as funções do Pub/Sub e as autorizações associadas a cada função:
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 o acesso através da Google Cloud consola
Pode usar a Google Cloud consola para gerir o controlo de acesso para os seus tópicos e projetos.
Para definir controlos de acesso ao nível do projeto, siga estes passos:
Na Google Cloud consola, aceda à página IAM.
Selecione o seu projeto.
Clique em
Adicionar.Introduza um ou mais nomes de principais.
Na lista Selecionar uma função, selecione a função que quer conceder.
Clique em Guardar.
Verifique se o principal está listado com a função que lhe concedeu.
Para definir controlos de acesso para tópicos e subscrições, siga estes passos:
Na Google Cloud consola, aceda à lista de tópicos do Pub/Sub.
Se necessário, selecione o projeto com o Pub/Sub ativado.
Realize um dos seguintes passos:
Para definir funções para um ou mais tópicos, selecione os tópicos.
Para definir funções para uma subscrição associada a um ID do tópico, clique no ID do tópico. Na página Detalhes do tópico, clique no ID da subscrição. É apresentada a página Detalhes da subscrição.
Se o painel de informações estiver oculto, clique em Mostrar painel de informações.
No separador Autorizações, clique em
Adicionar principal.Introduza um ou mais nomes de principais.
Na lista Selecionar uma função, selecione a função que quer conceder.
Clique em Guardar.
Controlar o acesso através da API IAM
A API IAM do Pub/Sub permite definir e obter políticas em tópicos e subscrições individuais num projeto, bem como testar as autorizações de um utilizador para um determinado recurso. Tal como acontece com os métodos normais do Pub/Sub, pode invocar os métodos da API IAM através das bibliotecas cliente, do API Explorer ou diretamente através de HTTP.
Tenha em atenção que não pode usar a API IAM do Pub/Sub para gerir políticas ao Google Cloud nível do projeto.
As secções seguintes dão exemplos de como definir e obter uma política, e como testar as autorizações que um autor da chamada tem para um determinado recurso.
Obtenha uma política
O método getIamPolicy()
permite obter uma política existente.
Este método devolve um objeto JSON que contém a política associada ao recurso.
Segue-se um exemplo de código para obter uma política para uma subscrição:
C#
Antes de experimentar este exemplo, siga as instruções de configuração do C# em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
gcloud
Obtenha a política de subscrição:
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" ] } ] }
Ir
O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
PHP
Antes de experimentar este exemplo, siga as instruções de configuração do PHP no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API PHP Pub/Sub.
Python
Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.
Ruby
O exemplo seguinte usa a biblioteca cliente Ruby Pub/Sub v3. Se ainda estiver a usar a biblioteca v2, consulte o guia de migração para a v3. Para ver uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Ruby em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby Pub/Sub.
Segue-se um exemplo de código para obter uma política para um tópico:C#
Antes de experimentar este exemplo, siga as instruções de configuração do C# em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
gcloud
Obtenha a política de tópicos
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" ] } ] }
Ir
O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
PHP
Antes de experimentar este exemplo, siga as instruções de configuração do PHP no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API PHP Pub/Sub.
Python
Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.
Ruby
O exemplo seguinte usa a biblioteca cliente Ruby Pub/Sub v3. Se ainda estiver a usar a biblioteca v2, consulte o guia de migração para a v3. Para ver uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Ruby em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby Pub/Sub.
Defina uma política
O método setIamPolicy()
permite anexar uma política
a um recurso. O método setIamPolicy()
recebe um SetIamPolicyRequest
, que
contém a política a definir e o recurso ao qual a política está anexada.
Devolve a política resultante.
Segue-se um exemplo de código para definir uma política para uma subscrição:
C#
Antes de experimentar este exemplo, siga as instruções de configuração do C# em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
gcloud
1. Guarde a política para a subscrição.
gcloud pubsub subscriptions get-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ --format json > subscription_policy.json
2. Abra o subscription_policy.json
e atualize as associações atribuindo as funções adequadas aos principais adequados.
Para mais informações sobre como trabalhar com ficheiros subscription_policy.json
, consulte a
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 subscrição.
gcloud pubsub subscriptions set-iam-policy \ projects/${PROJECT}/subscriptions/${SUBSCRIPTION} \ subscription_policy.json
Ir
O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
PHP
Python
Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.
Ruby
O exemplo seguinte usa a biblioteca cliente Ruby Pub/Sub v3. Se ainda estiver a usar a biblioteca v2, consulte o guia de migração para a v3. Para ver uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Ruby em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby Pub/Sub.
Segue-se um exemplo de código para definir uma política para um tópico:
C#
Antes de experimentar este exemplo, siga as instruções de configuração do C# em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
gcloud
1. Guarde a política para o tópico.
gcloud pubsub topics get-iam-policy \ projects/${PROJECT}/topics/${TOPIC} \ --format json > topic_policy.json
2. Abra o topic_policy.json
e atualize as associações atribuindo as funções adequadas aos principais adequados.
Para mais informações sobre como trabalhar com ficheiros subscription_policy.json
, consulte a
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
Ir
O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
PHP
Python
Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.
Ruby
O exemplo seguinte usa a biblioteca cliente Ruby Pub/Sub v3. Se ainda estiver a usar a biblioteca v2, consulte o guia de migração para a v3. Para ver uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Ruby em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby Pub/Sub.
Teste as autorizações
Pode usar o método testIamPermissions()
para verificar quais das autorizações fornecidas podem ser adicionadas ou removidas para o recurso fornecido. Recebe como parâmetros um nome do recurso e um conjunto de autorizações, e devolve o subconjunto de autorizações.
Segue-se um exemplo de código para testar as autorizações de uma subscrição:
C#
Antes de experimentar este exemplo, siga as instruções de configuração do C# em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
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" } ]
Ir
O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
PHP
Antes de experimentar este exemplo, siga as instruções de configuração do PHP no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API PHP Pub/Sub.
Python
Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.
Ruby
O exemplo seguinte usa a biblioteca cliente Ruby Pub/Sub v3. Se ainda estiver a usar a biblioteca v2, consulte o guia de migração para a v3. Para ver uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Ruby em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby Pub/Sub.
Segue-se um exemplo de código para testar as autorizações de um tópico:
C#
Antes de experimentar este exemplo, siga as instruções de configuração do C# em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
gcloud
gcloud iam list-testable-permissions \ https://pubsub.googleapis.com/v1/projects/${PROJECT}/topics/${TOPIC} \ --format json
Resultado
[ { "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" } ]
Ir
O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
PHP
Antes de experimentar este exemplo, siga as instruções de configuração do PHP no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API PHP Pub/Sub.
Python
Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.
Ruby
O exemplo seguinte usa a biblioteca cliente Ruby Pub/Sub v3. Se ainda estiver a usar a biblioteca v2, consulte o guia de migração para a v3. Para ver uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Ruby em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby Pub/Sub.
Comunicação entre projetos
O IAM do Pub/Sub é útil para ajustar o acesso na comunicação entre projetos.
Suponhamos que uma conta de serviço no projeto na nuvem A quer publicar mensagens num tópico no projeto na nuvem B. Primeiro, ative a API Pub/Sub no projeto A.
Em segundo lugar, conceda à conta de serviço autorização para Editar no projeto do Google Cloud B. No entanto, esta abordagem é frequentemente demasiado grosseira. Pode usar a API IAM para alcançar um nível de acesso mais detalhado.
Por exemplo, este fragmento usa o método setIamPolicy()
em project-b e um ficheiro
topic_policy.json
preparado para conceder à conta de serviço
foobar@
project-a.iam.gserviceaccount.com
a função de publicador no tópico
projects/
project-b/topics/
topic-b:project-a
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 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 de IAM em cache. Para ver informações sobre quando as alterações entram em vigor, consulte a documentação da IAM.
O que se segue
- Se tiver problemas ao aceder ou autenticar recursos do Pub/Sub, consulte a secção Resolução de problemas gerais.