Impacto em gravações do controle de acesso no nível da coluna
Nesta página, explicamos o impacto das gravações ao usar o controle de acesso no nível da coluna do BigQuery para restringir o acesso aos dados no nível da coluna. Para informações gerais sobre o controle de acesso no nível da coluna, consulte Introdução ao controle de acesso no nível da coluna do BigQuery.
O controle de acesso no nível da coluna exige que um usuário tenha permissão de leitura para colunas protegidas por tags de política. Algumas operações de gravação precisam ler os dados da coluna antes de gravar em uma coluna. Para essas operações, o BigQuery verifica a permissão de leitura do usuário para garantir que ele tenha acesso à coluna. Por exemplo, se um usuário atualizar dados que incluam a gravação em uma coluna protegida, o usuário precisará ter permissão de leitura na coluna protegida. Se o usuário estiver inserindo uma nova linha de dados que inclui a gravação em uma coluna protegida, ele não precisará de acesso de leitura para a coluna protegida. No entanto, o usuário que grava tal linha não poderá ler os dados gravados recentemente, a menos que tenha permissão de leitura para as colunas protegidas.
As seções a seguir fornecem detalhes sobre diferentes tipos de operações de
gravação. Os exemplos neste tópico usam tabelas customers
com o seguinte
esquema:
Nome do campo | Tipo | Modo | Tag de política |
---|---|---|---|
user_id |
STRING | OBRIGATÓRIO | policy-tag-1 |
credit_score |
INTEGER | NULLABLE | policy-tag-2 |
ssn |
STRING | NULLABLE | policy-tag-3 |
Como usar a linguagem de manipulação de dados (DML) do BigQuery
Como inserir dados
Para uma instrução INSERT
, o BigQuery não verifica a permissão do Leitor de
controle refinado nas tags de política nem nas colunas verificadas nem nas
atualizadas. Isso ocorre porque um INSERT
não requer a leitura de nenhum dos
dados da coluna. No entanto, mesmo se você inserir valores em colunas em que
não tem permissão de leitura, depois de inseridos, os valores serão protegidos conforme o esperado.
Como excluir, atualizar e mesclar dados
Para instruções DELETE
, UPDATE
e MERGE
, o BigQuery verifica
a permissão de leitor de controle refinado nas colunas verificadas. As colunas não são
verificadas por essas instruções, a menos que você inclua uma
cláusula WHERE
ou alguma outra cláusula ou subconsulta que exija a consulta para ler dados.
Carregando dados
Ao carregar dados (por exemplo, do Cloud Storage ou de arquivos locais) a uma tabela, o BigQuery não verifica a permissão do Leitor refinado nas colunas da tabela de destino. Isso ocorre porque o carregamento de dados não requer a leitura de conteúdo da tabela de destino.
O streaming no BigQuery é semelhante a LOAD
e INSERT
.
O BigQuery permite que você transmita dados para uma coluna da tabela
de destino, mesmo que você não tenha a permissão do Leitor em granularidade fina.
Como copiar dados
Para uma operação de cópia, o BigQuery verifica se o usuário tem
a permissão do Leitor refinado na tabela de origem. O BigQuery
não verifica se o usuário tem permissão de Leitor de controle refinado em
colunas na tabela de destino. Como LOAD
, INSERT
e streaming,
após a conclusão da cópia, não será possível ler os dados que foram
gravados, a menos que você tenha a permissão de Leitor controle refinado às colunas da tabela
de destino.
Exemplos de DML
INSERT
Exemplo:
INSERT INTO customers VALUES('alice', 85, '123-456-7890');
Colunas de origem | Atualizar colunas | |
---|---|---|
Tags de política verificadas para leitor de controle refinado? | N/A | Não |
Colunas verificadas | N/A | user_id credit_score ssn |
UPDATE
Exemplo:
UPDATE customers SET credit_score = 0
WHERE user_id LIKE 'alice%' AND credit_score < 30
Colunas de origem | Atualizar colunas | |
---|---|---|
Tags de política verificadas para leitor de controle refinado? | Sim | Não |
Colunas verificadas | user_id credit_score |
credit_score |
DELETE
Exemplo:
DELETE customers WHERE credit_score = 0
Colunas de origem | Atualizar colunas | |
---|---|---|
Tags de política verificadas para leitor de controle refinado? | Sim | Não |
Colunas verificadas | credit_score |
user_id credit_score ssn |
Carregar exemplos
Como fazer um carregamento a partir de um arquivo local ou do Cloud Storage
Exemplo:
load --source_format=CSV samples.customers \
./customers_data.csv \
./customers_schema.json
Colunas de origem | Atualizar colunas | |
---|---|---|
Tags de política verificadas para leitor de controle refinado? | N/A | Não |
Colunas verificadas | N/A | user_id credit_score ssn |
Streaming
Nenhuma tag de política é verificada durante o streaming com a API de streaming legada insertAll
ou a
API Storage Write. Para a captura de dados alterados no BigQuery, as tags de política são verificadas nas colunas de chave primária.
Copiar exemplos
Como anexar dados a uma tabela atual
Exemplo:
cp -a samples.customers samples.customers_dest
Colunas de origem | Atualizar colunas | |
---|---|---|
Tags de política verificadas para leitor de controle refinado? | Sim | Não |
Colunas verificadas | customers.user_id customers.credit_score customers.ssn |
customers_dest.user_id customers_dest.credit_score customers_dest.ssn |
Como salvar resultados de consulta em uma tabela de destino
Exemplo:
query --use_legacy_sql=false \
--max_rows=0 \
--destination_table samples.customers_dest \
--append_table "SELECT * FROM samples.customers LIMIT 10;"
Colunas de origem | Atualizar colunas | |
---|---|---|
Tags de política verificadas para leitor de controle refinado? | Sim | Não |
Colunas verificadas | customers.user_id customers.credit_score customers.ssn |
customers_dest.user_id customers_dest.credit_score customers_dest.ssn |