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.
O IAM permite que você conceda papéis específicos a usuários, grupos e contas de serviço, dando a eles as permissões necessárias para realizar as tarefas. É possível conceder esses papéis do IAM usando o console do Google Cloud ou a API IAM.
No Pub/Sub, o controle de acesso pode ser configurado no nível 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 leitura a um único recurso, como um tópico ou uma assinatura, não será possível acessar o recurso usando o console do Google Cloud. Em vez disso, use a CLI do Google Cloud para conferir 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 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 dão acesso granular a recursos Google Cloud específicos. Para mais informações sobre papéis predefinidos, consulte Papéis predefinidos. Os papéis predefinidos do Pub/Sub são incluídos em uma parte posterior desta seção.
Papéis personalizados: ajudam a aplicar o princípio do menor privilégio. Para mais informações sobre papéis personalizados, consulte Papéis personalizados.
Permissões necessá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. 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.topics.create
|
Cria o tópico especificado com o nome fornecido. | 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
|
Busca 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 tópicos. | pubsub.topics.list no projeto do Cloud solicitado |
projects.topics.patch
|
Atualiza um tópico. | 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 às assinaturas. 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.subscriptions.acknowledge
|
Confirma as mensagens associadas aos ack_ids na 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 seja
anexada a um Tópico T no Projeto B, as permissões apropriadas 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
|
Consegue os detalhes de configuração de uma assinatura. | pubsub.subscriptions.get
na assinatura solicitada |
projects.subscriptions.getIamPolicy
|
Busca 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 para 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 a um ponto no tempo ou a 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
|
Busca a política de controle de acesso do IAM para um esquema. | pubsub.schemas.getIamPolicy no esquema solicitado |
projects.schemas.list
|
Lista esquemas em um projeto. | pubsub.schemas.list no projeto do Cloud solicitado |
projects.schemas.listRevisions
|
Lista todas as revisões de esquema para o esquema nomeado. | pubsub.schemas.listRevisions
no esquema solicitado |
projects.schemas.rollback
|
Cria uma nova revisão de esquema a partir de 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. 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 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 existente. | pubsub.snapshots.delete
no snapshot solicitado |
projects.snapshots.getIamPolicy
|
Busca 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 Instant Snapshot. | 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 |
Papéis 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:
|
|
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 pelo console do Google Cloud
É possível usar o console do 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 do Google Cloud, abra a página IAM.
Selecione o projeto.
Clique em
Adicionar.Digite um ou mais nomes de titulares.
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 do Google Cloud, acesse a lista Tópicos do Pub/Sub.
Se necessário, selecione o projeto compatível com o Pub/Sub.
Realize uma das seguintes etapas:
Para definir funções para um ou mais temas, selecione os temas.
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 participante.Digite um ou mais nomes de titulares.
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 pelas bibliotecas de cliente, pelo 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:
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#.
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" } ] }
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.
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.
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.
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.
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.
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.
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:
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#.
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" ] } ] }
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.
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.
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.
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.
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.
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:
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#.
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
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.
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.
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.
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.
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:
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#.
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
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.
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.
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.
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.
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 das permissões
podem ser adicionadas ou removidas do recurso. Ele recebe
como parâmetros um nome de recurso e um conjunto de permissões e retorna o subconjunto
de permissões.
Veja um exemplo de código para testar as permissões de uma assinatura:
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 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" } ]
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.
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.
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.
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.
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.
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:
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 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" } ]
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.
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.
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.
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.
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.
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.
Suponha 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 segundo lugar, conceda a permissão Edit à conta de serviço 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 topictopic-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.