Impatto sulle scritture dal controllo dell'accesso a livello di colonna

Questa pagina spiega l'impatto sulle scritture quando utilizzi BigQuery controllo dell'accesso a livello di colonna per limitare l'accesso ai dati a livello di colonna. Per informazioni generali sul controllo dell'accesso a livello di colonna, consulta Introduzione alle Controllo dell'accesso a livello di colonna di BigQuery.

Il controllo dell'accesso a livello di colonna richiede che l'utente disponga dell'autorizzazione di lettura per le colonne sono protetti da tag di criteri. Alcune operazioni di scrittura devono leggere i dati delle colonne prima di scrivere in una colonna. Per queste operazioni, BigQuery controlla se l'utente dispone dell'autorizzazione di lettura per assicurarsi che abbia l'accesso alla colonna. Ad esempio, se un utente aggiorna dati che includono scrivere in una colonna protetta, l'utente deve disporre dell'autorizzazione di lettura per nella colonna protetta. Se l'utente inserisce una nuova riga di dati che include la scrittura a una colonna protetta, l'utente non ha bisogno dell'accesso in lettura colonna. Tuttavia, l'utente che scrive una riga di questo tipo non potrà leggere a meno che l'utente non disponga dell'autorizzazione di lettura per le colonne protette.

Le seguenti sezioni forniscono dettagli sui diversi tipi di scrittura operazioni. Gli esempi in questo argomento utilizzano le tabelle customers con quanto segue schema:

Nome campo Tipo Modalità Tag criterio
user_id STRINGA REQUIRED policy-tag-1
credit_score INTEGER NULLABLE policy-tag-2
ssn STRINGA NULLABLE policy-tag-3

Utilizzo del Data Manipulation Language (DML) di BigQuery

Inserimento dei dati

Per un'istruzione INSERT, BigQuery non controlla granulare Autorizzazione di lettura per i tag di criteri nelle colonne scansionate o nella colonne aggiornate. Questo perché INSERT non richiede la lettura di nessuno dei dati della colonna. Ma anche se inserisci correttamente i valori nelle colonne in cui non dispongono dell'autorizzazione di lettura, una volta inseriti, i valori sono protetti come previsto.

Eliminazione, aggiornamento e unione di dati

Per le istruzioni DELETE, UPDATE e MERGE, BigQuery controlla per l'autorizzazione Lettore granulare nelle colonne scansionate. Le colonne non sono scansionati da queste dichiarazioni, a meno che non includi clausola WHERE, o qualche altra clausola o sottoquery che richiede che la query legga i dati.

Caricamento di dati

Durante il caricamento dei dati (ad esempio da Cloud Storage o file locali) in un BigQuery, BigQuery non controlla il lettore granulare sulle colonne della tabella di destinazione. Questo perché il caricamento dei dati non richiede la lettura dei contenuti dalla tabella di destinazione.

I flussi di dati in BigQuery sono simili a quelli di LOAD e INSERT. BigQuery consente di inserire flussi di dati in una tabella di destinazione anche se non disponi dell'autorizzazione Lettore granulare.

Copia di dati

Per un'operazione di copia, BigQuery controlla se l'utente ha l'autorizzazione Lettore granulare per la tabella di origine. BigQuery non verifica se l'utente dispone dell'autorizzazione Lettore granulare per nella tabella di destinazione. Ad esempio, LOAD, INSERT e streaming, una volta completata la copia, non potrai leggere i dati scritto, a meno che tu non disponga dell'autorizzazione Lettore granulare per la destinazione. colonne della tabella.

Esempi di DML

INSERT

Esempio:

INSERT INTO customers VALUES('alice', 85, '123-456-7890');
Colonne di origine Aggiorna colonne
Tag di criteri verificati per il lettore granulare? N/D No
Colonne selezionate N/D user_id
credit_score
ssn

UPDATE

Esempio:

UPDATE customers SET credit_score = 0
  WHERE user_id LIKE 'alice%' AND credit_score < 30
Colonne di origine Aggiorna colonne
Tag di criteri verificati per il lettore granulare? No
Colonne selezionate user_id
credit_score
credit_score

DELETE

Esempio:

DELETE customers WHERE credit_score = 0
Colonne di origine Aggiorna colonne
Tag di criteri verificati per il lettore granulare? No
Colonne selezionate credit_score user_id
credit_score
ssn

Carica esempi

Caricamento da un file locale o da Cloud Storage

Esempio:

load --source_format=CSV samples.customers \
  ./customers_data.csv \
  ./customers_schema.json
Colonne di origine Aggiorna colonne
Tag di criteri verificati per il lettore granulare? N/D No
Colonne selezionate N/D user_id
credit_score
ssn

Streaming

Non viene controllato nessun tag di criterio durante lo streaming con l'API di streaming insertAll precedente o con l'API API StorageWrite. Per BigQuery Change Data Capture, i tag di criteri vengono controllati nelle colonne della chiave primaria.

Copia esempi

Aggiunta di dati a una tabella esistente

Esempio:

cp -a samples.customers samples.customers_dest
Colonne di origine Aggiorna colonne
Tag di criteri verificati per il lettore granulare? No
Colonne selezionate customers.user_id
customers.credit_score
customers.ssn
customers_dest.user_id
customers_dest.credit_score
customers_dest.ssn

Salvataggio dei risultati della query in una tabella di destinazione

Esempio:

query --use_legacy_sql=false \
--max_rows=0 \
--destination_table samples.customers_dest \
--append_table "SELECT * FROM samples.customers LIMIT 10;"
Colonne di origine Aggiorna colonne
Tag di criteri verificati per il lettore granulare? No
Colonne selezionate customers.user_id
customers.credit_score
customers.ssn
customers_dest.user_id
customers_dest.credit_score
customers_dest.ssn