Menggunakan kunci enkripsi yang dikelola pelanggan

Panduan ini menjelaskan penggunaan CMEK untuk Dataform dan menjelaskan cara mengaktifkan enkripsi CMEK pada repositori Dataform.

Secara default, Dataform mengenkripsi konten pelanggan dalam penyimpanan. Dataform menangani enkripsi untuk Anda tanpa tindakan tambahan dari Anda. Opsi ini disebut enkripsi default Google.

Jika ingin mengontrol kunci enkripsi, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) di Cloud KMS dengan layanan terintegrasi CMEK, termasuk Dataform. Dengan menggunakan kunci Cloud KMS, Anda dapat mengontrol tingkat perlindungan, lokasi, jadwal rotasi, izin penggunaan dan akses, serta batas kriptografisnya. Dengan Cloud KMS, Anda juga dapat melacak penggunaan kunci, melihat log audit, dan mengontrol siklus proses kunci. Alih-alih Google yang memiliki dan mengelola kunci enkripsi kunci (KEK) simetris yang melindungi data Anda, Andalah yang mengontrol dan mengelola kunci ini di Cloud KMS.

Setelah Anda menyiapkan resource dengan CMEK, pengalaman mengakses resource Dataform mirip dengan menggunakan enkripsi default Google. Untuk mengetahui informasi selengkapnya tentang opsi enkripsi Anda, lihat Kunci enkripsi yang dikelola pelanggan (CMEK).

Enkripsi CMEK data repositori

Saat Anda menerapkan enkripsi CMEK ke repositori Dataform, semua data pelanggan yang dikelola Dataform di repositori tersebut dienkripsi saat tidak digunakan menggunakan kunci perlindungan CMEK yang ditetapkan untuk repositori. Data ini mencakup hal berikut:

  • Konten repositori Git dari repositori Dataform dan ruang kerjanya
  • Kueri SQL yang dikompilasi dan error kompilasi
  • Kueri SQL tersimpan dari tindakan alur kerja
  • Detail error tindakan alur kerja yang dijalankan

Dataform menggunakan kunci perlindungan CMEK dalam skenario berikut:

  • Selama setiap operasi yang memerlukan dekripsi data pelanggan dalam penyimpanan. Operasi ini mencakup, tetapi tidak terbatas pada hal berikut:
  • Selama setiap operasi yang memerlukan penyimpanan data pelanggan dalam penyimpanan. Operasi ini mencakup, tetapi tidak terbatas pada, hal berikut:

Dataform mengelola enkripsi data pelanggan yang hanya terkait dengan resource Dataform. Dataform tidak mengelola enkripsi data pelanggan yang dibuat di BigQuery melalui eksekusi alur kerja Dataform. Untuk mengenkripsi data yang dibuat dan disimpan di BigQuery, konfigurasi CMEK untuk BigQuery.

Kunci yang didukung

Dataform mendukung jenis kunci CMEK berikut:

Ketersediaan kunci bervariasi menurut jenis kunci dan wilayah. Untuk informasi selengkapnya tentang ketersediaan geografis kunci CMEK, lihat lokasi Cloud KMS.

Pembatasan

Dataform mendukung CMEK dengan batasan berikut:

  • Ukuran maksimum repositori terenkripsi CMEK adalah 512 MB.
  • Ukuran maksimum ruang kerja di repositori terenkripsi CMEK adalah 512 MB.
  • Anda tidak dapat menerapkan kunci perlindungan CMEK ke repositori setelah repositori dibuat. Anda hanya dapat menerapkan enkripsi CMEK selama pembuatan repositori.
  • Anda tidak dapat menghapus kunci perlindungan CMEK dari repositori.
  • Anda tidak dapat mengubah kunci perlindungan CMEK untuk repositori.
  • Jika Anda menetapkan kunci CMEK Dataform default untuk project Google Cloud, semua repositori baru yang dibuat di lokasi project Google Cloud harus dienkripsi dengan CMEK. Saat membuat repositori baru di lokasi project Google Cloud, Anda dapat menerapkan kunci CMEK Dataform default atau kunci CMEK lain, tetapi Anda tidak dapat menerapkan enkripsi default saat nonaktif.
  • Jika Anda mengubah nilai kunci CMEK Dataform default, nilai sebelumnya berlaku untuk repositori yang sudah ada, dan nilai yang diperbarui berlaku untuk repositori yang dibuat setelah perubahan.
  • Anda hanya dapat menetapkan satu kunci CMEK Dataform default per lokasi repositori project Google Cloud.
  • Kebijakan organisasi CMEK tidak tersedia.
  • Penggunaan kunci Cloud HSM dan Cloud EKM bergantung pada ketersediaan. Untuk mengetahui informasi selengkapnya tentang ketersediaan kunci di seluruh lokasi, lihat lokasi Cloud KMS.

