Controlar o acesso a tabelas individuais com o IAM

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

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

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

Para mais informações sobre como conceder e revogar o acesso a recursos, consulte Conceda 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

Para conceder papéis do BigQuery a uma tabela ou visualização no Dataform adicionando um bloco post_operations com a instrução de 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 definitions/.

  4. Selecione o arquivo de definição de .sqlx da tabela ou visualização. aos quais 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 valores separados por vírgula os papéis do BigQuery que você quer conceder.

    • RESOURCE_TYPE: TABLE ou VIEW.

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

      Para 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 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

Para revogar papéis do BigQuery de uma tabela ou visualização, adicione um Bloco post_operations com a instrução de 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 definitions/.

  4. Selecione o arquivo de definição de .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 valores separados por vírgula os papéis do BigQuery que você quer revogar.
    • RESOURCE_TYPE: TABLE ou VIEW.
    • USER_LIST: a lista separada por vírgulas de usuários que o do usuário for 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 as Instrução GRANT com 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 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 GRANT e REVOKE instruções de 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.

    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 Add a file path, digite 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 valores separados por vírgula os papéis 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 que o 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 as Instrução GRANT com 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 o GRANT ou REVOKE do arquivo após a primeira execução da instrução.

A seguir