Pengantar
Penyimpanan dan enkripsi data pada skala Google memerlukan penggunaan key management service kriptografis terpusat dengan beberapa lapisan kunci untuk data terenkripsi. Contoh beberapa lapisan kunci adalah enkripsi amplop, yang merupakan proses mengenkripsi kunci dengan kunci lain.
Anda dapat mengenkripsi data di lapisan aplikasi, yang bertanggung jawab untuk menampilkan data kepada pengguna, dan lapisan penyimpanan, yang menyediakan penyimpanan fisik data.
Secara default, di lapisan penyimpanan, Google Cloud mengenkripsi konten pelanggan yang disimpan dalam penyimpanan menggunakan enkripsi amplop, dengan key management service internal Google sebagai keystore pusat. Jika Anda menyimpan dan mengenkripsi data sendiri, Anda dapat menggunakan Cloud Key Management Service sebagai keystore pusat di lapisan aplikasi, yang merupakan fokus topik ini.
Cloud KMS menyimpan kunci dalam hierarki kunci yang dirancang untuk memudahkan, dengan akses ke resource dalam hierarki kunci yang diatur oleh Identity and Access Management. Berikut adalah tingkat utama hierarki kunci Cloud KMS:
Cari tahu hierarki kunci lebih lanjut di hierarki objek.
Kunci enkripsi data
Kunci yang digunakan untuk mengenkripsi data itu sendiri disebut kunci enkripsi data (DEK).
Berikut adalah praktik terbaik untuk mengelola DEK:
- Buat DEK secara lokal.
- Saat disimpan, selalu pastikan DEK dienkripsi saat tidak digunakan.
- Untuk memudahkan akses, simpan DEK di dekat data yang dienkripsi.
- Buat DEK baru setiap kali Anda menulis data. Artinya, Anda tidak perlu memutar DEK.
- Jangan gunakan DEK yang sama untuk mengenkripsi data dari dua pengguna yang berbeda.
- Gunakan algoritma yang kuat seperti Advanced Encryption Standard (AES) 256-bit dalam Galois Counter Mode (GCM).
Kunci enkripsi kunci
DEK dienkripsi (juga dikenal sebagai dibungkus) oleh kunci enkripsi kunci (KEK). Proses mengenkripsi kunci dengan kunci lain dikenal sebagai enkripsi envelope.
Berikut adalah praktik terbaik untuk mengelola KEK:
Menyimpan KEK secara terpusat.
Tetapkan tingkat perincian DEK yang dienkripsi berdasarkan kasus penggunaannya. Misalnya, pertimbangkan workload yang memerlukan beberapa DEK untuk mengenkripsi potongan data workload. Anda dapat menggunakan satu KEK untuk menggabungkan semua DEK yang bertanggung jawab atas enkripsi workload tersebut.
Rotasi kunci secara rutin, dan juga setelah insiden yang dicurigai. Untuk mempelajari lebih lanjut, lihat rotasi kunci.
Menyeimbangkan DEK dan KEK
Dengan jumlah KEK yang lebih sedikit daripada DEK, dan penggunaan key management service terpusat, penyimpanan dan enkripsi data pada skala yang lebih besar menjadi lebih mudah dikelola. Layanan kunci utama juga merupakan titik tunggal untuk mengaudit dan membatasi akses data dengan lebih mudah.
Bergantung pada situasi Anda, dan volume data yang dienkripsi, Anda dapat memilih untuk menggunakan model serupa. Satu KEK dapat digunakan untuk melindungi banyak DEK; model ini memungkinkan setiap objek data memiliki DEK-nya sendiri tanpa meningkatkan volume kunci yang disimpan di layanan pengelolaan kunci pusat secara besar-besaran.
Cloud Key Management Service dirancang untuk mengelola KEK, sehingga ukuran input data maksimum untuk fungsi Encrypt
dan Decrypt
adalah 64 KiB. Namun, untuk data yang Anda
ketahui tidak akan mendekati batas tersebut, Anda dapat menggunakan Cloud KMS untuk
mengenkripsi dan mendekripsi data secara langsung.
Cara mengenkripsi data menggunakan enkripsi amplop
Proses mengenkripsi data adalah membuat DEK secara lokal, mengenkripsi data dengan DEK, menggunakan KEK untuk menggabungkan DEK, lalu menyimpan data terenkripsi dan DEK gabungan. KEK tidak pernah keluar dari Cloud KMS.
Untuk mengenkripsi data menggunakan enkripsi amplop:
Buat DEK secara lokal. Anda dapat melakukannya dengan library open source seperti OpenSSL, yang menentukan jenis cipher dan sandi untuk membuat kunci. Anda juga dapat menentukan salt dan ringkasan yang akan digunakan, jika diinginkan.
Gunakan DEK ini secara lokal untuk mengenkripsi data Anda.
Misalnya, Anda dapat menggunakan OpenSSL seperti yang ditunjukkan dalam contoh mengenkripsi pesan. Untuk praktik terbaik, gunakan cipher Advanced Encryption Standard (AES-256) 256-bit dalam Galois Counter Mode (GCM).
Buat kunci baru di Cloud KMS, atau gunakan kunci yang ada, yang akan bertindak sebagai KEK. Gunakan kunci ini untuk mengenkripsi (memberikan lapisan) DEK.
Menyimpan data terenkripsi dan DEK yang digabungkan.
Cara mendekripsi data menggunakan enkripsi amplop
Proses mendekripsi data adalah mengambil data terenkripsi dan DEK gabungan, mengidentifikasi KEK yang menggabungkan DEK, menggunakan KEK untuk membuka DEK, lalu menggunakan DEK yang tidak digabungkan untuk mendekripsi data. KEK tidak pernah keluar dari Cloud KMS.
Untuk mendekripsi data menggunakan enkripsi amplop:
Mengambil data terenkripsi dan DEK gabungan.
Gunakan kunci yang disimpan di Cloud KMS untuk memisahkan DEK terenkripsi.
Gunakan DEK teks biasa untuk mendekripsi data terenkripsi. Jika menggunakan OpenSSL seperti sebelumnya, lihat contoh mendekripsi pesan.
Untuk contoh kode yang menunjukkan cara mengenkripsi dan mendekripsi dengan enkripsi envelope, lihat Enkripsi sisi klien dengan Tink dan Cloud KMS.
Integrasi dengan layanan Google Cloud
Beberapa produk Google Cloud terintegrasi dengan Cloud KMS untuk mendukung fungsi Kunci Enkripsi yang Dikelola Pelanggan (CMEK). CMEK dengan Cloud KMS menambahkan lapisan perlindungan tambahan untuk data Anda, memberi Anda kontrol atas kunci enkripsi, dan memanfaatkan manfaat pengelolaan kunci Cloud KMS. Lihat Menggunakan Cloud KMS dengan layanan lainnya untuk melihat daftar lengkap produk yang mendukung CMEK.
Opsi lain untuk layanan Google Cloud
Untuk data yang disimpan di produk Google Cloud yang tidak mendukung CMEK, Anda dapat menerapkan enkripsi lapisan aplikasi Anda sendiri. Hal ini memerlukan penerapan enkripsi amplop Anda sendiri seperti yang dijelaskan di atas, sehingga Anda menyimpan data yang dienkripsi secara lokal di Google Cloud. Ini juga cara Anda dapat menggunakan Cloud KMS untuk mengenkripsi data yang Anda simpan di penyedia layanan cloud lain atau di lokasi Anda.
Selain mendukung CMEK, produk berikut mendukung fungsi Kunci Enkripsi yang Disediakan Pelanggan (CSEK).
Produk | Topik CSEK |
---|---|
Cloud Storage | Kunci enkripsi yang disediakan pelanggan |
Compute Engine | Mengenkripsi disk dengan kunci enkripsi yang disediakan pelanggan |
Dengan CSEK, Anda menyediakan kunci AES-256 Anda sendiri untuk berfungsi sebagai KEK, dan kunci Anda melindungi DEK yang melindungi data Anda. Kunci CSEK Anda dilindungi oleh lapisan perlindungan tambahan, menggunakan kunci Cloud KMS.
Setelah dapat mengimpor kunci ke Cloud KMS, Anda dapat mengimpor kunci dan menggunakannya dengan layanan yang mengaktifkan CMEK, bukan mengandalkan CSEK.