Kuota Cloud KMS dan Dataform

Anda dapat menggunakan kunci Cloud HSM dan Cloud EKM dengan Dataform. Saat Anda menggunakan CMEK di Dataform, project Anda dapat memakai kuota permintaan kriptografis Cloud KMS. Misalnya, repositori Dataform yang dienkripsi CMEK dapat memakai kuota ini untuk setiap perubahan pada konten repositori. Operasi enkripsi dan dekripsi menggunakan kunci CMEK memengaruhi kuota Cloud KMS hanya jika Anda menggunakan kunci hardware (Cloud HSM) atau kunci eksternal (Cloud EKM). Untuk informasi selengkapnya, lihat kuota Cloud KMS.

Mengelola kunci

Gunakan Cloud KMS untuk semua operasi pengelolaan kunci. Dataform tidak dapat mendeteksi atau menindaklanjuti perubahan kunci apa pun hingga di-propagate oleh Cloud KMS. Beberapa operasi, seperti menonaktifkan atau menghancurkan kunci, dapat memerlukan waktu hingga tiga jam untuk diterapkan. Perubahan pada izin biasanya disebarkan jauh lebih cepat.

Setelah repositori dibuat, Dataform memanggil Cloud KMS untuk memastikan bahwa kunci masih valid selama setiap operasi pada data repositori terenkripsi.

Jika Dataform mendeteksi bahwa kunci Cloud KMS Anda telah dinonaktifkan atau dihancurkan, semua data yang disimpan di repositori yang sesuai tidak dapat diakses.

Jika panggilan oleh Dataform ke Cloud KMS mendeteksi bahwa kunci yang sebelumnya dinonaktifkan telah diaktifkan kembali, Dataform akan otomatis memulihkan akses.

Menggunakan kunci eksternal dengan Cloud EKM

Sebagai alternatif untuk menggunakan kunci yang berada di Cloud KMS, Anda dapat menggunakan kunci yang berada di partner pengelolaan kunci eksternal yang didukung. Untuk melakukannya, gunakan Cloud External Key Manager (Cloud EKM) untuk membuat dan mengelola kunci eksternal, yang merupakan pointer ke kunci yang berada di luar Google Cloud. Untuk informasi selengkapnya, lihat Cloud External Key Manager.

Setelah membuat kunci eksternal dengan Cloud EKM, Anda dapat menerapkannya ke repositori Dataform baru dengan memberikan ID kunci tersebut saat membuat repositori. Prosedur ini sama dengan menerapkan kunci Cloud KMS ke repositori baru.

Menggunakan kunci CMEK default Dataform

Untuk mengenkripsi beberapa repositori Dataform dengan kunci CMEK yang sama, Anda dapat menetapkan kunci CMEK Dataform default untuk project Google Cloud. Anda harus menentukan lokasi project Google Cloud untuk kunci CMEK Dataform default. Anda hanya dapat menetapkan satu kunci CMEK default per project Google Cloud.

Setelah Anda menetapkan kunci CMEK Dataform default, Dataform akan menerapkan kunci tersebut ke semua repositori baru yang dibuat di lokasi project Google Cloud secara default. Saat membuat repositori, Anda dapat menggunakan kunci default, atau memilih kunci CMEK yang berbeda.

Cara penanganan status kunci yang tidak tersedia

Dalam skenario yang jarang terjadi, seperti selama periode saat Cloud KMS tidak tersedia, Dataform mungkin tidak dapat mengambil status kunci Anda dari Cloud KMS.

Jika repositori Dataform Anda dilindungi oleh kunci yang diaktifkan pada saat Dataform tidak dapat berkomunikasi dengan Cloud KMS, data repositori terenkripsi tidak dapat diakses.

Data repositori terenkripsi tetap tidak dapat diakses hingga Dataform dapat terhubung kembali dengan Cloud KMS dan Cloud KMS merespons bahwa kunci tersebut aktif.

Sebaliknya, jika repositori Dataform Anda dilindungi oleh kunci yang dinonaktifkan pada saat Dataform pertama kali tidak dapat berkomunikasi dengan Cloud KMS, data repositori terenkripsi tetap tidak dapat diakses hingga dapat terhubung kembali ke Cloud KMS dan Anda telah mengaktifkan kembali kunci Anda.

Logging

Anda dapat mengaudit permintaan yang dikirim Dataform ke Cloud KMS atas nama Anda di Cloud Logging, jika Anda telah mengaktifkan logging audit untuk Cloud KMS API di project Anda. Entri log Cloud KMS ini dapat dilihat di Cloud Logging. Untuk informasi selengkapnya, lihat Melihat log.

