Kunci Cloud KMS yang dikelola pelanggan
Secara default, BigQuery mengenkripsi konten Anda yang disimpan dalam penyimpanan. BigQuery menangani dan mengelola enkripsi default ini untuk Anda tanpa tindakan tambahan dari Anda. Pertama, data dalam tabel BigQuery dienkripsi menggunakan kunci enkripsi data. Kemudian, kunci enkripsi data tersebut dienkripsi dengan kunci enkripsi kunci, yang dikenal sebagai enkripsi menyeluruh. Kunci enkripsi kunci tidak secara langsung mengenkripsi data Anda, tetapi digunakan untuk mengenkripsi kunci enkripsi data yang digunakan Google untuk mengenkripsi data Anda. Untuk informasi selengkapnya, lihat Cloud Key Management Service (KMS).
Jika ingin mengontrol enkripsi sendiri, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk BigQuery. Alih-alih Google yang mengelola kunci enkripsi kunci yang melindungi data Anda, Andalah yang mengontrol dan mengelola kunci enkripsi kunci di Cloud KMS. Dokumen ini memberikan detail tentang teknik ini.
Pelajari lebih lanjut opsi enkripsi di Google Cloud. Untuk informasi spesifik tentang CMEK, termasuk keuntungan dan batasannya, lihat Kunci enkripsi yang dikelola pelanggan.
Sebelum memulai
Semua aset data yang ada di penyimpanan terkelola BigQuery mendukung CMEK. Namun, jika Anda juga membuat kueri data yang disimpan di sumber data eksternal seperti Cloud Storage yang memiliki data yang dienkripsi CMEK, enkripsi data akan dikelola oleh Cloud Storage Misalnya, tabel BigLake mendukung data terenkripsi dengan CMEK di Cloud Storage.
BigQuery dan tabel BigLake tidak mendukung Kunci Enkripsi yang Disediakan Pelanggan (CSEK).
Tentukan apakah Anda akan menjalankan BigQuery dan Cloud KMS di project Google Cloud yang sama atau dalam project berbeda. Untuk tujuan contoh dokumentasi, konvensi berikut digunakan:
PROJECT_ID
: project ID untuk project yang menjalankan BigQueryPROJECT_NUMBER
: nomor project untuk project yang menjalankan BigQueryKMS_PROJECT_ID
: project ID untuk project yang menjalankan Cloud KMS (meskipun project ini sama dengan yang menjalankan BigQuery)
BigQuery secara otomatis diaktifkan dalam project baru. Jika Anda menggunakan project yang sudah ada untuk menjalankan BigQuery, aktifkan BigQuery API.
Untuk project Google Cloud yang menjalankan Cloud KMS:
- Aktifkan Cloud Key Management Service API.
- Buat key ring dan kunci seperti yang dijelaskan dalam
Membuat key ring dan kunci. Buat key ring
di lokasi yang cocok dengan lokasi set data
BigQuery Anda:
-
Setiap set data multi-regional harus menggunakan key ring multi-regional dari
lokasi yang cocok. Misalnya, set data di region
US
harus dilindungi dengan key ring dari regionus
, dan set data di regionEU
harus dilindungi dengan key ring dari regioneurope
. -
Set data regional harus menggunakan kunci regional yang cocok. Misalnya,
set data di region
asia-northeast1
harus dilindungi dengan key ring dari regionasia-northeast1
. -
Anda tidak dapat menggunakan region
global
saat mengonfigurasi CMEK untuk BigQuery di Konsol Google Cloud. Namun, Anda dapat menggunakan regionglobal
saat mengonfigurasi CMEK untuk BigQuery menggunakan alat command line bq atau GoogleSQL.
-
Setiap set data multi-regional harus menggunakan key ring multi-regional dari
lokasi yang cocok. Misalnya, set data di region
Panggilan dekripsi dilakukan menggunakan Cloud KMS satu kali per kueri ke tabel yang dienkripsi CMEK. Untuk mengetahui informasi selengkapnya, lihat harga Cloud KMS.
Spesifikasi enkripsi
Kunci Cloud KMS yang digunakan untuk melindungi data Anda di BigQuery adalah kunci AES-256. Kunci ini digunakan sebagai kunci enkripsi kunci di BigQuery, karena kunci ini mengenkripsi kunci enkripsi data yang mengenkripsi data Anda.
Memberikan izin enkripsi dan dekripsi
Untuk melindungi data BigQuery dengan kunci CMEK, berikan izin kepada akun layanan BigQuery untuk mengenkripsi dan mendekripsi menggunakan kunci tersebut. Peran Pengenkripsi/Pendekripsi Cloud KMS dalam memberikan izin ini.
Pastikan akun layanan telah dibuat, lalu gunakan konsol Google Cloud untuk menentukan ID akun layanan BigQuery. Selanjutnya, berikan peran yang sesuai untuk akun layanan untuk mengenkripsi dan mendekripsi menggunakan Cloud KMS.
Memicu pembuatan akun layanan
Akun layanan BigQuery awalnya tidak dibuat saat Anda
membuat project. Untuk memicu pembuatan akun
layanan Anda, masukkan perintah yang menggunakannya, seperti
perintah
bq show --encryption_service_account
, atau panggil
project.getServiceAccount API. Contoh:
bq show --encryption_service_account --project_id=PROJECT_ID
Menentukan ID akun layanan
ID akun layanan BigQuery memiliki format:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Teknik berikut menunjukkan cara menentukan ID akun layanan BigQuery untuk project Anda.
Konsol
Buka halaman Dasbor di konsol Google Cloud.
Klik menu drop-down Pilih dari di bagian atas halaman. Di jendela Pilih Dari yang muncul, pilih project Anda.
Baik project ID maupun nomor project ditampilkan di kartu Info project pada Dasbor project:
Pada string berikut, ganti PROJECT_NUMBER dengan nomor project Anda. String baru mengidentifikasi ID akun layanan BigQuery Anda.
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
bq
Gunakan perintah bq show
dengan flag --encryption_service_account
untuk
menentukan ID akun layanan:
bq show --encryption_service_account
Perintah ini akan menampilkan ID akun layanan:
ServiceAccountID ------------------------------------------------------------- bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Menetapkan peran Pengenkripsi/Pendekripsi
Tetapkan peran Pengenkripsi/Pendekripsi Cloud KMS ke akun layanan sistem BigQuery yang telah disalin ke papan klip. Akun ini berbentuk:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Konsol
Buka halaman Kunci Kriptografis di konsol Google Cloud.
Klik nama key ring yang berisi kunci tersebut.
Klik kotak centang untuk kunci enkripsi yang ingin Anda tambahi peran. Tab Izin akan terbuka.
Klik Tambahkan anggota.
Masukkan alamat email akun layanan.
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
.- Jika akun layanan sudah ada di daftar anggota, akun tersebut memiliki
peran yang sudah ada. Klik menu drop-down peran saat ini untuk
akun layanan
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
.
- Jika akun layanan sudah ada di daftar anggota, akun tersebut memiliki
peran yang sudah ada. Klik menu drop-down peran saat ini untuk
akun layanan
Klik menu drop-down untuk Pilih peran, klik Cloud KMS, lalu klik peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS.
Klik Simpan untuk menerapkan peran ke akun layanan
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
.
gcloud
Anda dapat menggunakan Google Cloud CLI untuk menetapkan peran:
gcloud kms keys add-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY
Ganti kode berikut:
KMS_PROJECT_ID
: ID project Google Cloud Anda yang menjalankan Cloud KMSPROJECT_NUMBER
: nomor project (bukan ID project) dari project Google Cloud Anda yang menjalankan BigQueryKMS_KEY_LOCATION
: nama lokasi kunci Cloud KMS AndaKMS_KEY_RING
: nama key ring untuk kunci Cloud KMS AndaKMS_KEY
: nama kunci untuk kunci Cloud KMS Anda
ID resource kunci
ID resource untuk kunci Cloud KMS diperlukan untuk penggunaan CMEK, seperti yang ditunjukkan dalam contoh. Kunci ini peka huruf besar/kecil dan dalam bentuk:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY
Mengambil ID resource kunci
Buka halaman Kunci Kriptografis di konsol Google Cloud.
Klik nama key ring yang berisi kunci tersebut.
Untuk kunci yang ID resource-nya Anda ambil, klik Selengkapnya more_vert.
Klik Salin Nama Resource. ID resource untuk kunci disalin ke papan klip Anda. ID resource juga disebut sebagai nama resource.
Membuat tabel yang dilindungi oleh Cloud KMS
Untuk membuat tabel yang dilindungi oleh Cloud KMS:
Konsol
Buka halaman BigQuery di konsol Google Cloud.
Di panel Penjelajah, luaskan project Anda dan pilih set data.
Luaskan opsi
Actions dan klik Open.Di panel detail, klik Buat tabel
.Di halaman Buat tabel, isi informasi yang diperlukan untuk membuat tabel kosong dengan definisi skema. Sebelum mengklik Buat Tabel, tetapkan jenis enkripsi dan tentukan kunci Cloud KMS yang akan digunakan dengan tabel:
- Klik Advanced options.
- Klik Kunci yang dikelola pelanggan.
- Pilih kunci. Jika kunci yang ingin Anda gunakan tidak tercantum, masukkan ID resource untuk kunci tersebut.
Klik Buat tabel.
SQL
Gunakan
pernyataan CREATE TABLE
dengan opsi kms_key_name
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE TABLE DATASET_ID.TABLE_ID ( name STRING, value INT64 ) OPTIONS ( kms_key_name = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
Anda dapat menggunakan alat command line bq dengan flag --destination_kms_key
untuk membuat tabel. Flag --destination_kms_key
menentukan
ID resource kunci yang akan digunakan dengan tabel.
Untuk membuat tabel kosong dengan skema:
bq mk --schema name:string,value:integer -t \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.TABLE_ID
Untuk membuat tabel dari kueri:
bq query --destination_table=DATASET_ID.TABLE_ID \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ "SELECT name,count FROM DATASET_ID.TABLE_ID WHERE gender = 'M' ORDER BY count DESC LIMIT 6"
Untuk mengetahui informasi selengkapnya tentang alat command line bq, baca Menggunakan alat command line bq.
Terraform
Gunakan resource google_bigquery_table
.
Contoh berikut membuat tabel bernamamytable
, dan juga menggunakan resource
google_kms_crypto_key
dan
google_kms_key_ring
untuk menentukan
Kunci Cloud Key Management Service untuk
tabel.
Untuk menjalankan contoh ini, Anda harus mengaktifkan Cloud Resource Manager API dan Cloud Key Management Service API.
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Lindungi tabel baru dengan kunci enkripsi yang dikelola pelanggan dengan menetapkan properti Table.encryption_configuration ke objek EncryptionConfiguration sebelum membuat tabel.Mengkueri tabel yang dilindungi oleh kunci Cloud KMS
Tidak ada pengaturan khusus yang diperlukan untuk membuat kueri tabel yang dilindungi oleh Cloud KMS. BigQuery menyimpan nama kunci yang digunakan untuk mengenkripsi isi tabel dan menggunakan kunci tersebut ketika tabel yang dilindungi oleh Cloud KMS dikueri.
Semua alat yang ada, konsol BigQuery, dan alat command line bq berjalan dengan cara yang sama seperti tabel terenkripsi default, selama BigQuery memiliki akses ke kunci Cloud KMS yang digunakan untuk mengenkripsi isi tabel.
Melindungi hasil kueri dengan kunci Cloud KMS
Secara default, hasil kueri disimpan dalam tabel sementara yang dienkripsi dengan kunci yang dikelola Google. Untuk menggunakan kunci Cloud KMS guna mengenkripsi hasil kueri Anda, pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery di konsol Google Cloud.
Klik Tulis Kueri Baru.
Masukkan kueri GoogleSQL yang valid di area teks kueri.
Klik Selengkapnya, klik Setelan kueri, lalu klik Opsi lanjutan.
Pilih Enkripsi yang dikelola pelanggan.
Pilih kunci. Jika kunci yang ingin Anda gunakan tidak tercantum, masukkan ID resource untuk kunci tersebut.
Klik Save.
Klik Run.
bq
Tentukan flag --destination_kms_key
untuk melindungi tabel tujuan atau
hasil kueri (jika menggunakan tabel sementara) dengan kunci Cloud KMS Anda.
Flag --destination_kms_key
menentukan
ID resource kunci yang akan digunakan dengan tabel tujuan atau
hasil.
Secara opsional, gunakan flag --destination_table
untuk menentukan tujuan
hasil kueri. Jika --destination_table
tidak digunakan, hasil kueri akan
ditulis ke tabel sementara.
Untuk mengkueri tabel:
bq query \ --destination_table=DATASET_ID.TABLE_ID \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ "SELECT name,count FROM DATASET_ID.TABLE_ID WHERE gender = 'M' ORDER BY count DESC LIMIT 6"
Untuk mengetahui informasi selengkapnya tentang alat command line bq, baca Menggunakan alat command line bq.
Go
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Lindungi tabel baru dengan kunci enkripsi yang dikelola pelanggan dengan menetapkan properti Table.encryption_configuration ke objek EncryptionConfiguration sebelum membuat tabel.Python
Memuat tabel yang dilindungi oleh Cloud KMS
Untuk memuat file data ke tabel yang dilindungi oleh Cloud KMS:
Konsol
Lindungi tabel tujuan tugas pemuatan dengan kunci enkripsi yang dikelola pelanggan dengan menentukan kunci saat Anda memuat tabel.
Buka halaman BigQuery di Konsol Google Cloud.
Di panel Penjelajah, luaskan project Anda dan pilih set data.
Di panel detail, klik Buat tabel.
Masukkan opsi yang ingin Anda gunakan untuk memuat tabel, tetapi sebelum Anda mengklik Buat tabel, klik Opsi lanjutan.
Di bagian Enkripsi, pilih Kunci yang dikelola pelanggan.
Klik menu drop-down Pilih kunci yang dikelola pelanggan, lalu pilih kunci untuk digunakan. Jika Anda tidak melihat kunci yang tersedia, masukkan ID resource kunci.
Klik Buat tabel.
bq
Lindungi tabel tujuan tugas pemuatan dengan kunci enkripsi yang dikelola
pelanggan dengan menetapkan flag --destination_kms_key
.
bq --location=LOCATION load \ --autodetect \ --source_format=FORMAT \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET.TABLE \ path_to_source
bq load \ --autodetect \ --source_format=NEWLINE_DELIMITED_JSON \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ test2.table4 \ gs://cloud-samples-data/bigquery/us-states/us-states.json
Go
Java
Python
Lindungi tabel tujuan tugas pemuatan dengan kunci enkripsi yang dikelola pelanggan dengan menetapkan properti LoadJobConfig.destination_encryption_configuration ke EncryptionConfiguration dan memuat tabel.
Streaming ke tabel yang dilindungi oleh Cloud KMS
Anda dapat melakukan streaming data ke tabel BigQuery yang dilindungi CMEK tanpa menentukan parameter tambahan. Perlu diperhatikan bahwa data ini dienkripsi menggunakan kunci Cloud KMS Anda di buffer serta di lokasi akhir. Sebelum menggunakan streaming dengan tabel CMEK, tinjau persyaratan tentang ketersediaan dan aksesibilitas utama.
Pelajari lebih lanjut streaming dengan membaca Streaming data ke BigQuery.
Mengubah tabel dari enkripsi default ke perlindungan Cloud KMS
bq
Anda dapat menggunakan perintah bq cp
dengan flag --destination_kms_key
untuk menyalin tabel yang dilindungi oleh enkripsi default ke dalam tabel baru, atau ke dalam
tabel asli yang dilindungi oleh Cloud KMS. Flag
--destination_kms_key
menentukan ID resource
kunci yang akan digunakan dengan tabel tujuan.
Untuk menyalin tabel yang memiliki enkripsi default ke tabel baru yang memiliki perlindungan Cloud KMS:
bq cp \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ SOURCE_DATASET_ID.SOURCE_TABLE_ID DESTINATION_DATASET_ID.DESTINATION_TABLE_ID
Anda dapat menyalin tabel yang memiliki enkripsi default ke tabel yang sama dengan perlindungan Cloud KMS:
bq cp -f \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.TABLE_ID DATASET_ID.TABLE_ID
Jika ingin mengubah tabel dari perlindungan Cloud KMS ke enkripsi
default, salin file ke enkripsi tersebut sendiri dengan menjalankan bq cp
tanpa menggunakan
flag --destination_kms_key
.
Untuk mengetahui informasi selengkapnya tentang alat command line bq, baca Menggunakan alat command line bq.
Go
Java
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Lindungi tujuan salinan tabel dengan kunci enkripsi yang dikelola pelanggan dengan menetapkan properti QueryJobConfig.destination_encryption_configuration ke EncryptionConfiguration dan salin tabel.
Menentukan apakah tabel dilindungi oleh Cloud KMS
Di konsol Google Cloud, klik panah biru di sebelah kiri set data Anda untuk meluaskannya, atau klik dua kali nama set data. Tindakan ini menampilkan tabel dan tampilan dalam set data.
Klik nama tabel.
Klik Details. Halaman Detail Tabel menampilkan deskripsi tabel dan informasi tabel.
Jika tabel dilindungi oleh Cloud KMS, kolom Kunci Enkripsi yang Dikelola Pelanggan akan menampilkan ID resource kunci.
Mengubah kunci Cloud KMS untuk tabel BigQuery
Untuk mengubah kunci Cloud KMS dari tabel yang dilindungi CMEK yang ada, Anda
dapat menjalankan kueri ALTER TABLE
, menggunakan API, atau menggunakan alat command line bq.
Ada dua cara untuk mengubah kunci Cloud KMS menggunakan API dan
alat command line bq: update
atau cp
.
Jika menggunakan update
, Anda dapat mengubah kunci Cloud KMS yang digunakan untuk
tabel yang dilindungi CMEK.
Jika menggunakan cp
, Anda dapat mengubah kunci Cloud KMS yang digunakan untuk
tabel yang dilindungi CMEK, mengubah tabel dari enkripsi default ke perlindungan CMEK,
atau mengubah tabel dari perlindungan CMEK menjadi default enkripsi.
Keuntungan dari update
adalah lebih cepat daripada cp
dan memungkinkan Anda menggunakan
dekorator tabel.
SQL
Gunakan
pernyataan ALTER TABLE SET OPTIONS
untuk memperbarui kolom kms_key_name
untuk tabel:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
ALTER TABLE DATASET_ID.mytable SET OPTIONS ( kms_key_name = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
Anda dapat menggunakan perintah bq cp
dengan flag --destination_kms_key
untuk mengubah kunci tabel yang dilindungi oleh Cloud KMS. Flag
--destination_kms_key
menentukan ID resource
kunci yang akan digunakan dengan tabel.
bq update \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ -t DATASET_ID.TABLE_ID
Go
Java
Python
Ubah kunci enkripsi yang dikelola pelanggan untuk tabel dengan mengubah properti Table.encryption_configuration menjadi objek EncryptionConfiguration baru dan perbarui tabel.
Menetapkan kunci default set data
Anda dapat menetapkan kunci Cloud KMS default berskala set data yang berlaku untuk semua tabel yang baru dibuat dalam set data, kecuali jika kunci Cloud KMS yang berbeda ditentukan saat Anda membuat tabel. Kunci default tidak berlaku untuk tabel yang ada. Mengubah kunci default tidak akan mengubah tabel yang ada dan hanya berlaku untuk tabel baru yang dibuat setelah perubahan.
Anda dapat menerapkan, mengubah, atau menghapus kunci set data default dengan
menentukan kunci default di kolom
EncryptionConfiguration.kmsKeyName
saat Anda memanggil metodedatasets.insert
ataudatasets.patch
menentukan kunci default dalam flag
--default_kms_key
saat menjalankan perintahbq mk --dataset
.bq mk \ --default_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ --dataset DATASET_ID
bq update \ --default_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ --dataset DATASET_ID
Menetapkan kunci default project
Anda dapat menetapkan kunci Cloud KMS default berskala project yang berlaku untuk semua hasil kueri dan tabel yang baru dibuat dalam project, kecuali jika Anda menentukan kunci Cloud KMS lain. Kunci default tidak berlaku untuk tabel yang sudah ada. Mengubah kunci default tidak akan mengubah tabel yang ada dan hanya berlaku untuk tabel baru yang dibuat setelah perubahan.
SQL
Gunakan
pernyataan ALTER PROJECT SET OPTIONS
untuk memperbarui kolom default_kms_key_name
untuk sebuah project. Anda dapat menemukan
nama resource untuk kunci tersebut di halaman Cloud KMS.
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
ALTER PROJECT PROJECT_ID SET OPTIONS (
region-us.default_kms_key_name
= 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
Anda dapat menggunakan perintah bq
untuk menjalankan
pernyataan ALTER PROJECT SET OPTIONS
guna memperbarui kolom default_kms_key_name
untuk sebuah project:
bq query --nouse_legacy_sql \
'ALTER PROJECT PROJECT_ID
SET OPTIONS (
`region-us.default_kms_key_name`
="projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY");'
Menggunakan CMEK untuk melindungi model BigQuery ML
BigQuery ML mendukung CMEK. Selain enkripsi default yang disediakan oleh BigQuery, Anda dapat menggunakan kunci Cloud Key Management Service Anda sendiri untuk mengenkripsi model machine learning, termasuk model TensorFlow yang diimpor.
Membuat model terenkripsi dengan kunci Cloud KMS
Untuk membuat model terenkripsi, gunakan
pernyataan CREATE MODEL
dan tentukan KMS_KEY_NAME
dalam opsi pelatihan:
CREATE MODEL my_dataset.my_model OPTIONS( model_type='linear_reg', input_label_cols=['your_label'], kms_key_name='projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key') AS SELECT * FROM my_dataset.my_data
Sintaksis yang sama juga berlaku untuk model TensorFlow yang diimpor:
CREATE MODEL my_dataset.my_model OPTIONS( model_type='tensorflow', path='gs://bucket/path/to/saved_model/*', kms_key_name='projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key') AS SELECT * FROM my_dataset.my_data
Batasan
Kunci enkripsi yang dikelola pelanggan memiliki batasan berikut saat mengenkripsi model machine learning:
Kunci CMEK region
Global
tidak didukung untuk jenis model berikut:Kunci CMEK region
Global
dan kunci CMEK multi-region, misalnyaEU
atauUS
, tidak didukung saat membuat model AutoML Tables.
Mengubah model dari enkripsi default ke perlindungan Cloud KMS
Anda dapat menggunakan perintah bq cp
dengan flag --destination_kms_key
untuk menyalin model yang dilindungi oleh enkripsi
default ke model baru yang dilindungi oleh Cloud KMS.
Atau, Anda dapat menggunakan perintah bq cp
dengan flag -f
untuk menimpa
model yang dilindungi oleh enkripsi default dan memperbaruinya untuk menggunakan perlindungan
Cloud KMS. Flag --destination_kms_key
menentukan
ID resource kunci yang akan digunakan dengan model tujuan.
Untuk menyalin model yang memiliki enkripsi default ke model baru yang memiliki perlindungan Cloud KMS:
bq cp \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ SOURCE_DATASET_ID.SOURCE_MODEL_ID DESTINATION_DATASET_ID.DESTINATION_MODEL_ID
Untuk menimpa model yang memiliki enkripsi default ke model yang sama dengan perlindungan Cloud KMS:
bq cp -f \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.MODEL_ID DATASET_ID.MODEL_ID
Untuk mengubah model dari perlindungan Cloud KMS ke enkripsi default:
bq cp -f \ DATASET_ID.MODEL_ID DATASET_ID.MODEL_ID
Untuk mengetahui informasi selengkapnya tentang alat command line bq, baca Menggunakan alat command line bq.
Menentukan apakah model dilindungi oleh Cloud KMS
Gunakan
perintah bq show
untuk melihat apakah model dilindungi oleh kunci Cloud KMS. Kunci
enkripsi ada di kolom kmsKeyName
.
bq show -m my_dataset.my_model
Anda juga dapat menggunakan konsol Google Cloud untuk menemukan kunci Cloud KMS untuk model terenkripsi. Informasi CMEK ada di kolom Kunci yang dikelola pelanggan di bagian Detail Model pada panel Detail model.
Mengubah kunci Cloud KMS untuk model terenkripsi
Gunakan
perintah bq update
dengan
flag --destination_kms_key
guna mengubah kunci untuk model yang dilindungi oleh
Cloud KMS:
bq update --destination_kms_key \ projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key \ -t my_dataset.my_model
Menggunakan kunci set data atau project default
Jika Anda memiliki kunci Cloud KMS default yang ditetapkan pada level project atau set data,
BigQuery ML akan otomatis menggunakan kunci ini saat membuat model.
Gunakan pernyataan CREATE MODEL
untuk menentukan kunci lain untuk mengenkripsi model
jika Anda tidak ingin menggunakan kunci default.
Menggunakan fungsi BigQuery ML dengan model terenkripsi
Anda dapat menggunakan semua fungsi BigQuery ML dengan model terenkripsi tanpa menentukan kunci enkripsi.
Menggunakan CMEK untuk melindungi BigQuery Connection API
Untuk koneksi Cloud SQL, Anda dapat melindungi kredensial BigQuery Connection API menggunakan CMEK.
Untuk mengetahui informasi selengkapnya tentang cara membuat koneksi yang dilindungi CMEK, lihat Membuat koneksi Cloud SQL.
Menghapus akses BigQuery ke kunci Cloud KMS
Anda dapat menghapus akses BigQuery ke kunci Cloud KMS kapan saja, dengan mencabut izin Identity and Access Management (IAM) untuk kunci tersebut.
Jika BigQuery kehilangan akses ke kunci Cloud KMS, pengalaman pengguna dapat mengalami penurunan yang signifikan dan kehilangan data dapat terjadi:
Data dalam tabel yang dilindungi CMEK ini tidak dapat lagi diakses:
query
,cp
,extract
, dantabledata.list
semuanya akan gagal.Tidak ada data baru yang dapat ditambahkan ke tabel yang dilindungi CMEK ini.
Setelah akses diberikan kembali, performa kueri ke tabel ini dapat menurun selama beberapa hari.
Mengontrol penggunaan CMEK dengan kebijakan organisasi
BigQuery terintegrasi dengan batasan kebijakan organisasi CMEK agar Anda dapat menentukan persyaratan kepatuhan enkripsi untuk resource BigQuery di organisasi Anda.
Integrasi ini memungkinkan Anda melakukan hal berikut:
Mewajibkan CMEK untuk semua resource BigQuery dalam sebuah project.
Membatasi kunci Cloud KMS mana yang dapat digunakan untuk melindungi resource dalam suatu project.
Mewajibkan CMEK untuk semua resource
Kebijakan umumnya adalah mewajibkan CMEK digunakan untuk melindungi semua resource dalam
kumpulan project tertentu. Anda dapat menggunakan
batasan constraints/gcp.restrictNonCmekServices
untuk menerapkan kebijakan ini di
BigQuery.
Jika ditetapkan, kebijakan organisasi ini akan menyebabkan semua permintaan pembuatan resource tanpa kunci Cloud KMS yang ditentukan akan gagal.
Setelah ditetapkan, kebijakan ini hanya berlaku untuk resource baru dalam project. Setiap resource yang ada tanpa kunci Cloud KMS akan tetap ada dan dapat diakses tanpa masalah.
Konsol
Buka halaman Kebijakan organisasi.
Di kolom Filter, masukkan
constraints/gcp.restrictNonCmekServices
, lalu klik Batasi layanan mana yang dapat membuat resource tanpa CMEK.Klik
Edit.Pilih Customize, pilih Replace, lalu klik Add Rule.
Pilih Kustom, lalu klik Tolak.
Di kolom Nilai Kustom, masukkan
is:bigquery.googleapis.com
.Klik Selesai, lalu klik Simpan.
gcloud
gcloud resource-manager org-policies --project=PROJECT_ID \ deny gcp.restrictNonCmekServices is:bigquery.googleapis.com
Untuk memverifikasi bahwa kebijakan berhasil diterapkan, Anda dapat mencoba membuat tabel dalam project. Proses ini akan gagal kecuali jika Anda menentukan kunci Cloud KMS.
Kebijakan ini juga berlaku untuk tabel hasil kueri dalam project. Anda dapat menentukan kunci default project agar pengguna tidak perlu menentukan kunci secara manual setiap kali menjalankan kueri dalam project.
Membatasi kunci Cloud KMS untuk project BigQuery
Anda dapat menggunakan batasan constraints/gcp.restrictCmekCryptoKeyProjects
untuk
membatasi kunci Cloud KMS yang dapat digunakan untuk melindungi resource dalam
project BigQuery.
Anda dapat menentukan aturan - misalnya, "Untuk semua resource BigQuery dalam projects/my-company-data-project, kunci Cloud KMS yang digunakan dalam project ini harus berasal dari projects/my-company-central-keys ATAU projects/team-specific-keys."
Konsol
Buka halaman Kebijakan organisasi.
Di kolom Filter, masukkan
constraints/gcp.restrictCmekCryptoKeyProjects
, lalu klik Batasi project mana yang dapat menyediakan CryptoKey KMS untuk CMEK.Klik
Edit.Pilih Customize, pilih Replace, lalu klik Add Rule.
Pilih Kustom, lalu klik Izinkan.
Di kolom Nilai Kustom, masukkan
under:projects/<var>KMS_PROJECT_ID</var>
.Klik Selesai, lalu klik Simpan.
gcloud
gcloud resource-manager org-policies --project=PROJECT_ID \ allow gcp.restrictCmekCryptoKeyProjects under:projects/KMS_PROJECT_ID
Untuk memverifikasi bahwa kebijakan berhasil diterapkan, Anda dapat mencoba membuat tabel menggunakan kunci Cloud KMS dari project lain. Proses tersebut akan gagal.
Batasan kebijakan organisasi
Ada batasan terkait penetapan kebijakan organisasi.
Keterlambatan penerapan
Setelah Anda menetapkan atau memperbarui kebijakan organisasi, perlu waktu hingga 15 menit agar kebijakan baru dapat diterapkan. BigQuery menyimpan kebijakan dalam cache agar tidak berdampak negatif terhadap latensi pembuatan kueri dan tabel.
Izin yang diperlukan untuk menetapkan kebijakan organisasi
Izin untuk menetapkan atau memperbarui kebijakan organisasi mungkin sulit diperoleh untuk tujuan pengujian. Anda harus diberi peran Administrator Kebijakan Organisasi, yang hanya dapat diberikan di tingkat organisasi (bukan di tingkat project atau folder).
Meskipun peran ini harus diberikan di tingkat organisasi, Anda tetap dapat menentukan kebijakan yang hanya berlaku untuk project atau folder tertentu.
Dampak rotasi kunci Cloud KMS
BigQuery tidak secara otomatis merotasi kunci enkripsi tabel saatkunci Cloud KMS yang terkait dengan tabel dirotasi. Semua data dalam tabel yang ada akan tetap dilindungi oleh versi kunci yang digunakan untuk membuat tabel tersebut.
Setiap tabel yang baru dibuat akan menggunakan versi kunci utama pada saat pembuatannya.
Untuk memperbarui tabel agar menggunakan versi kunci terbaru, ubah tabel ke kunci Cloud KMS yang berbeda, lalu kembalikan tabel ke versi aslinya.
Dampak pada penagihan Cloud KMS
Saat Anda membuat atau memotong tabel yang dilindungi CMEK, BigQuery akan menghasilkan kunci enkripsi kunci perantara yang kemudian dienkripsi dengan kunci Cloud KMS yang ditentukan.
Untuk tujuan penagihan, ini berarti panggilan Anda ke Cloud KMS
maupun biaya terkait tidak akan diskalakan sesuai ukuran tabel. Untuk tabel yang dilindungi CMEK,
Anda dapat menerima satu panggilan ke Cloud KMS
cryptoKeys.encrypt
untuk setiap pembuatan atau pemotongan tabel dan satu panggilan ke Cloud KMS
cryptoKeys.decrypt
untuk setiap tabel yang terlibat dalam kueri. Kedua metode ini termasuk dalam kategori
Operasi kunci: Kriptografis yang tercantum dalam
Harga Cloud KMS.
Membaca dari atau menulis ke tabel yang dilindungi CMEK yang ada akan memanggil
cryptoKeys.decrypt
Cloud KMS karena kunci perantara harus
didekripsi.
Batasan
Akses BigQuery ke kunci Cloud KMS
Kunci Cloud KMS dianggap tersedia dan dapat diakses oleh BigQuery dalam kondisi berikut:
- Kunci diaktifkan
- Akun layanan BigQuery telah mengenkripsi dan mendekripsi izin pada kunci
Bagian berikut menjelaskan dampak terhadap streaming insert dan data jangka panjang yang tidak dapat diakses saat kunci tidak dapat diakses.
Dampak pada streaming insert
Kunci Cloud KMS harus tersedia dan dapat diakses setidaknya selama 24 jam berturut-turut dalam periode 48 jam setelah permintaan streaming insert. Jika kunci tidak tersedia dan dapat diakses, data yang di-streaming mungkin tidak sepenuhnya dipertahankan dan dapat hilang. Untuk informasi selengkapnya tentang streaming insert, lihat Streaming data ke BigQuery.
Dampak pada data jangka panjang yang tidak dapat diakses
Karena BigQuery menyediakan penyimpanan terkelola, data jangka panjang yang tidak dapat diakses tidak kompatibel dengan arsitektur BigQuery. Jika kunci Cloud KMS tabel BigQuery tertentu tidak tersedia dan tidak dapat diakses selama 60 hari berturut-turut, BigQuery dapat memilih untuk menghapus tabel tersebut dan data terkait. Setidaknya 7 hari sebelum data dihapus, BigQuery akan mengirimkan email ke alamat email yang terkait dengan akun penagihan.
Menggunakan sumber data eksternal
Jika Anda mengkueri data yang disimpan di sumber data eksternal seperti Cloud Storage yang memiliki data yang dienkripsi CMEK, enkripsi data akan dikelola oleh Cloud Storage. Misalnya, tabel BigLake mendukung data terenkripsi dengan CMEK di Cloud Storage.
BigQuery dan tabel BigLake tidak mendukung Kunci Enkripsi yang Disediakan Pelanggan (CSEK).
Beralih antara enkripsi yang dilindungi CMEK dan default
Anda tidak dapat mengganti tabel antara enkripsi default dan enkripsi
CMEK. Untuk beralih enkripsi, salin
tabel dengan kumpulan informasi
enkripsi tujuan atau gunakan kueri SELECT *
untuk memilih tabel itu sendiri dengan
disposisi WRITE_TRUNCATE
.
Menggunakan dekorator tabel
Jika Anda melindungi tabel dengan Cloud KMS lalu mengganti data dalam
tabel menggunakan nilai WRITE_TRUNCATE
untuk operasi load
, cp
, atau query
,
maka dekorator rentang
tidak berfungsi di seluruh batas perubahan enkripsi. Anda masih dapat menggunakan dekorator
tabel, termasuk dekorator rentang, untuk mengkueri data sebelum atau setelah
batas, atau mengkueri snapshot pada waktu tertentu.
Kueri tabel karakter pengganti
Tabel yang dilindungi CMEK tidak dapat dikueri dengan akhiran karakter pengganti.
Dukungan edisi
Dukungan CMEK untuk BigQuery hanya tersedia untuk BigQuery Enterprise Plus dan BigQuery On-Demand. Pelanggan BigQuery yang menggunakan reservasi tarif tetap lama sebelum 5 Juli 2023, akan tetap mendapatkan semua dukungan yang ada untuk CMEK di tingkat Enterprise.
Dukungan BigQuery Studio
Aset kode BigQuery Studio, termasuk kueri tersimpan dan notebooks, tidak mendukung CMEK.
Pertanyaan umum (FAQ)
Siapa yang memerlukan izin ke kunci Cloud KMS?
Dengan kunci enkripsi yang dikelola pelanggan, Anda tidak perlu menentukan izin secara berulang. Selama akun layanan BigQuery memiliki izin untuk menggunakan kunci Cloud KMS untuk mengenkripsi dan mendekripsi, siapa pun yang memiliki izin ke tabel BigQuery dapat mengakses data, meskipun mereka tidak memiliki akses langsung ke kunci Cloud KMS.
Akun layanan mana yang digunakan?
Akun layanan BigQuery yang terkait dengan project Google Cloud pada tabel digunakan untuk mendekripsi data tabel tersebut. Akun layanan BigQuery bersifat unik untuk setiap project. Untuk tugas yang menulis data ke tabel anonim yang dilindungi Cloud KMS, akun layanan project tugas tersebut digunakan.
Sebagai contoh, pertimbangkan tiga tabel yang dilindungi CMEK: table1
, table2
, dan
table3
. Untuk mengkueri data dari {project1.table1, project2.table2}
dengan
tabel tujuan {project3.table3}
:
- Gunakan akun layanan
project1
untukproject1.table1
- Gunakan akun layanan
project2
untukproject2.table2
- Gunakan akun layanan
project3
untukproject3.table3
Dengan cara apa BigQuery dapat menggunakan kunci Cloud KMS saya?
BigQuery menggunakan kunci Cloud KMS untuk mendekripsi data sebagai
respons terhadap kueri pengguna, misalnya,
tabledata.list
atau
jobs.insert
.
BigQuery juga dapat menggunakan kunci untuk tugas pengoptimalan penyimpanan dan pemeliharaan data, seperti konversi data ke format yang dioptimalkan untuk baca.
Library kriptografi apa yang digunakan?
BigQuery mengandalkan Cloud KMS untuk fungsi CMEK. Cloud KMS menggunakan Tink untuk enkripsi.
Bagaimana cara mendapatkan bantuan lebih lanjut?
Jika ada pertanyaan yang belum terjawab di sini, lihat dukungan BigQuery.
Pemecahan masalah terkait error
Berikut penjelasan tentang error umum dan mitigasi yang direkomendasikan.
Error | Rekomendasi |
---|---|
Berikan peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS | Akun layanan BigQuery yang terkait dengan project Anda tidak memiliki izin IAM yang memadai untuk beroperasi pada kunci Cloud KMS yang ditentukan. Ikuti petunjuk dalam kesalahan atau dalam dokumentasi ini untuk memberikan izin IAM yang tepat. |
Setelan enkripsi tabel yang ada tidak cocok dengan setelan enkripsi yang ditentukan dalam permintaan | Hal ini dapat terjadi dalam skenario saat tabel tujuan memiliki setelan
enkripsi yang tidak cocok dengan setelan enkripsi dalam permintaan Anda. Sebagai
mitigasi, gunakan disposisi tulis TRUNCATE untuk mengganti tabel,
atau tentukan tabel tujuan yang berbeda. |
Region ini tidak didukung | Region kunci Cloud KMS tidak cocok dengan region set data BigQuery dari tabel tujuan. Sebagai mitigasi, pilih kunci di region yang cocok dengan set data Anda, atau muat ke set data yang cocok dengan region kunci. |
Administrator mewajibkan Anda menentukan kunci enkripsi untuk kueri di project PROJECT_ID. | Kebijakan organisasi mencegah resource dibuat atau kueri dijalankan. Untuk mempelajari kebijakan ini lebih lanjut, lihat Mewajibkan CMEK untuk semua resource di project BigQuery. |
Administrator Anda mencegah penggunaan kunci KMS dari project KMS_PROJECT_ID untuk melindungi resource dalam project PROJECT_ID. | Kebijakan organisasi mencegah resource dibuat atau kueri dijalankan. Untuk mempelajari kebijakan ini lebih lanjut, lihat Membatasi kunci Cloud KMS untuk project BigQuery. |