Mengonfigurasi CMEK untuk bucket log

Dokumen ini memberikan petunjuk untuk mengonfigurasi kunci enkripsi yang dikelola pelanggan (CMEK) untuk log yang disimpan dalam bucket log. Dokumen ini juga menjelaskan cara mengelola kunci tersebut, dan batasan yang terkait dengan penggunaan CMEK.

Anda dapat mengonfigurasi CMEK sebagai setelan resource default untuk organisasi atau folder. Jika dikonfigurasi, Cloud Logging akan memastikan bahwa semua bucket log baru di organisasi atau folder dienkripsi dengan kunci yang dikelola pelanggan. Jika Anda tidak menyediakan kunci saat membuat bucket log, kunci default akan digunakan. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi CMEK untuk Cloud Logging.

Ringkasan

Secara default, Cloud Logging mengenkripsi konten pelanggan yang disimpan dalam penyimpanan. Data yang disimpan dalam bucket log oleh Logging dienkripsi menggunakan kunci enkripsi kunci, sebuah proses yang dikenal sebagai enkripsi envelope. Akses ke data logging memerlukan akses ke kunci enkripsi kunci tersebut, yang dikelola Google untuk Anda tanpa perlu tindakan apa pun.

Organisasi Anda mungkin memiliki persyaratan enkripsi lanjutan, terkait kepatuhan, atau peraturan yang tidak disediakan oleh enkripsi default kami. Untuk memenuhi persyaratan organisasi Anda, Anda dapat mengelola kunci Anda, bukannya Google yang mengelola kunci enkripsi yang melindungi data Anda.

Untuk mengetahui informasi spesifik tentang penggunaan CMEK, termasuk keuntungan dan batasan, lihat Kunci enkripsi yang dikelola pelanggan.

Untuk enkripsi simetris, praktik keamanan yang direkomendasikan adalah rotasi kunci secara berkala dan otomatis. Untuk mengetahui informasi selengkapnya, lihat Rotasi kunci.

Prasyarat

Selesaikan langkah berikut:

  1. Ada beberapa batasan saat menggunakan CMEK. Sebelum membuat bucket log dengan CMEK yang diaktifkan, tinjau Batasan.

  2. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

    gcloud init

    Panduan ini berisi petunjuk cara menggunakan Google Cloud CLI.

  3. Buat atau identifikasi project Google Cloud tempat Anda ingin menjalankan Cloud KMS.

  4. Untuk mendapatkan izin yang diperlukan untuk membuat kunci, minta administrator untuk memberi Anda peran IAM Admin Cloud KMS (roles/cloudkms.admin) pada project atau resource induk. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

  5. Pastikan Anda memiliki izin Cloud Logging berikut:

    • logging.settings.get
    • logging.buckets.get
    • logging.buckets.list
    • logging.buckets.create
    • logging.buckets.update
  6. Aktifkan Cloud KMS API untuk project Google Cloud yang menjalankan Cloud KMS.

  7. Buat key ring dan kunci untuk project Google Cloud yang menjalankan Cloud KMS.

    Untuk menyelaraskan domain yang gagal, Anda harus menggunakan key ring yang lokasinya cocok dengan cakupan regional data Anda:

    Anda tidak dapat mengaktifkan CMEK untuk bucket log yang dibuat di region global.

  8. Identifikasi nilai untuk variabel-variabel berikut:

    • BUCKET_ID adalah ID numerik unik dari bucket Logging yang akan dibuat.
    • BUCKET_PROJECT_ID adalah nama project Google Cloud yang berisi bucket log baru.
    • KMS_PROJECT_ID adalah ID alfanumerik unik, yang terdiri dari nama project Google Cloud Anda dan nomor yang ditetapkan secara acak, dari project Google Cloud yang menjalankan Cloud KMS.
    • KMS_KEY_LOCATION adalah region kunci Cloud KMS.
    • KMS_KEY_RING adalah nama key ring Cloud KMS.
    • KMS_KEY_NAME dengan nama kunci Cloud KMS. Formatnya seperti ini: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY

    Untuk mengetahui informasi tentang cara menemukan ID resource, lihat Mengidentifikasi project.

Mengaktifkan CMEK

Setelah Anda menyelesaikan langkah-langkah prasyarat, ikuti petunjuk ini guna mengaktifkan CMEK untuk masing-masing bucket log.

Menentukan ID akun layanan

