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 |