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 berisi TYPE_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

Alur kerja

Untuk membatasi akses data di tingkat kolom:

  1. Menentukan tag taksonomi dan kebijakan. Buat dan kelola taksonomi serta tag kebijakan untuk data Anda. Untuk mengetahui panduan, baca Praktik terbaik untuk tag kebijakan.

  2. Tetapkan tag kebijakan ke kolom BigQuery. Di BigQuery, gunakan anotasi skema untuk menetapkan tag kebijakan ke setiap kolom yang aksesnya ingin Anda batasi.

  3. Menerapkan kontrol akses pada taksonomi. Menerapkan kontrol akses akan menyebabkan pembatasan akses yang ditentukan untuk semua tag kebijakan dalam taksonomi yang diterapkan.

  4. 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.

Profil data kolom

Contoh kasus penggunaan

Pertimbangkan organisasi yang perlu mengklasifikasikan data sensitif ke dalam dua kategori: Tinggi dan Sedang.

Tag kebijakan

Untuk menyiapkan keamanan tingkat kolom, data steward, yang memiliki izin yang sesuai, akan melakukan langkah-langkah berikut untuk menyiapkan hierarki klasifikasi data.

  1. Pengurus data membuat taksonomi yang bernama "Kekritisan bisnis". Taksonomi mencakup node, atau tag kebijakan Tinggi dan Sedang.

  2. Data steward memutuskan bahwa kebijakan untuk node Tinggi menyertakan akses untuk grup bernama akses bertingkat tinggi.

  3. 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.

  4. Data steward menetapkan tag kebijakan ke kolom tabel tertentu. Dalam contoh ini, data steward menetapkan kebijakan akses Tinggi ke kolom employee_ssn di tabel.

  5. 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.

    UI tag kebijakan

    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. Kolom names dari policyTags 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.

  6. 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:

  • Membuat, membaca, mengupdate, dan menghapus taksonomi dan tag kebijakan.
  • Mendapatkan dan menetapkan kebijakan IAM pada tag kebijakan.

Peran BigQuery Data Policy Admin, peran BigQuery Admin, atau peran BigQuery Data Owner diperlukan 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
BigQuery Data Policy Admin/bigquerydatapolicy.admin

BigQuery Admin/bigquery.admin

BigQuery Data Owner/bigquery.dataOwner
bigquery.dataPolicies.create
bigquery.dataPolicies.delete
bigquery.dataPolicies.get
bigquery.dataPolicies.getIamPolicy
bigquery.dataPolicies.list
bigquery.dataPolicies.setIamPolicy
bigquery.dataPolicies.update

Izin bigquery.dataPolicies.create dan bigquery.dataPolicies.list berlaku di level project. Izin lainnya berlaku di tingkat kebijakan data.

Peran ini memberikan kemampuan untuk melakukan hal berikut:

  • Membuat, membaca, memperbarui, dan menghapus kebijakan data.
  • Mendapatkan dan menetapkan kebijakan IAM pada kebijakan data.
Anda juga memerlukan izin 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 pengguna menjalankan pernyataan INSERT SELECT, peran pembaca terperinci diperlukan pada tabel yang dikueri.

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 kolom ssn.

  • 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.

Mengakses tampilan

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:

    Kedalaman tag kebijakan.

  • Nama taksonomi harus unik di antara semua project dalam organisasi.

  • Anda tidak dapat menyalin tabel di seluruh region jika 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 berikutnya