Controlar o acesso a tabelas individuais com o IAM

Neste documento, mostramos como conceder e revogar papéis do Identity and Access Management (IAM) do BigQuery para tabelas e visualizações individuais do Dataform.

O Dataform e o BigQuery usam o IAM para controle de acesso. Para mais informações sobre papéis e permissões do Dataform no IAM, consulte Controlar o acesso com o IAM.

Quando o Dataform executa uma tabela ou visualização, ele cria o recurso no BigQuery. Durante o desenvolvimento no Dataform, é possível conceder papéis do BigQuery a tabelas e visualizações individuais para controlar o acesso deles no BigQuery após a execução.

Para mais informações sobre como conceder e revogar o acesso a recursos, consulte Conceder acesso a um recurso.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative as APIs BigQuery and Dataform.

    Ative as APIs

  5. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  6. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  7. Ative as APIs BigQuery and Dataform.

    Ative as APIs

Conceder papéis do BigQuery a uma tabela ou visualização

É possível conceder papéis do BigQuery a uma tabela ou visualização no Dataform adicionando um bloco post_operations com a instrução DCL GRANT ao arquivo de definição .sqlx da tabela ou visualização selecionada.

Para conceder papéis do BigQuery a uma tabela ou visualização selecionada, siga estas etapas:

  1. No console do Google Cloud, acesse a página Dataform.

    Acessar a página do Dataform

  2. Selecione um repositório e, em seguida, um espaço de trabalho.

  3. No painel Files, expanda o diretório definitions/.

  4. Selecione o arquivo de definição .sqlx da tabela ou visualização a que você quer conceder acesso.

  5. No arquivo, digite o seguinte snippet de código:

    post_operations {
        GRANT "ROLE_LIST"
        ON ${self()}
        TO "USER_LIST"
    }
    

    Substitua:

    • ROLE_LIST: o papel do BigQuery ou a lista de papéis separados por vírgulas que você quer conceder
    • USER_LIST: a lista separada por vírgulas de usuários a que o papel é concedido.

      Para uma lista de formatos válidos, consulte user_list.

  6. Opcional: clique em Formatar.

  7. Executar a tabela ou visualização.

  8. Se você concedeu acesso a uma tabela incremental, remova a instrução GRANT do arquivo de definição da tabela após a primeira execução.

No exemplo de código a seguir, mostramos o papel de Leitor do BigQuery concedido em uma tabela a um usuário:

config { type: "table" }

SELECT ...

post_operations {
  GRANT `roles/bigquery.dataViewer` ON ${self()} TO "user:222larabrown@gmail.com"
}

Revogar papéis do BigQuery de uma tabela ou visualização

É possível revogar os papéis do BigQuery em uma tabela ou visualização adicionando um bloco post_operations com a instrução DCL REVOKE ao arquivo de definição .sqlx da tabela ou visualização selecionada.

Para revogar os papéis do BigQuery de uma tabela ou visualização selecionada, siga estas etapas:

  1. No console do Google Cloud, acesse a página Dataform.

    Acessar a página do Dataform

  2. Selecione um repositório e, em seguida, um espaço de trabalho.

  3. No painel Files, expanda o diretório definitions/.

  4. Selecione o arquivo de definição .sqlx da tabela ou visualização em que você quer revogar o acesso.

  5. No bloco post_operations, insira a seguinte instrução REVOKE:

        REVOKE "ROLE_LIST"
        ON ${self()}
        TO "USER_LIST"
    

    Substitua:

    • ROLE_LIST: o papel do BigQuery ou a lista de papéis do BigQuery separados por vírgulas que você quer revogar.
    • USER_LIST: a lista separada por vírgulas de usuários de que o papel é revogado. Para uma lista de formatos válidos, consulte user_list.
  6. Para revogar o acesso concedido em uma instrução GRANT no arquivo, substitua a instrução GRANT por uma instrução REVOKE.

    Removing the `GRANT` statement without adding the `REVOKE` statement
    does not revoke access.
    
  7. Opcional: clique em Formatar.

  8. Executar a tabela ou visualização.

  9. Se você revogou o acesso a uma tabela incremental, remova a instrução REVOKE do arquivo de definição da tabela após a primeira execução.

O exemplo de código a seguir mostra o papel de Leitor do BigQuery revogado de um usuário em uma tabela:

config { type: "table" }

SELECT ...

post_operations {
  REVOKE `roles/bigquery.dataViewer` ON ${self()} FROM "user:222larabrown@gmail.com"
}

Gerencie coletivamente papéis do BigQuery para tabelas e visualizações

Para controlar o acesso do BigQuery a tabelas e visualizações individuais em um único local, crie um arquivo type: "operations" dedicado com instruções DCL GRANT e REVOKE.

Para gerenciar o acesso à tabela do BigQuery em um único arquivo type: "operations", siga estas etapas:

  1. No console do Google Cloud, acesse a página Dataform.

    Acessar a página do Dataform

  2. Selecione um repositório e, em seguida, um espaço de trabalho.

  3. No painel Files, ao lado de definitions/, clique no menu More.

  4. Clique em Criar arquivo.

  5. No campo Add a file path, insira o nome do arquivo seguido de .sqlx após definitions/. Por exemplo, definitions/table-access.sqlx.

    Os nomes de arquivos só podem incluir números, letras, hifens e sublinhados.

  6. Clique em Criar arquivo.

  7. No painel Files, expanda o diretório definitions/ e selecione o arquivo recém-criado.

  8. No arquivo, digite o seguinte snippet de código:

      config { type: "operations" }
    
      GRANT "ROLE_LIST" ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
    
      REVOKE "ROLE_LIST" ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
    

    Substitua:

    • ROLE_LIST: o papel do BigQuery ou a lista de papéis separados por vírgulas que você quer conceder ou revogar.
    • RESOURCE_TYPE: o tipo do recurso: TABLE ou VIEW.
    • RESOURCE_NAME: o nome da tabela ou visualização.
    • USER_LIST: a lista separada por vírgulas de usuários para os quais o papel é concedido ou revogado. Para uma lista de formatos válidos, consulte user_list.
  9. Adicione instruções GRANT e REVOKE conforme necessário.

    1. Para revogar o acesso concedido em uma instrução GRANT no arquivo, substitua a instrução GRANT por uma instrução REVOKE.

      Remover a instrução GRANT sem adicionar a instrução REVOKE não revoga o acesso.

  10. Opcional: clique em Formatar.

  11. Execute o arquivo após cada atualização.

    1. Se você concedeu ou revogou o acesso em uma tabela incremental, remova a instrução GRANT ou REVOKE do arquivo após a primeira execução da instrução.

A seguir