Untuk menentukan ID akun layanan yang terkait dengan resource Google Cloud tempat CMEK akan diterapkan, lakukan hal berikut:

  1. Jalankan perintah gcloud logging settings describe berikut:

    gcloud logging settings describe --project=BUCKET_PROJECT_ID
    

    Perintah sebelumnya menghasilkan akun layanan untuk resource yang ditentukan, jika belum ada, dan menampilkan ID akun layanan tersebut di kolom kmsServiceAccountId:

    kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
    loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
    name: projects/BUCKET_PROJECT_ID/settings
    

    Kolom kmsServiceAccountId mencantumkan akun layanan yang digunakan oleh Cloud Logging untuk memanggil Cloud Key Management Service. Format kolom KMS_SERVICE_ACCT_NAME adalah service-PROJECT_NUMBER atau cmek-pPROJECT_NUMBER.

  2. Jika kolom KMS_SERVICE_ACCT_NAME memiliki format cmek-pPROJECT_NUMBER, dan jika Anda menggunakan Kontrol Layanan VPC atau mengaktifkan berbagi yang dibatasi domain, tentukan apakah Anda perlu memigrasikan akun layanan CMEK Anda. Untuk mengetahui informasi tentang kapan Anda perlu melakukan migrasi dan langkah-langkah untuk melakukan migrasi, lihat Memecahkan masalah Kontrol Layanan VPC dan berbagi yang dibatasi domain.

Menetapkan peran Pengenkripsi/Pendekripsi

Saat Anda mengonfigurasi CMEK di level bucket log, beri akun layanan tersebut izin untuk menggunakan Cloud KMS Anda dengan menetapkan peran Encrypter/Decrypter Cloud KMS Encrypter ke akun layanan yang diidentifikasi oleh kolom kmsServiceAccountId:

gcloud kms keys add-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY_NAME

Tetapkan variabel dalam perintah sebelumnya sebagai berikut:

  • Ganti KMS_SERVICE_ACCT_NAME dengan nilai kmsServiceAccountId yang Anda tentukan di langkah sebelumnya.

  • Ganti variabel lain dengan nilai yang Anda tentukan dalam langkah-langkah prasyarat.

Membuat bucket log dan memberikan kunci Cloud KMS

Untuk membuat bucket log dan mengaktifkan CMEK untuk bucket log, jalankan perintah gcloud logging buckets create berikut:

gcloud logging buckets create BUCKET_ID \
--location=LOCATION \
--cmek-kms-key-name=KMS_KEY_NAME

Memverifikasi pengaktifan kunci

Untuk memverifikasi bahwa Anda telah berhasil membuat bucket log dengan CMEK yang diaktifkan, jalankan perintah berikut:

gcloud logging buckets list --project=BUCKET_PROJECT_ID

Dalam output berbentuk tabel, Anda akan melihat kolom berlabel CMEK. Jika nilai kolom CMEK adalah TRUE, CMEK akan diaktifkan untuk bucket log.

Untuk melihat detail bucket log tertentu, termasuk detail kuncinya, jalankan perintah ini:

gcloud logging buckets describe BUCKET_ID

Mengelola kunci Cloud KMS

Bagian berikut menjelaskan cara mengupdate bucket log agar dapat menggunakan versi kunci utama terbaru dari kunci Cloud KMS. Panduan ini juga menjelaskan cara mengubah, mencabut akses, dan menonaktifkan kunci Cloud KMS Anda.

Merotasi kunci Cloud KMS Anda

Saat membuat kunci Cloud KMS, Anda dapat mengonfigurasi periode rotasi. Anda juga dapat merotasi kunci Cloud KMS secara manual. Setiap kali kunci dirotasi, versi baru untuk kunci tersebut akan dibuat.

Jika Anda merotasi kunci Cloud KMS, versi kunci baru hanya berlaku untuk bucket log yang dibuat setelah rotasi kunci. Jika kunci digunakan oleh bucket log yang sudah ada, merotasi kunci tidak akan mengubah cara bucket log melindungi datanya.

Misalnya, Anda membuat bucket log dan mengaktifkan CMEK, lalu merotasi kunci Cloud KMS. Bucket log yang Anda buat tidak menggunakan versi kunci baru. Sebagai gantinya, bucket log akan terus melindungi datanya dengan versi kunci yang ditandai sebagai utama saat bucket log dibuat.

Untuk mengupdate bucket log agar menggunakan versi kunci utama terbaru dari kunci Cloud KMS, lakukan hal berikut:

  1. Identifikasi kunci Cloud KMS saat ini untuk bucket log. Untuk mengetahui informasi selengkapnya, lihat Memverifikasi pengaktifan kunci.
  2. Identifikasi kunci Cloud KMS lain yang dapat Anda gunakan. Jika key ring hanya memiliki satu kunci, Buat kunci.
  3. Ubah kunci Cloud KMS untuk bucket log ke kunci Cloud KMS yang dibuat di langkah sebelumnya.
  4. Ubah kunci Cloud KMS untuk bucket log ke kunci Cloud KMS asli.

Mengubah kunci Cloud KMS

Untuk mengubah kunci Cloud KMS yang terkait dengan bucket log Anda, buat kunci dan perbarui setelan CMEK untuk bucket log:

gcloud logging buckets update BUCKET_ID --cmek-kms-key-name=NEW_KMS_KEY_NAME

Mencabut akses ke kunci Cloud KMS

Untuk mencabut akses Logging ke kunci Cloud KMS kapan saja, hapus izin IAM akun layanan yang dikonfigurasi untuk kunci tersebut.

