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 as 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 funções do BigQuery a tabelas e visualizações individuais para controlar o acesso 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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Enable the 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.

    Acesse a página do Dataform

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

  3. No painel Files, abra 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 este 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 do BigQuery separados por vírgulas que você quer conceder.

    • RESOURCE_TYPE: TABLE ou VIEW.

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

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

  6. Opcional: clique em Formato.

  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 de tabela após a primeira execução.

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

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 as funções do BigQuery de uma tabela ou visualização adicionando um bloco post_operations com a declaração DCL REVOKE ao arquivo de definição .sqlx da tabela ou visualização selecionada.

Para revogar as funções do BigQuery de uma tabela ou visualização selecionada, siga estas etapas:

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

    Acesse a página do Dataform

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

  3. No painel Files, abra 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()}
        FROM "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.
    • RESOURCE_TYPE: TABLE ou VIEW.
    • USER_LIST: a lista separada por vírgulas de usuários com o papel revogado. Para conferir 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.

  7. Opcional: clique em Formato.

  8. Executar a tabela ou visualização.

  9. Se você tiver revogado 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 a função Visualizador do BigQuery revogada 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 GRANT e instruções REVOKE DCL.

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.

    Acesse a página do Dataform

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

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

  4. Selecione Criar arquivo.

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

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

  6. Selecione Criar arquivo.

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

  8. No arquivo, digite este 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 do BigQuery separados por vírgulas 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 a que o papel é concedido ou revogado. Para conferir uma lista de formatos válidos, consulte user_list.
  9. Inclua 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.

      A remoção da instrução GRANT sem adicionar a instrução REVOKE não revoga o acesso.

  10. Opcional: clique em Formato.

  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