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 |