Sebelum memulai

  • Tentukan apakah Anda akan menjalankan Dataform dan Cloud KMS di project yang berbeda, atau dalam project yang sama. Sebaiknya gunakan project terpisah untuk kontrol yang lebih besar atas izin. Untuk informasi tentang project ID dan nomor project Google Cloud, lihat Mengidentifikasi project.

  • Untuk project Google Cloud yang menjalankan Cloud KMS:

    1. Aktifkan Cloud Key Management Service API.
    2. Buat key ring dan kunci seperti yang dijelaskan dalam Membuat key ring dan kunci. Buat key ring di lokasi yang cocok dengan lokasi repositori Dataform Anda:
      • Repositori harus menggunakan kunci regional yang cocok. Misalnya, repositori di region asia-northeast3 harus dilindungi dengan kunci dari key ring yang terletak di asia-northeast3.
      • Region global tidak dapat digunakan dengan Dataform.
      Untuk mengetahui informasi selengkapnya tentang lokasi yang didukung untuk Dataform dan Cloud KMS, lihat Lokasi Cloud.

Mengaktifkan CMEK

Dataform dapat mengakses kunci atas nama Anda setelah Anda memberikan peran CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) Cloud KMS ke akun layanan Dataform default.

ID akun layanan Dataform default Anda memiliki format berikut:

service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com

Untuk memberikan peran CryptoKey Encrypter/Decrypter ke akun layanan Dataform default, ikuti langkah-langkah berikut:

Konsol

  1. Buka halaman Key Management di konsol Google Cloud.

    Buka halaman Key Management

  2. Klik nama key ring yang berisi kunci.

  3. Klik kotak centang untuk kunci enkripsi yang ingin Anda tambahi peran. Tab Izin akan terbuka.

  4. Klik Tambahkan anggota.

  5. Masukkan alamat email akun layanan

    • 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.
  6. Klik menu drop-down untuk Pilih peran, klik Cloud KMS, lalu klik peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS.

  7. Klik Simpan untuk menerapkan peran ke akun layanan.

gcloud

Anda dapat menggunakan Google Cloud CLI untuk menetapkan peran:

gcloud kms keys add-iam-policy-binding \
    --project=KMS_PROJECT_ID \
    --member serviceAccount:SERVICE_ACCOUNT \
    --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 KMS
  • SERVICE_ACCOUNT: alamat email akun layanan Dataform default Anda
  • KMS_KEY_LOCATION: nama lokasi kunci Cloud KMS Anda
  • KMS_KEY_RING: nama key ring untuk kunci Cloud KMS Anda
  • KMS_KEY: nama kunci untuk kunci Cloud KMS Anda

Menetapkan kunci CMEK Dataform default

Dengan menetapkan kunci CMEK Dataform default untuk project Google Cloud, Anda dapat mengenkripsi beberapa repositori dengan kunci CMEK yang sama. Untuk informasi selengkapnya, lihat Menggunakan kunci default untuk repositori Dataform.

Untuk menetapkan atau mengedit kunci CMEK default, panggil Dataform API dalam permintaan berikut:

curl -X PATCH \
-H "Content-Type: application/json" \
-d '{"defaultKmsKeyName":"projects/PROJECT_ID/locations/PROJECT_LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY"}' \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config

Ganti kode berikut:

  • KMS_KEY_RING: nama key ring kunci Cloud KMS Anda.
  • KMS_KEY: nama kunci Cloud KMS Anda.
  • PROJECT_ID: ID project Google Cloud Anda.
  • PROJECT_LOCATION: nama lokasi project Google Cloud Anda.

Menghapus kunci CMEK Dataform default

Untuk menghapus kunci CMEK Dataform default dari project Google Cloud Anda, panggil Dataform API dalam permintaan berikut:

curl -X PATCH \
-H "Content-Type: application/json" \
-d '{"defaultKmsKeyName":""}' \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud Anda.
  • PROJECT_LOCATION: nama lokasi project Google Cloud tempat Anda ingin menghapus setelan CMEK default.

Memeriksa apakah kunci CMEK Dataform default telah ditetapkan

Untuk memeriksa apakah kunci CMEK Dataform default ditetapkan untuk project Google Cloud Anda, panggil Dataform API dalam permintaan berikut:

curl -X GET \
-H "Content-Type: application/json" \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud Anda.
  • PROJECT_LOCATION: nama lokasi project Google Cloud Anda.

Menerapkan CMEK ke repositori

Anda dapat menerapkan perlindungan CMEK ke repositori Dataform selama pembuatan repositori.

Untuk menerapkan enkripsi CMEK ke repositori Dataform, pilih enkripsi dengan kunci CMEK Dataform default atau tentukan kunci Cloud KMS unik saat Anda membuat repositori. Untuk mengetahui petunjuknya, lihat Membuat repositori.

Anda tidak dapat mengubah mekanisme enkripsi repositori Dataform setelah repositori dibuat.

Untuk mengetahui informasi selengkapnya, lihat Pembatasan.

Langkah selanjutnya