Pengantar
Untuk menyimpan dan mengenkripsi data dalam skala Google, Anda harus menggunakan key management service kriptografis terpusat dengan banyak lapisan kunci untuk data terenkripsi. Contoh beberapa lapisan kunci adalah enkripsi envelope, yang merupakan proses mengenkripsi kunci dengan kunci lain.
Anda dapat mengenkripsi data pada lapisan aplikasi, yang bertanggung jawab untuk menampilkan data kepada pengguna, dan lapisan penyimpanan, yang menyediakan penyimpanan data secara fisik.
Secara default, pada lapisan penyimpanan, Google Cloud mengenkripsi konten pelanggan yang tersimpan dalam penyimpanan menggunakan enkripsi envelope, 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 level utama hierarki kunci Cloud KMS:
Cari tahu selengkapnya tentang hierarki kunci di hierarki objek.
Kunci enkripsi data
Kunci yang digunakan untuk mengenkripsi data itu sendiri disebut kunci enkripsi data (DEK).
Berikut praktik terbaik untuk mengelola DEK:
- Membuat DEK secara lokal.
- Saat disimpan, selalu pastikan DEK terenkripsi dalam penyimpanan.
- Agar mudah diakses, simpan DEK di dekat data yang dienkripsinya.
- Membuat DEK baru setiap kali Anda menulis data. Ini berarti Anda tidak perlu memutar DEK.
- Jangan gunakan DEK yang sama untuk mengenkripsi data dari dua pengguna yang berbeda.
- Gunakan algoritme yang kuat seperti Advanced Encryption Standard (AES) 256 bit di Galois Counter Mode (GCM).
Kunci enkripsi kunci
DEK dienkripsi (juga dikenal sebagai wrapped) oleh kunci enkripsi kunci (KEK). Proses enkripsi kunci dengan kunci lain dikenal sebagai enkripsi envelope.
Berikut adalah praktik terbaik untuk mengelola KEK:
Simpan KEK secara terpusat.
Tetapkan tingkat perincian DEK yang dienkripsi berdasarkan kasus penggunaannya. Misalnya, pertimbangkan beban kerja 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.
Ganti kunci secara teratur, dan juga setelah dugaan insiden. Untuk mempelajari lebih lanjut, lihat rotasi kunci.
Menyeimbangkan DEK dan KEK
Memiliki jumlah KEK yang lebih sedikit daripada DEK dan penggunaan key management service terpusat membuat penyimpanan dan enkripsi data dalam skala besar menjadi lebih mudah dikelola. Layanan kunci enkripsi terpusat 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 mengizinkan setiap objek data untuk memiliki DEK-nya sendiri tanpa meningkatkan volume kunci yang disimpan dalam key management service pusat.
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 diketahui tidak akan mendekati batas tersebut, Anda dapat menggunakan Cloud KMS untuk mengenkripsi dan mendekripsi data secara langsung.
Cara mengenkripsi data menggunakan enkripsi envelope
Proses enkripsi data adalah menghasilkan DEK secara lokal, mengenkripsi data dengan DEK, menggunakan KEK untuk menggabungkan DEK, lalu menyimpan data terenkripsi dan DEK yang digabungkan. KEK tidak pernah keluar dari Cloud KMS.
Untuk mengenkripsi data menggunakan enkripsi envelope:
Membuat DEK secara lokal. Anda dapat melakukannya dengan library open source seperti OpenSSL, dengan 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.
Sebagai contoh, Anda dapat menggunakan OpenSSL seperti ditunjukkan dalam contoh mengenkripsi pesan. Untuk praktik terbaik, gunakan cipher Advanced Encryption Standard (AES-256) 256 bit di Galois Counter Mode (GCM).
Buat kunci baru di Cloud KMS, atau gunakan kunci yang sudah ada, yang akan berfungsi sebagai KEK. Gunakan kunci ini untuk mengenkripsi (menggabungkan) DEK.
Menyimpan data terenkripsi dan DEK yang digabungkan.
Cara mendekripsi data menggunakan enkripsi envelope
Proses mendekripsi data adalah mengambil data terenkripsi dan DEK yang digabungkan, mengidentifikasi KEK yang menggabungkan DEK, menggunakan KEK untuk membuka DEK, lalu menggunakan DEK yang sudah dibuka untuk mendekripsi data. KEK tidak pernah keluar dari Cloud KMS.
Untuk mendekripsi data menggunakan enkripsi envelope:
Ambil data terenkripsi dan DEK yang digabungkan.
Gunakan kunci yang disimpan di Cloud KMS untuk membuka DEK yang dienkripsi.
Menggunakan DEK teks biasa untuk mendekripsi data yang dienkripsi. Jika sebelumnya Anda menggunakan OpenSSL, lihat contoh mendekripsi pesan.
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, memberikan kontrol atas kunci enkripsi, dan memanfaatkan manfaat pengelolaan kunci Cloud KMS. Lihat Menggunakan Cloud KMS dengan layanan lain untuk melihat daftar lengkap produk yang mendukung CMEK.
Opsi lain untuk layanan Google Cloud
Untuk data yang disimpan dalam produk Google Cloud yang tidak mendukung CMEK, Anda dapat menerapkan enkripsi lapisan aplikasi Anda sendiri. Hal ini memerlukan penerapan enkripsi envelope Anda sendiri seperti yang dijelaskan di atas, sehingga Anda menyimpan data yang dienkripsi secara lokal di Google Cloud. Berikut cara menggunakan Cloud KMS untuk mengenkripsi data yang Anda simpan di penyedia layanan cloud lain atau di infrastruktur lokal.
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 digunakan 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 mendukung CMEK, bukan mengandalkan CSEK.