Jika akses Logging ke suatu kunci dihapus, diperlukan waktu hingga satu jam agar perubahan diterapkan.

Jika Anda memiliki set data BigQuery tertaut, BigQuery tidak dapat menggunakan akses ini untuk menerapkan kunci ke tabel BigQuery baru. Jika Anda ingin menggunakan kunci di tabel BigQuery yang tidak tertaut ke Logging, ikuti dokumentasi BigQuery untuk melakukannya. Jika Anda mencabut akses Logging ke sebuah kunci dan jika Anda memiliki set data BigQuery tertaut, berarti Anda juga akan mencabut akses BigQuery ke kunci yang sama.

Anda tidak dapat mencabut akses BigQuery ke kunci set data yang ditautkan sekaligus mempertahankan akses Logging.

Untuk mengetahui informasi selengkapnya tentang dampak pencabutan akses, lihat Pembatasan.

Untuk menghapus akses Logging ke kunci, jalankan perintah berikut:

gcloud kms keys remove-iam-policy-binding \
--project=KMS_PROJECT_ID \
--member serviceAccount:KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING \
KMS_KEY_NAME

Batasan

Berikut adalah batasan umum.

CMEK menonaktifkan Error Reporting

Jika Anda ingin menggunakan Error Reporting, jangan aktifkan kunci enkripsi yang dikelola pelanggan (CMEK) di bucket log Anda. Untuk informasi selengkapnya, lihat Pemecahan masalah.

CMEK tidak dapat dihapus dari bucket log

Anda tidak dapat mengonfigurasi ulang bucket log untuk mengubah atau menghapus CMEK.

Penurunan karena tidak tersedianya kunci Cloud KMS

Kunci Cloud KMS dianggap tersedia dan dapat diakses oleh Logging jika kedua hal berikut berlaku:

  • Kunci diaktifkan.
  • Akun layanan Logging memiliki izin enkripsi dan dekripsi pada kunci tersebut.

Logging sangat merekomendasikan untuk memastikan bahwa setiap kunci dikonfigurasi dengan benar dan selalu tersedia.

Kerugian pemulihan dari bencana (disaster recovery)

Jika ada kegagalan kritis di penyimpanan utama Cloud Logging, Logging akan mencerminkan data logging ke file pemulihan dari bencana (disaster recovery). Jika CMEK diaktifkan untuk resource, seperti organisasi Google Cloud, log yang termasuk dalam resource tersebut dilindungi oleh kunci CMEK yang dikonfigurasi. Jika kunci CMEK tidak dapat diakses, file pemulihan dari bencana (disaster recovery) tidak dapat ditulis untuk resource tersebut.

Kehilangan file pemulihan dari bencana tidak memengaruhi operasi logging normal. Namun, jika terjadi bencana penyimpanan, Cloud Logging mungkin tidak dapat memulihkan log dari resource yang CMEK-nya tidak dikonfigurasi dengan benar.

Batasan dukungan

Cloud Customer Care tidak dapat membaca log resource Anda jika kuncinya tidak dikonfigurasi dengan benar atau menjadi tidak tersedia.

Performa kueri mengalami penurunan

Jika kunci enkripsi yang dikelola pelanggan tidak dapat diakses, Cloud Logging akan terus mengenkripsi data Anda dan menyimpan data di bucket log. Namun, Cloud Logging tidak dapat melakukan pengoptimalan latar belakang pada data ini. Jika akses kunci dipulihkan, data akan tersedia; tetapi, pada awalnya data tersebut disimpan dalam keadaan yang tidak dioptimalkan dan performa kueri mungkin akan terpengaruh.

Penurunan karena ketidaktersediaan kunci Cloud EKM

Saat Anda menggunakan kunci Cloud EKM, Google tidak memiliki kontrol atas ketersediaan kunci yang dikelola secara eksternal dalam sistem partner pengelolaan kunci eksternal. Untuk CMEK level bucket, jika kunci yang dikelola secara eksternal tidak tersedia, Cloud Logging akan terus menyimpan log di bucket log, tetapi pengguna tidak dapat mengakses log tersebut.

Untuk pertimbangan lainnya dan kemungkinan alternatif, saat menggunakan kunci eksternal, lihat dokumentasi Cloud External Key Manager.

Regional

Saat membuat bucket log dan mengaktifkan CMEK, Anda harus menggunakan kunci yang region-nya cocok dengan cakupan regional data Anda. Anda tidak dapat mengonfigurasi CMEK untuk bucket log yang dibuat di region global.

Ketersediaan library klien

Library klien logging tidak menyediakan metode untuk mengonfigurasi CMEK.

Kuota

Untuk mengetahui detail tentang batas penggunaan Logging, lihat Kuota dan batas.

Memecahkan masalah error konfigurasi

Untuk mengetahui informasi tentang cara memecahkan masalah error konfigurasi CMEK, lihat Memecahkan masalah error setelan organisasi dan CMEK.