Pengantar kontrol akses tingkat kolom
BigQuery menyediakan akses yang lebih terperinci ke kolom sensitif menggunakan tag kebijakan atau klasifikasi berbasis jenis data. Dengan kontrol akses level kolom BigQuery, Anda dapat membuat kebijakan yang memeriksa, pada waktu kueri, apakah pengguna memiliki akses yang tepat. Misalnya, kebijakan dapat menerapkan pemeriksaan akses seperti:
- Anda harus berada di
group:high-access
untuk melihat kolom yang berisiTYPE_SSN
.
Untuk meningkatkan kontrol akses tingkat kolom, Anda dapat secara opsional menggunakan penyamaran data dinamis. Penyamaran data memungkinkan Anda menyamarkan data sensitif dengan mengganti konten null, default, atau yang di-hash sebagai pengganti nilai aktual kolom.
Alur kerja kontrol akses tingkat kolom
Untuk membatasi akses data di tingkat kolom:
Menentukan tag taksonomi dan kebijakan. Buat dan kelola taksonomi serta tag kebijakan untuk data Anda. Untuk mengetahui panduan, baca Praktik terbaik untuk tag kebijakan.
Tetapkan tag kebijakan ke kolom BigQuery. Di BigQuery, gunakan anotasi skema untuk menetapkan tag kebijakan ke setiap kolom yang aksesnya ingin Anda batasi.
Menerapkan kontrol akses pada taksonomi. Menerapkan kontrol akses akan menyebabkan pembatasan akses yang ditentukan untuk semua tag kebijakan dalam taksonomi yang diterapkan.
Mengelola akses pada tag kebijakan. Gunakan kebijakan Identity and Access Management (IAM) untuk membatasi akses ke setiap tag kebijakan. Kebijakan ini berlaku untuk setiap kolom yang termasuk dalam tag kebijakan.
Saat pengguna mencoba mengakses data kolom pada waktu kueri, BigQuery akan memeriksa tag kebijakan kolom dan kebijakannya untuk melihat apakah pengguna diizinkan untuk mengakses data.
Mengidentifikasi hal yang perlu diberi tag
Untuk menentukan jenis data sensitif yang Anda miliki dan kolom mana yang memerlukan tag kebijakan, pertimbangkan untuk membuat profil tentang data Anda di seluruh organisasi, folder, atau project menggunakan Perlindungan Data Sensitif. Profil data berisi metrik dan metadata tentang tabel Anda serta membantu menentukan lokasi data sensitif dan berisiko tinggi. Perlindungan Data Sensitif melaporkan metrik ini di level project, tabel, dan kolom. Untuk mengetahui informasi selengkapnya, baca Profil data untuk data BigQuery.
Gambar berikut menampilkan daftar profil data kolom (klik untuk memperbesar). Kolom dengan nilai risiko data tinggi mungkin berisi data dengan sensitivitas tinggi dan tidak memiliki kontrol akses tingkat kolom. Atau, kolom tersebut mungkin berisi data dengan sensitivitas sedang atau tinggi yang dapat diakses oleh sejumlah besar orang.
Contoh kasus penggunaan
Pertimbangkan organisasi yang perlu mengklasifikasikan data sensitif ke dalam dua kategori: Tinggi dan Sedang.
Untuk menyiapkan keamanan tingkat kolom, data steward, yang memiliki izin yang sesuai, akan melakukan langkah-langkah berikut untuk menyiapkan hierarki klasifikasi data.
Pengurus data membuat taksonomi yang bernama "Kekritisan bisnis". Taksonomi mencakup node, atau tag kebijakan Tinggi dan Sedang.
Data steward memutuskan bahwa kebijakan untuk node Tinggi menyertakan akses untuk grup bernama akses bertingkat tinggi.
Data steward membuat lebih banyak level node dalam taksonomi, pada Tinggi dan Sedang. Node tingkat terendah adalah node leaf, seperti node leaf employee_ssn. Data steward dapat membuat kebijakan akses yang berbeda untuk node leaf employee_ssn, atau tidak.
Data steward menetapkan tag kebijakan ke kolom tabel tertentu. Dalam contoh ini, data steward menetapkan kebijakan akses Tinggi ke kolom employee_ssn di tabel.
Pada halaman Skema saat ini pada konsol, data steward dapat melihat tag kebijakan yang mengatur kolom tertentu. Dalam contoh ini, kolom employee_ssn berada di bawah tag kebijakan Tinggi sehingga saat melihat skema untuk employee_ssn, konsol menampilkan nama taksonomi dan tag kebijakan di kolom
Policy tags
:Business criticality:High
.Untuk mengetahui detail tentang cara menggunakan konsol untuk menetapkan tag kebijakan, lihat Menetapkan tag kebijakan di kolom.
Atau, Anda dapat menetapkan tag kebijakan menggunakan perintah
bq update
. Kolomnames
daripolicyTags
menyertakan ID tag kebijakan Tinggi,projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags/policytag-id
:[ ... { "name": "ssn", "type": "STRING", "mode": "REQUIRED", "policyTags": { "names": ["projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags/policytag-id"] } }, ... ]
Untuk mengetahui detail tentang penggunaan perintah
bq update
dalam menetapkan tag kebijakan, lihat Menetapkan tag kebijakan di kolom.Admin melakukan langkah-langkah yang serupa untuk tag kebijakan Sedang.
Dengan akses mendetail ini, Anda dapat mengelola akses ke banyak kolom dengan hanya mengontrol sejumlah kecil tag kebijakan klasifikasi data.
Untuk mengetahui detail tentang langkah-langkah ini, lihat Membatasi akses dengan kontrol akses level kolom.
Peran yang digunakan dengan kontrol akses level kolom
Peran berikut digunakan untuk kontrol akses level kolom BigQuery.
Peran Admin Tag Kebijakan Data Catalog diperlukan untuk pengguna yang perlu membuat dan mengelola taksonomi dan tag kebijakan.
Peran/ID | Izin | Deskripsi |
---|---|---|
Admin Tag Kebijakan Data Catalog/datacatalog.categoryAdmin
|
datacatalog.categories.getIamPolicy datacatalog.categories.setIamPolicy datacatalog.taxonomies.create datacatalog.taxonomies.delete datacatalog.taxonomies.get datacatalog.taxonomies.getIamPolicy datacatalog.taxonomies.list datacatalog.taxonomies.setIamPolicy datacatalog.taxonomies.update resourcemanager.projects.get resourcemanager.projects.list
|
Berlaku di level project. Peran ini memberikan kemampuan untuk melakukan hal berikut:
|
Memerlukan peran Admin BigQuery atau peran Pemilik Data BigQuery untuk membuat dan mengelola kebijakan data. Saat Anda menggunakan konsol Google Cloud untuk menerapkan kontrol akses pada taksonomi, layanan ini diam-diam membuat kebijakan data untuk Anda.
Peran/ID | Izin | Deskripsi |
---|---|---|
Admin BigQuery/bigquery.admin
Pemilik Data BigQuery/ bigquery.dataOwner
|
bigquery.dataPolicies.create bigquery.dataPolicies.delete bigquery.dataPolicies.get bigquery.dataPolicies.getIamPolicy bigquery.dataPolicies.list bigquery.dataPolicies.setIamPolicy bigquery.dataPolicies.update
|
Izin Peran ini memberikan kemampuan untuk melakukan hal berikut:
|
datacatalog.taxonomies.get
, yang bisa Anda dapatkan dari
beberapa
peran Data Catalog yang telah ditetapkan.
Peran Data Catalog Fine-Grained Reader diperlukan bagi pengguna yang memerlukan akses ke data di kolom yang diamankan.
Peran/ID | Izin | Deskripsi |
---|---|---|
Fine-Grained Reader/datacatalog.categoryFineGrainedReader
|
datacatalog.categories.fineGrainedGet |
Berlaku di tingkat tag kebijakan. Peran ini memberikan kemampuan untuk mengakses konten kolom yang dibatasi oleh tag kebijakan. |
Untuk mempelajari peran Data Catalog lebih lanjut, lihat Identity and Access Management Data Catalog (IAM). Untuk mempelajari peran BigQuery lebih lanjut, baca Kontrol akses dengan IAM.
Dampak penulisan
Untuk membaca data dari kolom yang dilindungi oleh kontrol akses tingkat kolom, pengguna selalu harus memiliki izin baca melalui akses baca mendetail pada tag kebijakan untuk kolom tersebut.
Kebijakan ini berlaku untuk:
- Tabel, termasuk tabel karakter pengganti
- Tabel Virtual
- Menyalin tabel
Untuk menulis data ke baris untuk kolom yang dilindungi oleh kontrol akses level kolom, persyaratan pengguna bergantung pada jenis penulisan.
Jika operasi tulis adalah sisipkan, tidak memerlukan akses baca mendetail. Namun, pengguna tidak memiliki akses untuk membaca data yang dimasukkan, kecuali jika pengguna memiliki akses baca yang mendetail.
Jika operasi tulis adalah update, hapus, atau gabungkan, pengguna tidak dapat melakukan operasi kecuali jika pengguna memiliki akses baca yang mendetail pada kolom baca.
Pengguna dapat memuat data dari file lokal atau dari Cloud Storage. Saat memuat data ke tabel, BigQuery tidak memeriksa izin pembaca yang mendetail pada kolom tabel tujuan. Hal ini karena pemuatan data tidak memerlukan pembacaan konten dari tabel tujuan. Demikian pula, pengguna dapat memuat data dari streaming, karena pemuatan streaming tidak memeriksa tag kebijakan. Pengguna tidak memiliki akses untuk membaca data yang dimuat dari streaming, kecuali jika pengguna memiliki akses baca yang mendetail.
Untuk mengetahui informasi selengkapnya, lihat Dampak pada penulisan dengan kontrol akses tingkat kolom.
Tabel kueri
Jika pengguna memiliki akses set data dan memiliki peran Data Catalog Fine-Grained Reader, data kolom akan tersedia bagi pengguna. Pengguna menjalankan kueri seperti biasa.
Jika pengguna memiliki akses set data tetapi tidak memiliki peran Data Catalog Fine-Grained Reader, data kolom tidak akan tersedia bagi pengguna. Jika pengguna tersebut
menjalankan SELECT *
, mereka akan menerima error yang mencantumkan kolom
yang tidak dapat diakses oleh pengguna. Untuk mengatasi error, Anda dapat melakukan:
Ubah kueri untuk mengecualikan kolom yang tidak dapat diakses pengguna. Misalnya, jika pengguna tidak memiliki akses ke kolom
ssn
, tetapi memiliki akses ke kolom yang tersisa, pengguna dapat menjalankan kueri berikut:SELECT * EXCEPT (ssn) FROM ...
Pada contoh sebelumnya, klausa
EXCEPT
mengecualikan kolomssn
.Minta Administrator Data Catalog untuk menambahkan pengguna sebagai Data Catalog Fine-Grained Reader ke class data yang relevan. Pesan error memberikan nama lengkap tag kebijakan yang akan diakses oleh pengguna.
Tampilan kueri
Dampak keamanan tingkat kolom pada tampilan tidak bergantung pada apakah tampilan merupakan tampilan yang diotorisasi atau bukan. Dalam kedua kasus tersebut, keamanan tingkat kolom diterapkan secara transparan.
Tampilan yang diotorisasi adalah salah satu dari hal berikut:
- Tampilan yang secara eksplisit diotorisasi untuk mengakses tabel dalam set data.
- Tampilan yang diotorisasi secara implisit untuk mengakses tabel dalam set data karena berada dalam set data yang diotorisasi.
Untuk informasi selengkapnya, lihat Tampilan yang diotorisasi dan Set data yang diotorisasi.
Jika tampilan bukan tampilan yang diotorisasi:
Jika pengguna memiliki akses IAM ke tabel dan set data pokok tampilan serta akses tingkat kolom ke tabel pokok tampilan, maka pengguna dapat membuat kueri kolom dalam tampilan. Jika tidak, pengguna tidak dapat membuat kueri untuk kolom dalam tampilan.
Jika tampilan adalah tampilan yang diotorisasi:
Hanya keamanan tingkat kolom pada kolom dalam tabel pokok tampilan yang mengontrol akses. Kebijakan IAM level tabel dan level set data, jika ada, tidak digunakan untuk memeriksa akses. Jika pengguna memiliki akses ke tag kebijakan yang digunakan dalam tabel pokok tampilan yang diotorisasi, maka pengguna dapat membuat kueri kolom dalam tampilan yang diotorisasi.
Diagram berikut menunjukkan cara akses ke tampilan dievaluasi.
Dampak perjalanan waktu dan tampilan terwujud dengan max_staleness
BigQuery memungkinkan Anda melakukan kueri tabel dalam status sebelumnya. Kemampuan ini memungkinkan Anda membuat kueri baris dari titik waktu sebelumnya. Hal ini juga memungkinkan Anda memulihkan tabel dari titik waktu.
Dalam SQL lama, Anda membuat kueri data historis menggunakan dekorator waktu pada
nama tabel. Di GoogleSQL, Anda membuat kueri data historis menggunakan
klausa FOR SYSTEM_TIME AS OF
pada tabel.
Tampilan terwujud dengan kumpulan opsi max_staleness
akan menampilkan data historis
dari dalam interval ketidakberlakuannya. Perilaku ini mirip dengan kueri yang menggunakan
FOR SYSTEM_TIME AS OF
pada saat pemuatan ulang terakhir kali tampilan, karena
memungkinkan BigQuery untuk mengkueri data yang telah dihapus atau diupdate.
Misalnya Anda membuat kueri data historis tabel pada waktu t. Dalam hal ini:
Jika skema pada waktu t identik dengan, atau subset dari, skema tabel saat ini, BigQuery akan memeriksa keamanan tingkat kolom terbaru pada tabel saat ini. Jika pengguna diizinkan untuk membaca kolom saat ini, maka pengguna dapat membuat kueri data historis kolom tersebut. Untuk menghapus atau menyamarkan data sensitif kolom yang dilindungi oleh keamanan tingkat kolom, keamanan tingkat kolom dapat dilonggarkan dengan aman hanya setelah jangka perjalanan waktu yang dikonfigurasi telah berlalu sejak pembersihan data sensitif.
Jika skema pada waktu t berbeda dengan skema saat ini untuk kolom dalam kueri, kueri akan gagal.
Pertimbangan lokasi
Saat memilih lokasi untuk taksonomi Anda, pertimbangkan batasan berikut.
Tag kebijakan
Taksonomi adalah resource regional, seperti set data dan tabel BigQuery. Saat membuat taksonomi, Anda menentukan region, atau lokasi, untuk taksonomi tersebut.
Anda dapat membuat taksonomi dan menerapkan tag kebijakan ke tabel di semua region tempat BigQuery tersedia. Namun, untuk menerapkan tag kebijakan dari taksonomi ke kolom tabel, taksonomi dan tabel harus ada di lokasi regional yang sama.
Meskipun tidak dapat menerapkan tag kebijakan ke kolom tabel yang ada di lokasi berbeda, Anda dapat menyalin taksonomi ke lokasi lain dengan mereplikasinya secara eksplisit di sana.
Jika Anda ingin menggunakan tag taksonomi dan kebijakan yang sama di beberapa lokasi regional, pelajari lebih lanjut cara mereplikasi taksonomi dalam Mengelola tag kebijakan di seluruh lokasi.
Organisasi
Anda tidak dapat menggunakan referensi di seluruh organisasi. Tabel dan tag kebijakan yang ingin Anda terapkan ke kolomnya harus berada dalam organisasi yang sama.
Batasan
Fitur ini mungkin tidak tersedia saat menggunakan pemesanan yang dibuat dengan edisi BigQuery tertentu. Untuk mengetahui informasi selengkapnya tentang fitur apa saja yang diaktifkan di setiap edisi, lihat Pengantar edisi BigQuery.
BigQuery hanya mendukung kontrol akses tingkat kolom untuk tabel BigLake, tabel BigQuery, dan tabel BigQuery Omni.
Jika Anda menimpa pada tabel tujuan, semua tag kebijakan yang ada akan dihapus dari tabel, kecuali jika Anda menggunakan flag
--destination_schema
untuk menentukan skema dengan tag kebijakan. Contoh berikut menunjukkan cara menggunakan--destination_schema
.bq query --destination_table mydataset.mytable2 \ --use_legacy_sql=false --destination_schema=schema.json \ 'SELECT * FROM mydataset.mytable1'
Perubahan skema terjadi dalam operasi yang terpisah dari eksekusi kueri. Jika Anda menulis hasil kueri ke tabel dengan menentukan flag
--destination_table
, lalu kueri tersebut memunculkan pengecualian, ada kemungkinan bahwa setiap perubahan skema akan dilewati. Jika hal ini terjadi, periksa skema tabel tujuan dan perbarui secara manual jika perlu.Kolom hanya dapat memiliki satu tag kebijakan.
Satu tabel dapat memiliki maksimal 1.000 tag kebijakan unik.
Anda tidak dapat menggunakan Legacy SQL jika mengaktifkan kontrol akses tingkat kolom. Kueri SQL lama akan ditolak jika ada tag kebijakan pada tabel target.
Hierarki tag kebijakan tidak boleh lebih dari lima tingkat kedalaman dari node root ke subtag tingkat terendah, seperti yang ditunjukkan pada screenshot berikut:
Nama taksonomi harus unik di antara semua project dalam organisasi.
Anda tidak dapat menyalin tabel di seluruh region jika Anda mengaktifkan kontrol akses tingkat kolom atau tingkat baris. Setiap salinan tabel di seluruh region akan ditolak jika ada tag kebijakan pada tabel sumber.
Harga
Kontrol akses tingkat kolom memerlukan penggunaan BigQuery dan Data Catalog. Untuk mengetahui informasi harga produk ini, lihat topik berikut:
Logging audit
Saat data tabel berisi tag kebijakan dibaca, kami akan menyimpan tag kebijakan yang direferensikan di Cloud Logging. Namun, pemeriksaan tag kebijakan tidak terkait dengan kueri yang memicu pemeriksaan tersebut.
Melalui Cloud Logging, auditor dapat memahami siapa yang memiliki jenis akses ke kategori data sensitif tertentu. Untuk mengetahui informasi selengkapnya, lihat Mengaudit tag kebijakan.
Untuk mengetahui informasi lebih lanjut tentang logging di BigQuery, lihat Pengantar pemantauan BigQuery.
Untuk mengetahui informasi selengkapnya tentang logging di Google Cloud, lihat Cloud Logging.
Langkah selanjutnya
Untuk mengetahui detail tentang penggunaan kontrol akses tingkat kolom, lihat Membatasi akses dengan kontrol akses tingkat kolom.
Untuk mendapatkan informasi tentang praktik terbaik untuk tag kebijakan, baca Praktik terbaik BigQuery: Menggunakan tag kebijakan.