Dampak pada penulisan dari kontrol akses tingkat kolom

Halaman ini menjelaskan dampak terhadap penulisan saat Anda menggunakan kontrol akses tingkat kolom BigQuery untuk membatasi akses ke data di tingkat kolom. Untuk mengetahui informasi umum tentang kontrol akses tingkat kolom, baca Pengantar kontrol akses tingkat kolom BigQuery.

Kontrol akses tingkat kolom mengharuskan pengguna memiliki izin baca untuk kolom yang dilindungi oleh tag kebijakan. Beberapa operasi tulis perlu membaca data kolom sebelum benar-benar menulis ke dalam kolom. Untuk operasi tersebut, BigQuery akan memeriksa izin baca pengguna untuk memastikan pengguna memiliki akses ke kolom tersebut. Misalnya, jika pengguna memperbarui data yang menyertakan penulisan ke kolom yang dilindungi, pengguna harus memiliki izin baca untuk kolom yang dilindungi tersebut. Jika pengguna menyisipkan baris data baru yang menyertakan penulisan ke kolom yang dilindungi, pengguna tidak memerlukan akses baca untuk kolom yang dilindungi. Namun, pengguna yang menulis baris tersebut tidak akan dapat membaca data yang baru ditulis, kecuali jika pengguna memiliki izin baca untuk kolom yang dilindungi.

Bagian berikut ini menjelaskan berbagai jenis operasi tulis. Contoh dalam topik ini menggunakan tabel customers dengan skema berikut:

Nama kolom Jenis Mode Tag kebijakan
user_id STRING REQUIRED policy-tag-1
credit_score INTEGER NULLABLE policy-tag-2
ssn STRING NULLABLE policy-tag-3

Menggunakan bahasa pengolahan data (DML) BigQuery

Menyisipkan data

Untuk pernyataan INSERT, BigQuery tidak memeriksa izin Fine-Grained Reader pada tag kebijakan pada kolom yang dipindai atau kolom yang diperbarui. Hal ini karena INSERT tidak memerlukan pembacaan data kolom apa pun. Namun, meskipun Anda berhasil memasukkan nilai ke dalam kolom yang tidak memiliki izin baca, setelah dimasukkan, nilai tersebut akan dilindungi seperti yang diharapkan.

Menghapus, memperbarui, dan menggabungkan data

Untuk pernyataan DELETE, UPDATE, dan MERGE, BigQuery memeriksa izin Fine-Grained Reader pada kolom yang dipindai. Kolom tidak dipindai oleh pernyataan ini, kecuali jika Anda menyertakan klausa WHERE, atau beberapa klausa atau subkueri lain yang mengharuskan kueri untuk membaca data.

Memuat data

Saat memuat data (misalnya, dari Cloud Storage atau file lokal) ke tabel, BigQuery tidak memeriksa izin Fine-Grained Reader pada kolom tabel tujuan. Hal ini karena pemuatan data tidak memerlukan pembacaan konten dari tabel tujuan.

Streaming ke BigQuery mirip dengan LOAD dan INSERT. BigQuery memungkinkan Anda mengalirkan data ke kolom tabel tujuan, meskipun jika Anda tidak memiliki izin Fine-Grained Reader.

Menyalin data

Untuk operasi penyalinan, BigQuery akan memeriksa apakah pengguna memiliki izin Fine-Grained Reader pada tabel sumber. BigQuery tidak memeriksa apakah pengguna memiliki izin Fine-Grained Readers ke kolom dalam tabel tujuan. Seperti LOAD, INSERT, dan streaming, setelah penyalinan selesai, Anda tidak akan dapat membaca data yang baru saja ditulis, kecuali jika Anda memiliki izin Fine-Grained Reader ke kolom tabel tujuan.

Contoh DML

INSERT

Contoh:

INSERT INTO customers VALUES('alice', 85, '123-456-7890');
Kolom sumber Memperbarui kolom
Apakah tag kebijakan diperiksa untuk Fine-Grained Reader? T/A Tidak
Kolom dicentang T/A user_id
credit_score
ssn

UPDATE

Contoh:

UPDATE customers SET credit_score = 0
  WHERE user_id LIKE 'alice%' AND credit_score < 30
Kolom sumber Memperbarui kolom
Apakah tag kebijakan diperiksa untuk Fine-Grained Reader? Ya Tidak
Kolom dicentang user_id
credit_score
credit_score

DELETE

Contoh:

DELETE customers WHERE credit_score = 0
Kolom sumber Memperbarui kolom
Apakah tag kebijakan diperiksa untuk Fine-Grained Reader? Ya Tidak
Kolom dicentang credit_score user_id
credit_score
ssn

Contoh pemuatan

Memuat dari file lokal atau Cloud Storage

Contoh:

load --source_format=CSV samples.customers \
  ./customers_data.csv \
  ./customers_schema.json
Kolom sumber Memperbarui kolom
Apakah tag kebijakan diperiksa untuk Fine-Grained Reader? T/A Tidak
Kolom dicentang T/A user_id
credit_score
ssn

Streaming

Tidak ada tag kebijakan yang diperiksa saat melakukan streaming dengan streaming API insertAll lama atau Storage Write API. Untuk pengambilan data perubahan BigQuery, tag kebijakan diperiksa di kolom kunci utama.

Contoh penyalinan

Menambahkan data ke tabel yang ada

Contoh:

cp -a samples.customers samples.customers_dest
Kolom sumber Memperbarui kolom
Apakah tag kebijakan diperiksa untuk Fine-Grained Reader? Ya Tidak
Kolom dicentang customers.user_id
customers.credit_score
customers.ssn
customers_dest.user_id
customers_dest.credit_score
customers_dest.ssn

Menyimpan hasil kueri ke tabel tujuan

Contoh:

query --use_legacy_sql=false \
--max_rows=0 \
--destination_table samples.customers_dest \
--append_table "SELECT * FROM samples.customers LIMIT 10;"
Kolom sumber Memperbarui kolom
Apakah tag kebijakan diperiksa untuk Fine-Grained Reader? Ya Tidak
Kolom dicentang customers.user_id
customers.credit_score
customers.ssn
customers_dest.user_id
customers_dest.credit_score
customers_dest.ssn