Impacto nas gravações do controlo de acesso ao nível da coluna
Esta página explica o impacto nas gravações quando usa o controlo de acesso ao nível da coluna do BigQuery para restringir o acesso aos dados ao nível da coluna. Para obter informações gerais sobre o controlo de acesso ao nível da coluna, consulte o artigo Introdução ao controlo de acesso ao nível da coluna do BigQuery.
O controlo de acesso ao nível da coluna requer que um utilizador tenha autorização de leitura para colunas protegidas por etiquetas de política. Algumas operações de escrita têm de ler os dados das colunas antes de escreverem efetivamente numa coluna. Para essas operações, o BigQuery verifica a autorização de leitura do utilizador para garantir que o utilizador tem acesso à coluna. Por exemplo, se um utilizador estiver a atualizar dados que incluam a escrita numa coluna protegida, o utilizador tem de ter autorização de leitura para a coluna protegida. Se o utilizador estiver a inserir uma nova linha de dados que inclua a escrita numa coluna protegida, não precisa de acesso de leitura à coluna protegida. No entanto, o utilizador que escreve essa linha não consegue ler os dados escritos recentemente, a menos que tenha autorização de leitura para as colunas protegidas.
As secções seguintes fornecem detalhes sobre diferentes tipos de operações de escrita. Os exemplos neste tópico usam tabelas customers
com o seguinte esquema:
Nome do campo | Tipo | Modo | Etiqueta de política |
---|---|---|---|
user_id |
STRING | OBRIGATÓRIO | policy-tag-1 |
credit_score |
INTEGER | NULLABLE | policy-tag-2 |
ssn |
STRING | NULLABLE | policy-tag-3 |
Usar a linguagem de manipulação de dados (DML) do BigQuery
Inserir dados
Para uma declaração INSERT
, o BigQuery não verifica a autorização de leitor detalhada nas etiquetas de políticas nas colunas analisadas nem nas colunas atualizadas. Isto deve-se ao facto de um INSERT
não exigir a leitura de nenhum dos dados das colunas. No entanto, mesmo que insira valores com êxito em colunas para as quais não tem autorização de leitura, uma vez inseridos, os valores são protegidos conforme esperado.
Eliminar, atualizar e unir dados
Para as declarações DELETE
, UPDATE
e MERGE
, o BigQuery verifica se existe a autorização de leitor detalhada nas colunas analisadas. As colunas não são analisadas por estas declarações, a menos que inclua uma cláusula WHERE
ou alguma outra cláusula ou subconsulta que exija que a consulta leia dados.
Carregar dados
Quando carrega dados (por exemplo, a partir do Cloud Storage ou de ficheiros locais) para uma tabela, o BigQuery não verifica a autorização de leitor detalhada nas colunas da tabela de destino. Isto acontece porque o carregamento de dados não requer a leitura de conteúdo da tabela de destino.
O streaming para o BigQuery é semelhante ao LOAD
e ao INSERT
.
O BigQuery permite-lhe transmitir dados para uma coluna de tabela de destino, mesmo que não tenha a autorização de leitor detalhada.
Copiar dados
Para uma operação de cópia, o BigQuery verifica se o utilizador tem a autorização de leitor detalhada na tabela de origem. O BigQuery não verifica se o utilizador tem a autorização de leitor detalhada para as colunas na tabela de destino. Tal como acontece com LOAD
, INSERT
e o streaming, depois de a cópia estar concluída, não pode ler os dados que acabaram de ser escritos, a menos que tenha a autorização de leitor detalhada para as colunas da tabela de destino.
Exemplos de DML
INSERT
Exemplo:
INSERT INTO customers VALUES('alice', 85, '123-456-7890');
Colunas de origem | Atualize colunas | |
---|---|---|
Etiquetas de políticas verificadas para o Fine-Grained Reader? | N/A | Não |
Colunas selecionadas | 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 | Atualize colunas | |
---|---|---|
Etiquetas de políticas verificadas para o Fine-Grained Reader? | Sim | Não |
Colunas selecionadas | user_id credit_score |
credit_score |
DELETE
Exemplo:
DELETE customers WHERE credit_score = 0
Colunas de origem | Atualize colunas | |
---|---|---|
Etiquetas de políticas verificadas para o Fine-Grained Reader? | Sim | Não |
Colunas selecionadas | credit_score |
user_id credit_score ssn |
Carregar exemplos
Carregar a partir de um ficheiro local ou do Cloud Storage
Exemplo:
load --source_format=CSV samples.customers \
./customers_data.csv \
./customers_schema.json
Colunas de origem | Atualize colunas | |
---|---|---|
Etiquetas de políticas verificadas para o Fine-Grained Reader? | N/A | Não |
Colunas selecionadas | N/A | user_id credit_score ssn |
Streaming
Não são verificadas etiquetas de políticas quando a transmissão é feita com a API Legacy Streaming insertAll
ou a API Storage Write. Para a captura de dados de alterações do BigQuery, as etiquetas de políticas são verificadas nas colunas de chave primária.
Copiar exemplos
Anexar dados a uma tabela existente
Exemplo:
cp -a samples.customers samples.customers_dest
Colunas de origem | Atualize colunas | |
---|---|---|
Etiquetas de políticas verificadas para o Fine-Grained Reader? | Sim | Não |
Colunas selecionadas | customers.user_id customers.credit_score customers.ssn |
customers_dest.user_id customers_dest.credit_score customers_dest.ssn |
Guardar resultados de consultas numa 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 | Atualize colunas | |
---|---|---|
Etiquetas de políticas verificadas para o Fine-Grained Reader? | Sim | Não |
Colunas selecionadas | customers.user_id customers.credit_score customers.ssn |
customers_dest.user_id customers_dest.credit_score customers_dest.ssn |