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. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  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. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  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