Configurando a impersonificação de usuários

Neste modelo de impersonificação, uma Service Account é configurada para agir em nome de usuários finais do domínio.

1. Criação de Service Account com Impersonificação

1.1. Criação da Service Account

  1. No Google Cloud Console, acesse a seção IAM & Admin > Service Accounts.

  2. Crie uma nova SA dedicada para execução das queries.

  3. Anote o e-mail da SA criada (ex.: [email protected]).

  4. No cadastro da SA, expanda a seção Configurações Avançadas e copie o Cliend ID que será exibido dentro do Domain-wide Delegation. Esta infomação será usada no passo seguinte.


1.2. Ativação do Domain-Wide Delegation

Para permitir que a Service Account atue em nome dos usuários finais:

  1. Acesse o Google Workspace Admin Console. Você pode realizar o acesso clicando na opção View Google Workspace Admin Console do passo anterior.

  2. No menu lateral vá em Segurança > Controle de Dadoes e Acesso > Controles de API.

  3. Na seção Domain wide delegation clique em Gerenciar delegação de todo o domínio.

  4. Adicione um novo cliente OAuth:

    • ID do cliente: Cole o Client ID da SA do passo 1.4.

    • Escopos de API: Inclua os escopos necessários:

  5. Clique em Authorize para salvar as alterações.

Com isso, a Service Account pode ser usada para personificar usuários do domínio e garantir que as permissões sejam aplicadas de acordo com os e-mails cadastrados na tabela de segurança.


1.3. Concessão de Permissões à SA no Projeto Alvo

Garanta que a SA possua os papéis mínimos necessários no BigQuery:

  • Nível IAM:

    • bigquery.jobs.create

    • bigquery.readsessions.create

    • bigquery.readsessions.getData

  • Nível do Dataset (Leitura):

    • bigquery.datasets.get

    • bigquery.jobs.create

    • bigquery.tables.get

    • bigquery.tables.getData

    • bigquery.tables.list


2. Cadastro de Usuários no Projeto Alvo

2.1. Cadastro dos Usuários no Workspace

Garanta que todos os usuários que terão acesso aos dados estejam devidamente cadastrados no Workspace onde a SA com Domain Wide foi cadastradas.

Garanta também que o e-mail de cadastro dos usuários é o mesmo que será usado na tapa 3.

2.2. Permissões de Usuários no BigQuery

Mesmo utilizando impersonificação e tabela de segurança, é necessário que os usuários finais possuam permissões de acesso ao BigQuery dentro do projeto.

Cada usuário deve ter, no mínimo:

  • roles/bigquery.user – permite executar queries.

  • bigquery.jobs.create

  • bigquery.readsessions.create

  • bigquery.readsessions.getData

  • Permissões herdadas de dataset/tabelas, caso a organização aplique controles adicionais de IAM em nível de recurso.

circle-exclamation

2.3. Cadastro da Tabela de Permissões

circle-exclamation
circle-check
circle-exclamation

Crie uma tabela dedicada para armazenar permissões por usuário.

A coluna principal (usuário) precisa conter os mesmos emails que estão cadastrados para os usuários do workspace.

Exemplo de schema:

usuario
loja_id
regional_id
categoria_id

Essa tabela será utilizada nas subqueries dentro das RAPs para verificar permissões de acesso.


2.4. Criação das Row Access Policies

Com base na tabela de segurança, criamos as RAPs utilizando subqueries.

Exemplo de RAP em tabela_vendas:

Esse padrão pode ser replicado para cada campo que precisa de filtro: loja_id, regional_id, categoria_id, etc.

Ao configurar os GRANTS, podemos informar os seguintes valores:

  • user:{email do usuário do GCP}

  • group:{grupo de email do GCP}

  • domain:{Domínio do GCP}

  • serviceAccount:{email da service account}

  • allAuthenticathedUsers

Para exemplos de como como configurar as grants, acesse a documentação oficial do GCarrow-up-rightP


3. Exemplos de Testes

Após configurar as RAPs e a tabela de segurança, é possível realizar testes de personificação para validar os acessos.

Para os testes, podemos utilizar o seguinte snippet de código em Python, variando apenas o valor passado na linha 11

Teste 1 – Usuário com acesso limitado a loja

Consulta:

✅ Retorna apenas registros da loja 101.


Teste 2 – Usuário com acesso a regional

Consulta:

✅ Retorna apenas registros da regional 55.


Teste 3 – Usuário sem acesso

Consulta:

❌ Retorna zero resultados, pois o usuário não consta na tabela de permissões.


Teste 4 – Usuário com acesso total (full access)

Consulta:

✅ Retorna todos os registros, respeitando a RAP de full access.

Last updated

Was this helpful?