Auswirkungen der Zugriffssteuerung auf Spaltenebene

Auf dieser Seite werden die Auswirkungen auf Schreibvorgänge erläutert, wenn Sie mithilfe der BigQuery-Zugriffssteuerung auf Spaltenebene den Zugriff auf Daten auf Spaltenebene einschränken. Unter Einführung in die BigQuery-Zugriffssteuerung auf Spaltenebene finden Sie allgemeine Informationen dazu.

Für die Zugriffssteuerung auf Spaltenebene benötigen Nutzer eine Leseberechtigung für Spalten, die durch Richtlinien-Tags geschützt sind. Einige Schreibvorgänge müssen Spaltendaten lesen, bevor in eine Spalte geschrieben wird. Für diese Vorgänge prüft BigQuery die Leseberechtigung des Nutzers, um zu gewährleisten, dass der Nutzer Zugriff auf die Spalte hat. Wenn ein Nutzer beispielsweise Daten aktualisiert und dieser Vorgang das Schreiben in eine geschützte Spalte umfasst, muss der Nutzer eine Leseberechtigung für die geschützte Spalte haben. Wenn der Nutzer eine neue Datenzeile einfügt und dieser Vorgang das Schreiben in eine geschützte Spalte umfasst, benötigt der Nutzer keinen Lesezugriff auf die geschützte Spalte. Allerdings können Nutzer, die solche Zeilen schreiben, die neu geschriebenen Daten nur lesen, wenn sie eine Leseberechtigung für die geschützten Spalten haben.

Die folgenden Abschnitte enthalten Details zu verschiedenen Schreibvorgangstypen. In den Beispielen dieses Themas werden customers-Tabellen mit folgendem Schema verwendet:

Feldname Typ Modus Richtlinien-Tag
user_id STRING ERFORDERLICH policy-tag-1
credit_score INTEGER NULLABLE policy-tag-2
ssn STRING NULLABLE policy-tag-3

BigQuery-Datenbearbeitungssprache (DML) verwenden

Daten einfügen

Bei einer INSERT-Anweisung prüft BigQuery die Berechtigung "Detaillierter Lesezugriff" der Richtlinien-Tags weder für die gescannten noch für die aktualisierten Spalten. Das liegt daran, dass bei einem INSERT-Vorgang keine Spaltendaten gelesen werden müssen. Selbst wenn Sie erfolgreich Werte in Spalten einfügen, für die Sie keine Leseberechtigung haben, werden die Werte nach dem Einfügen wie erwartet geschützt.

Daten löschen, aktualisieren und zusammenführen

Bei den Anweisungen DELETE, UPDATE und MERGE prüft BigQuery, ob die Berechtigung "Detaillierter Lesezugriff" für die gescannten Spalten vorhanden ist. Spalten werden von diesen Anweisungen nur gescannt, wenn Sie eine WHERE-Klausel oder eine andere Klausel oder Unterabfrage einfügen, für die die Abfrage zum Lesen von Daten erforderlich ist.

Daten laden

Beim Laden von Daten (z. B. aus Cloud Storage oder lokalen Dateien) in eine Tabelle prüft BigQuery die Berechtigung "Detaillierter Lesezugriff" für die Spalten der Zieltabelle nicht. Der Grund dafür ist, dass beim Laden von Daten das Lesen von Inhalten aus der Zieltabelle nicht erforderlich ist.

Das Streaming in BigQuery ähnelt LOAD und INSERT. Mit BigQuery können Sie Daten in eine Zieltabellenspalte streamen, auch wenn Sie die Berechtigung "Detaillierter Lesezugriff" nicht haben.

Daten kopieren

Bei einem Kopiervorgang prüft BigQuery, ob der Nutzer die Berechtigung "Detaillierter Lesezugriff" für die Quelltabelle hat. BigQuery prüft nicht, ob der Nutzer die Berechtigung "Detaillierter Lesezugriff" für die Spalten in der Zieltabelle hat. Wie bei LOAD, INSERT und Streaming können Sie nach Abschluss der Kopie nicht die Daten lesen, die gerade geschrieben wurden, es sei denn, Sie verfügen über die Berechtigung "Detaillierter Lesezugriff" für die Spalten der Zieltabelle.

DML-Beispiele

INSERT

Beispiel:

INSERT INTO customers VALUES('alice', 85, '123-456-7890');
Quellspalten Spalten aktualisieren
Prüfung von Richtlinien-Tags auf detaillierten Lesezugriff? Nein
Geprüfte Spalten user_id
credit_score
ssn

UPDATE

Beispiel:

UPDATE customers SET credit_score = 0
  WHERE user_id LIKE 'alice%' AND credit_score < 30
Quellspalten Spalten aktualisieren
Prüfung von Richtlinien-Tags auf detaillierten Lesezugriff? Ja Nein
Geprüfte Spalten user_id
credit_score
credit_score

DELETE

Beispiel:

DELETE customers WHERE credit_score = 0
Quellspalten Spalten aktualisieren
Prüfung von Richtlinien-Tags auf detaillierten Lesezugriff? Ja Nein
Geprüfte Spalten credit_score user_id
credit_score
ssn

Beispiele für Ladevorgänge

Aus einer lokalen Datei oder Cloud Storage laden

Beispiel:

load --source_format=CSV samples.customers \
  ./customers_data.csv \
  ./customers_schema.json
Quellspalten Spalten aktualisieren
Prüfung von Richtlinien-Tags auf detaillierten Lesezugriff? Nein
Geprüfte Spalten user_id
credit_score
ssn

Streaming

Beim Streaming mit der Legacy-insertAll-Streaming-API oder der Storage Write API werden keine Richtlinien-Tags geprüft. Bei Change Data Capture werden die Richtlinien-Tags in den Primärschlüsselspalten geprüft.

Beispiele für Kopiervorgänge

Daten an eine vorhandene Tabelle anhängen

Beispiel:

cp -a samples.customers samples.customers_dest
Quellspalten Spalten aktualisieren
Prüfung von Richtlinien-Tags auf detaillierten Lesezugriff? Ja Nein
Geprüfte Spalten customers.user_id
customers.credit_score
customers.ssn
customers_dest.user_id
customers_dest.credit_score
customers_dest.ssn

Abfrageergebnisse in einer Zieltabelle speichern

Beispiel:

query --use_legacy_sql=false \
--max_rows=0 \
--destination_table samples.customers_dest \
--append_table "SELECT * FROM samples.customers LIMIT 10;"
Quellspalten Spalten aktualisieren
Prüfung von Richtlinien-Tags auf detaillierten Lesezugriff? Ja Nein
Geprüfte Spalten customers.user_id
customers.credit_score
customers.ssn
customers_dest.user_id
customers_dest.credit_score
customers_dest.ssn