Kunci enkripsi yang dikelola pelanggan (Customer-Managed Encryption Key/CMEK)
Secara default, semua data dalam penyimpanan di Firestore dienkripsi menggunakan enkripsi default Google. Firestore menangani dan mengelola enkripsi ini untuk Anda tanpa tindakan tambahan dari Anda.
Jika Anda memiliki persyaratan kepatuhan atau peraturan khusus terkait kunci yang melindungi data, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk Firestore. Alih-alih Google yang mengelola kunci enkripsi yang melindungi data Anda, database Firestore Anda dilindungi menggunakan kunci yang Anda kontrol dan kelola di Cloud Key Management Service (Cloud KMS).
Halaman ini menjelaskan CMEK untuk Firestore. Untuk mengetahui informasi selengkapnya tentang CMEK secara umum, termasuk waktu dan alasan mengaktifkannya, lihat dokumentasi Cloud KMS berikut:
- Kunci enkripsi yang dikelola pelanggan (Customer-Managed Encryption Key/CMEK)
- Praktik terbaik untuk menggunakan CMEK
Untuk mengetahui petunjuk tentang cara melakukan tugas terkait CMEK dengan Firestore, lihat Menggunakan CMEK.
Fitur
- Kontrol data: CMEK memungkinkan Anda mengelola kunci KMS. Anda dapat memutar, menonaktifkan, dan menghancurkan kunci yang digunakan untuk mengenkripsi data dalam penyimpanan di database Firestore.
- Performa: CMEK tidak memengaruhi SLA Firestore.
- Kemampuan audit: Jika Anda mengaktifkan logging audit untuk Cloud KMS, semua operasi pada kunci akan dicatat ke dalam log dan dapat dilihat di Cloud Logging.
- Batasan kebijakan organisasi: Anda dapat menggunakan batasan kebijakan organisasi CMEK untuk menentukan persyaratan kepatuhan enkripsi untuk database Firestore di organisasi Anda.
Harga
Cloud KMS mengenakan biaya untuk kunci dan operasi kriptografis apa pun yang dilakukan menggunakan kunci tersebut. Untuk mengetahui informasi selengkapnya, lihat harga Cloud KMS.
Anda ditagih untuk biaya operasi saat Firestore meminta kunci Cloud KMS untuk melakukan operasi enkripsi atau dekripsi. Operasi enkripsi/dekripsi oleh kunci yang dikelola pelanggan terjadi setiap 5 menit dan tidak disinkronkan dengan permintaan database. Biaya umumnya rendah, mengingat jumlah operasi kriptografi yang diharapkan dihasilkan oleh Firestore. Biaya untuk Cloud Audit Logs adalah biaya tambahan, tetapi juga diperkirakan umumnya rendah, mengingat jumlah operasi kriptografis yang diperkirakan.
Tidak ada biaya Firestore tambahan untuk menggunakan database yang dilindungi CMEK dan harga Firestore tetap berlaku.
Jika Anda mencabut kunci ke database, biaya penyimpanan akan ditagih berdasarkan ukuran hari terakhir kunci tersedia. Anda akan terus dikenai biaya penyimpanan dengan ukuran database tersebut hingga database dihapus atau kunci tersedia lagi.
Yang dilindungi dengan CMEK
Saat Anda membuat database Firestore yang dilindungi CMEK, kunci Cloud KMS Anda akan digunakan untuk melindungi data dalam penyimpanan. Hal ini mencakup data yang Anda simpan di disk atau flash drive, termasuk indeks dan cadangan. Beberapa pengecualian berlaku. Jenis data berikut dienkripsi dengan enkripsi default Google, bukan dengan kunci CMEK:
- Data dalam pengiriman atau dalam memori
- Metadata database
Cara penanganan status kunci yang tidak tersedia
Operasi enkripsi dan dekripsi tidak dikeluarkan pada setiap permintaan data. Sebagai gantinya, sistem Firestore akan melakukan polling Cloud KMS setiap 5 menit untuk memeriksa apakah kunci masih tersedia, lalu melakukan operasi enkripsi dan dekripsi jika kunci tersedia.
Jika sistem mendeteksi bahwa kunci tidak tersedia, dalam waktu 10
menit, setiap panggilan berikutnya ke database Firestore,
termasuk operasi baca, tulis, dan kueri, akan menampilkan error FAILED_PRECONDITION
dengan
pesan The customer-managed encryption key required by the requested
resource is not accessible
.
Jika database memiliki kebijakan time to live (TTL), dan jika waktu habis masa berlakunya terlampaui saat kunci tidak tersedia, penghapusan data oleh TTL akan tertunda hingga kunci diaktifkan kembali. Jika database memiliki operasi yang berjalan lama, operasi tersebut akan terpengaruh sebagai berikut:
- Operasi import atau ekspor data akan berhenti membuat
progres, dan ditandai sebagai
Failed
. Operasi yang gagal tidak akan dicoba ulang jika kunci diaktifkan kembali. - Operasi pembuatan indeks, dan operasi yang mengaktifkan kebijakan TTL baru akan berhenti membuat progres. Operasi yang dihentikan akan dicoba lagi jika kunci diaktifkan kembali.
Kunci dianggap tidak tersedia dalam situasi apa pun yang sengaja tidak mengizinkan Firestore mengakses kunci. Hal ini mencakup:
- Menonaktifkan atau menghancurkan versi kunci yang sedang digunakan. Harap berhati-hati saat menghancurkan versi kunci, karena tindakan ini dapat menyebabkan hilangnya data yang tidak dapat dipulihkan.
- Menghapus izin untuk mengakses kunci dari akun layanan Firestore.
Jika kunci diaktifkan kembali, operasi polling akan mendeteksi bahwa kunci tersedia lagi. Akses akan diaktifkan kembali, biasanya dalam beberapa menit, tetapi dalam kasus yang jarang terjadi, dapat memerlukan waktu hingga beberapa jam. Perhatikan bahwa beberapa operasi pada kunci Cloud KMS, seperti menonaktifkan atau menghancurkan kunci, dapat memerlukan waktu hingga 3 jam untuk diterapkan. Firestore tidak mendeteksi perubahan apa pun hingga perubahan tersebut diterapkan di Cloud KMS.
Pengaktifan kembali kunci melibatkan hal berikut, bergantung pada situasinya:
- Mengaktifkan kembali versi kunci yang dinonaktifkan.
- Memulihkan versi kunci yang dihancurkan. Sebelum dihancurkan secara permanen, versi kunci dijadwalkan untuk dihancurkan. Anda hanya dapat memulihkan kunci selama periode saat versi kunci dijadwalkan untuk dihancurkan. Anda tidak dapat memulihkan kunci yang telah dihancurkan secara permanen.
- Memberikan kembali izin agen layanan Firestore untuk mengakses kunci.
Pertimbangan rotasi kunci
Saat Anda merotasi kunci CMEK, Firestore akan mengenkripsi ulang database dengan kunci CMEK versi utama terbaru. Selama proses enkripsi ulang, kunci lama dan baru harus tetap tersedia. Setelah enkripsi ulang selesai, menonaktifkan atau menghapus kunci CMEK versi lama tidak akan menonaktifkan akses ke database karena dienkripsi dengan versi kunci utama yang baru.
Anda juga dapat melihat versi kunci yang digunakan untuk melindungi database. Untuk mengetahui informasi selengkapnya, lihat Melihat kunci yang digunakan.
Pertimbangan kunci eksternal
Saat Anda menggunakan kunci Cloud EKM, Google tidak memiliki kontrol atas ketersediaan kunci yang dikelola secara eksternal di sistem partner pengelolaan kunci eksternal.
Jika kunci yang dikelola secara eksternal tidak tersedia, Firestore akan terus mendukung operasi database lengkap menggunakan versi kunci yang di-cache, hingga satu jam.
Setelah satu jam, jika Firestore masih tidak dapat terhubung dengan Cloud KMS, Firestore akan mulai mengalihkan database ke offline sebagai tindakan perlindungan. Panggilan ke database akan gagal dengan error FAILED_PRECONDITION
yang menyertakan detail tambahan.
Lihat dokumentasi Cloud External Key Manager untuk mengetahui pertimbangan lainnya saat menggunakan kunci eksternal.
Pencadangan dan pemulihan
Cadangan menggunakan mekanisme enkripsi yang sama dengan database tempat Anda membuatnya. Saat membuat cadangan, database Firestore yang dilindungi CMEK akan meng-enkripsi cadangan dengan versi kunci utama yang digunakan pada saat pembuatan cadangan.
Firestore membuat cadangan pertama database CMEK setelah 24 jam berlalu sejak Anda mengaktifkan jadwal pencadangan.
Untuk informasi selengkapnya tentang pencadangan Firestore, lihat Mencadangkan dan memulihkan data.
Database yang dipulihkan dari cadangan menggunakan mekanisme enkripsi yang sama dengan cadangan secara default. Saat memulihkan database, Anda dapat menentukan jenis enkripsi yang berbeda dengan salah satu cara berikut:
- Memulihkan ke database CMEK dengan kunci yang baru ditentukan.
- Memulihkan ke database non-CMEK yang menggunakan enkripsi default Google.
- Pulihkan ke database yang menggunakan enkripsi yang sama dengan cadangan.
Untuk mengetahui informasi selengkapnya tentang cara memulihkan database Firestore dari cadangan, lihat Memulihkan data dari cadangan database. Untuk informasi selengkapnya tentang cara memulihkan database Firestore yang dilindungi CMEK dari cadangan, lihat Memulihkan database yang dilindungi CMEK.
Pelacakan tombol
Anda dapat menggunakan pelacakan kunci untuk melihat resource, misalnya, database Firestore, yang dilindungi kunci. Untuk informasi selengkapnya tentang pelacakan kunci, lihat Melihat penggunaan kunci.
Ketersediaan CMEK dan kunci
Jika kunci tidak tersedia atau dinonaktifkan, perhatikan perilaku berikut yang dapat terjadi di database yang mendukung CMEK:
- Anda dapat mengubah setelan pemulihan point-in-time (PITR) Firestore di database yang mengaktifkan CMEK meskipun kunci tidak tersedia karena setelan PITR adalah metadata database, yang tidak dienkripsi oleh CMEK.
- Anda dapat menghapus database CMEK yang memiliki kunci yang tidak tersedia.
- Saat Anda membuat database yang mengaktifkan CMEK, kunci yang dinonaktifkan tidak akan ditampilkan di daftar kunci yang tersedia di konsol Google Cloud. Jika Anda memasukkan kunci yang dinonaktifkan secara manual, proses pembuatan database akan gagal dengan error
FAILED_PRECONDITION
400.
Batasan
- Anda tidak dapat mengubah kunci untuk database yang dilindungi CMEK. Anda dapat memutar, mengaktifkan, dan menonaktifkan kunci.
- Database yang dilindungi CMEK hanya mendukung Key Visualizer untuk data entity dan dokumen, bukan untuk data indeks.
- Anda tidak dapat mengaktifkan CMEK di database yang ada. Anda hanya dapat mengaktifkan CMEK di database baru, dan Anda harus mengaktifkannya saat membuat database. Untuk memigrasikan data di database non-CMEK yang ada ke database yang dilindungi CMEK, ekspor data Anda, lalu impor data ke database baru yang dilindungi CMEK. Anda juga dapat memulihkan data dari database non-CMEK ke database CMEK.
- Firestore mendukung database yang dilindungi CMEK dalam jumlah terbatas.
- Kami tidak mendukung perlindungan CMEK dengan integrasi Cloud Functions (generasi ke-1). Jika Anda ingin memiliki perlindungan CMEK, gunakan Pemicu Firestore fungsi Cloud Run (generasi ke-2).