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_idcredit_scoressn |
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_idcredit_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_idcredit_scoressn |
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_idcredit_scoressn |
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_idcustomers.credit_scorecustomers.ssn |
customers_dest.user_idcustomers_dest.credit_scorecustomers_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_idcustomers.credit_scorecustomers.ssn |
customers_dest.user_idcustomers_dest.credit_scorecustomers_dest.ssn |