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 os 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 Arquivos, expanda o diretório definitions/.

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

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

    post_operations {
        GRANT "ROLE_LIST"
        ON "RESOURCE_TYPE" ${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.

    • RESOURCE_TYPE: TABLE ou VIEW.

    • USER_LIST: a lista separada por vírgulas de usuários aos quais o papel é concedido.

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

  6. Opcional: clique em Formatar.

  7. Execute a tabela ou visualização.

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

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

config { type: "table" }

SELECT ...

post_operations {
  GRANT `roles/bigquery.dataViewer`
  ON TABLE ${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 de 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 Arquivos, 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 "RESOURCE_TYPE" ${self()}
        TO "USER_LIST"
    

    Substitua:

    • ROLE_LIST: o papel do BigQuery ou a lista de papéis separados por vírgulas que você quer revogar.
    • RESOURCE_TYPE: TABLE ou VIEW.
    • USER_LIST: a lista separada por vírgulas de usuários a partir do qual o papel é revogado. Para ver 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. Execute 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 de tabela após a primeira execução.

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

config { type: "table" }

SELECT ...

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

Gerenciar coletivamente os 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 Arquivos, ao lado de definitions/, clique no menu Mais .

  4. Clique em Criar arquivo.

  5. No campo Adicionar um caminho de arquivo, insira o nome do arquivo seguido de .sqlx após definitions/. Por exemplo, definitions/table-access.sqlx.

    Os nomes de arquivos podem incluir apenas 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 do BigQuery que você quer conceder ou revogar.
    • RESOURCE_TYPE: TABLE ou VIEW.
    • RESOURCE_NAME: o nome da tabela ou visualização.
    • USER_LIST: a lista separada por vírgulas de usuários aos quais o papel é concedido ou revogado. Para ver 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 a uma tabela incremental, remova a instrução GRANT ou REVOKE do arquivo após a primeira execução da instrução.

A seguir