Tentang kunci enkripsi yang dikelola pelanggan (CMEK)

Dokumen ini menjelaskan cara menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) di Cloud Key Management Service (Cloud KMS) untuk cluster Anda di Memorystore untuk Cluster Redis. Dokumen ini juga menguraikan data mana yang dienkripsi dalam penyimpanan persisten dan perilaku cluster Anda selama peristiwa siklus proses utama.

CMEK memungkinkan Anda mengontrol kunci kriptografi yang melindungi data tersimpan Anda. Dengan mengelola kunci Anda sendiri di Cloud KMS, Anda akan mendapatkan kontrol yang lebih besar atas akses, rotasi, dan penggunaan kunci, yang membantu Anda memenuhi persyaratan kepatuhan dan peraturan yang ketat.

Menerapkan CMEK memberikan lapisan keamanan dan kontrol tambahan atas data persisten Anda, seperti cadangan dan file persistensi. Anda hanya dapat mengaktifkan CMEK di cluster baru. Anda tidak dapat menerapkan CMEK ke cluster yang sudah ada.

Siapa yang sebaiknya menggunakan CMEK?

CMEK ditujukan untuk organisasi yang memiliki data sensitif atau teregulasi, dan memerlukan kontrol atas kunci enkripsi mereka sendiri. Untuk mengetahui informasi selengkapnya tentang apakah akan menggunakan CMEK untuk mengenkripsi data ini, lihat Menentukan apakah akan menggunakan CMEK.

Enkripsi yang dikelola pelanggan

Dengan CMEK, Anda dapat menggunakan kunci kriptografis Anda untuk melindungi data tersimpan di cluster. Untuk mengenkripsi data ini, Memorystore untuk Redis Cluster menggunakan kunci enkripsi data (DEK) yang dikelola Google dan kunci enkripsi kunci (KEK) yang dikelola pelanggan.

Anda dapat memiliki tingkat enkripsi berikut:

  • Enkripsi DEK: DEK mengenkripsi data di Memorystore for Redis Cluster.
  • Enkripsi KEK: KEK mengenkripsi DEK.

Memorystore for Redis Cluster menggunakan KEK untuk mengenkripsi DEK, dan menggunakan DEK untuk mengenkripsi data yang disimpan. Jika Anda menggunakan CMEK, Anda dapat mengelola KEK yang mengenkripsi DEK di cluster Anda.

Diagram berikut menunjukkan cara cluster menggunakan CMEK untuk mengenkripsi data. Data yang diupload ke infrastruktur penyimpanan Google dibagi menjadi beberapa potongan, dan setiap potongan dienkripsi dengan DEK-nya sendiri. Cloud KMS menyediakan KEK untuk mengenkripsi DEK, dan infrastruktur penyimpanan Google mendistribusikan potongan data terenkripsi dan DEK terenkripsi di seluruh sistem.

Data diupload ke infrastruktur penyimpanan Google dan dibagi menjadi beberapa bagian. Setiap potongan dienkripsi dengan DEK-nya sendiri. Kemudian, DEK dienkripsi menggunakan KEK yang diambil dari Cloud KMS. Potongan terenkripsi dan DEK terenkripsi didistribusikan ke seluruh infrastruktur penyimpanan.

Diagram berikut menunjukkan cara Memorystore for Redis Cluster mendekripsi data yang dienkripsi dengan CMEK. Untuk mengakses data terenkripsi ini, Memorystore for Redis Cluster mengirim permintaan ke Cloud KMS, yang mengelola KEK, untuk mendekripsi DEK. Kemudian, Cloud KMS akan menampilkan DEK yang telah didekripsi, yang digunakan cluster untuk mendekripsi data yang tersimpan.

Potongan data dienkripsi dengan DEK dan disimpan dengan DEK terenkripsi. Permintaan untuk mendekripsi DEK dikirim ke Cloud KMS, yang menyimpan KEK. Cloud KMS menampilkan DEK yang telah didekripsi.

Data mana yang dienkripsi menggunakan CMEK?

CMEK mengenkripsi jenis data pelanggan berikut yang disimpan di penyimpanan persisten:

  • Pencadangan: pencadangan memungkinkan Anda memulihkan data ke titik waktu tertentu, serta mengekspor dan menganalisisnya. Pencadangan juga berguna untuk pemulihan dari bencana, migrasi data, berbagi data, dan skenario kepatuhan.
  • Persistensi: Memorystore for Redis Cluster mendukung dua jenis persistensi:
    • Persistensi RDB: Fitur database Redis (RDB) melindungi data Anda dengan menyimpan snapshot data Anda di penyimpanan yang tahan lama.
    • Persistensi AOF: Fitur ini memprioritaskan ketahanan data. Redis menyimpan data secara tahan lama dengan mencatat setiap perintah tulis ke file log yang disebut File Hanya Tambah (AOF). Jika terjadi kegagalan atau mulai ulang sistem, server akan memutar ulang perintah file AOF secara berurutan untuk memulihkan data Anda.
  • Metadata yang terkait dengan fitur keamanan seperti autentikasi dasar berbasis token dan enkripsi dalam pengiriman. Untuk mengetahui informasi selengkapnya, lihat Mengamankan akses ke cluster Anda menggunakan autentikasi dasar berbasis token dan Tentang enkripsi dalam transit.

Komponen CMEK

Bagian berikut menjelaskan persyaratan dan perilaku akun layanan, kunci kriptografi, versi kunci, dan kebijakan organisasi yang membentuk arsitektur CMEK Anda.

Akun layanan

Untuk membuat cluster yang mendukung CMEK, Anda harus memberikan peran roles/cloudkms.cryptoKeyEncrypterDecrypter ke akun layanan Memorystore for Redis Cluster yang menggunakan format berikut:

service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com

Dengan memberikan izin ini, akun layanan dapat meminta akses kunci dari Cloud KMS.

Kunci

Di Cloud KMS, Anda perlu membuat key ring, lalu membuat kunci kriptografis yang menggunakan algoritma enkripsi simetris. Saat membuat cluster, Anda memilih kunci ini untuk mengenkripsi cluster. Anda dapat membuat satu project untuk kunci dan cluster, atau project yang berbeda untuk masing-masing kunci dan cluster.

CMEK tersedia di semua lokasi cluster. Anda harus membuat key ring dan kunci di region yang sama dengan tempat Anda ingin membuat cluster. Untuk cluster multi-region, Anda harus menyetel key ring dan kunci ke lokasi yang sama dengan cluster. Jika region atau lokasi tidak cocok, permintaan untuk membuat cluster akan gagal.

Untuk ID resource kunci, CMEK menggunakan format berikut:

projects/CMEK_ENABLED_PROJECT/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Untuk mengetahui informasi selengkapnya tentang cara menemukan ID resource kunci yang ada, lihat Mendapatkan ID resource Cloud KMS.

Kunci eksternal

Sebagai bagian dari strategi CMEK, Anda dapat menggunakan kunci eksternal. Untuk melakukannya, gunakan Cloud External Key Manager (Cloud EKM) untuk mengenkripsi data dalam Google Cloud dengan menggunakan kunci eksternal yang Anda kelola.

Saat Anda menggunakan kunci Cloud EKM, Google tidak memiliki kontrol atas ketersediaan kunci yang dikelola secara eksternal. Jika kunci tidak tersedia saat Anda membuat cluster, Memorystore for Redis Cluster tidak akan membuat cluster. Selain itu, jika kunci eksternal tidak tersedia kapan saja setelah Anda membuat cluster, Memorystore for Redis Cluster akan menonaktifkan pencadangan dan persistensi, tetapi operasi caching dalam memori reguler akan terus melayani traffic.

Untuk pertimbangan lainnya tentang penggunaan kunci eksternal, lihat Pertimbangan.

Versi kunci

Cloud KMS menyimpan materi kunci kriptografis yang Anda gunakan untuk mengenkripsi dan mendekripsi data Anda dalam versi kunci. Satu kunci dapat berisi beberapa versi kunci. Setiap kali Anda merotasi kunci, Anda akan membuat versi kunci.

Bagian berikut menjelaskan perilaku cluster dan data yang dilindunginya selama peristiwa siklus proses utama, seperti menonaktifkan, menghancurkan, merotasi, mengaktifkan, atau memulihkan versi kunci. Bagian ini juga menjelaskan dampak dari mencabut akses ke atau mengganti kunci Cloud KMS, dan memberikan panduan tentang cara mengenkripsi ulang data secara manual.

Menonaktifkan atau menghancurkan versi kunci CMEK

Anda mungkin ingin membuat data yang dienkripsi dengan CMEK tidak dapat diakses secara permanen, seperti saat Anda memulihkan kebocoran data. Untuk mencapai penghancuran data dengan jaminan tinggi ini (juga dikenal sebagai penghancuran kriptografi), Anda menghancurkan versi kunci. Untuk mengetahui informasi selengkapnya tentang menghancurkan versi kunci, lihat Menghancurkan dan memulihkan versi kunci.

Jika Anda menonaktifkan atau menghancurkan versi kunci utama, maka kondisi berikut berlaku untuk pencadangan dan persistensi.

Cadangan

Saat Anda menghancurkan versi kunci utama, batasan berikut berlaku untuk cadangan cluster Anda:

  • Anda tidak dapat membuat cadangan sesuai permintaan atau otomatis. Namun, jika Anda mengaktifkan versi kunci yang lebih lama, Anda dapat mengakses cadangan yang Anda buat menggunakan versi kunci ini.
  • Anda tidak dapat memperbarui atau mengaktifkan kembali pencadangan otomatis hingga Anda mengaktifkan atau memulihkan versi kunci utama. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan atau memulihkan versi kunci CMEK utama.
Persistensi

Saat Anda menghancurkan versi kunci utama, batasan berikut berlaku untuk persistensi cluster Anda:

  • Jika Anda mengonfigurasi cluster untuk menggunakan persistensi, Memorystore for Redis Cluster akan menonaktifkan persistensi saat versi kunci tidak tersedia. Anda tidak lagi dikenai biaya untuk menggunakan persistensi.
  • Memorystore for Redis Cluster tidak melakukan flush data baru ke penyimpanan persisten menggunakan CMEK.
  • Memorystore for Redis Cluster tidak dapat membaca data yang ada di penyimpanan persisten.
  • Anda tidak dapat memperbarui atau mengaktifkan kembali persistensi hingga Anda mengaktifkan atau memulihkan versi kunci utama.

Jika Anda mengaktifkan versi kunci utama, tetapi menonaktifkan atau menghancurkan versi kunci yang lebih lama, maka kondisi berikut berlaku untuk pencadangan dan persistensi:

  • Anda dapat membuat cadangan. Namun, jika cadangan dienkripsi dengan versi kunci yang lebih lama yang dinonaktifkan atau dihancurkan, cadangan tersebut akan tetap tidak dapat diakses.
  • Jika Anda mengaktifkan persistensi, persistensi akan tetap diaktifkan. Jika versi kunci lama yang digunakan dalam persistensi dinonaktifkan atau dimusnahkan, maka Memorystore for Redis Cluster akan melakukan update yang serupa dengan yang digunakan dalam pemeliharaan dan mengenkripsi ulang data dengan versi kunci utama.

Mencabut akses ke kunci Cloud KMS

Jika Anda mencabut akses ke kunci Cloud KMS yang aktif dengan menonaktifkan kunci atau menghapus izin IAM untuk kunci tersebut, Memorystore for Redis Cluster akan memprioritaskan ketersediaan cache utama. Operasi caching dalam memori reguler terus menayangkan traffic.

Namun, pencadangan dan persistensi dinonaktifkan. Memorystore for Redis Cluster segera berhenti menulis data baru ke disk dan tidak membaca data dari disk yang dienkripsi pelanggan ke dalam memori.

Merotasi versi kunci CMEK utama

Jika Anda merotasi versi kunci utama dan membuat versi kunci utama baru, kondisi berikut berlaku untuk pencadangan dan persistensi:

  • Versi kunci utama terbaru CMEK Anda mengenkripsi cadangan baru.
  • Untuk cadangan yang ada, tidak ada enkripsi ulang yang dilakukan.
  • Untuk persistensi, node tidak melakukan tindakan apa pun. Node akan terus menggunakan versi kunci yang lebih lama hingga peristiwa pemeliharaan berikutnya.

Mengenkripsi ulang data yang dilindungi CMEK secara manual

Memorystore for Redis Cluster tidak mendukung enkripsi ulang data tersimpan sesuai permintaan. Anda tidak dapat memicu proses secara manual untuk menggunakan versi kunci baru guna mengenkripsi ulang cadangan yang ada atau file persistensi aktif. Namun, Anda dapat menggunakan versi kunci baru untuk mengenkripsi data yang baru ditulis.

Jika Anda merotasi kunci dan harus memaksa kluster untuk menggunakan versi kunci baru, maka kondisi berikut berlaku untuk pencadangan dan persistensi:

Cadangan

Anda tidak dapat mengenkripsi ulang cadangan yang ada. Jika kepatuhan mengharuskan semua data dienkripsi dengan kunci terbaru, buat cadangan yang menggunakan kunci ini, lalu hapus cadangan yang ada secara manual. Anda juga dapat mengekspor cadangan ini ke bucket Cloud Storage sehingga kunci enkripsi Cloud Storage digunakan.

Persistensi

Untuk memaksa cluster menggunakan kunci Cloud KMS baru, Anda dapat menjalankan simulasi pemeliharaan pada cluster. Setelah Anda menyelesaikan operasi ini, Memorystore for Redis Cluster dapat menulis data persistensi menggunakan versi kunci utama yang diperbarui.

Mengganti kunci Cloud KMS yang dilindungi

Jika Anda mengganti kunci Cloud KMS yang dilindungi dengan kunci lain atau versi kunci utama baru, Memorystore for Redis Cluster hanya menerapkan perubahan ini pada operasi mendatang.

Mengganti kunci yang dilindungi akan memengaruhi resource Anda dengan cara berikut:

  • Cadangan: semua cadangan berikutnya dienkripsi menggunakan kunci baru. Cadangan yang ada mempertahankan kunci aslinya.
  • Persistensi: saat cluster dimulai ulang atau mengalami peristiwa pemeliharaan berikutnya, kunci baru akan digunakan.
  • Cache utama: mengganti kunci ini tidak akan berpengaruh. CMEK tidak mengenkripsi data dalam memori karena data ini tidak dianggap sebagai data tersimpan.

Mengaktifkan atau memulihkan versi kunci CMEK utama

Jika Anda mengaktifkan atau memulihkan versi kunci utama, kondisi berikut berlaku untuk pencadangan dan persistensi:

  • Anda dapat membuat pencadangan sesuai permintaan dan otomatis lagi.
  • Memorystore for Redis Cluster melakukan update yang serupa dengan yang digunakan dalam pemeliharaan dan mengaktifkan kembali persistensi.

Batasan kebijakan organisasi

Memorystore for Redis Cluster mendukung batasan kebijakan organisasi untuk CMEK. Dengan menggunakan batasan ini, Anda dapat menerapkan perlindungan CMEK untuk cluster dan membatasi kunci Cloud KMS yang dapat Anda gunakan untuk perlindungan ini.

Anda dapat mengonfigurasi batasan kebijakan organisasi berikut:

  • constraints/gcp.restrictNonCmekServices: gunakan batasan ini untuk menerapkan perlindungan CMEK untuk cluster Anda. Jika Memorystore for Redis Cluster API tercantum dalam daftar kebijakan layanan Deny untuk batasan ini, Anda tidak dapat membuat cluster yang tidak dilindungi CMEK.
  • constraints/gcp.restrictCmekCryptoKeyProjects: gunakan batasan ini untuk membatasi kunci Cloud KMS yang dapat Anda gunakan untuk perlindungan CMEK. Jika Anda mengonfigurasi batasan ini, cluster yang menggunakan enkripsi CMEK harus menggunakan kunci dari project, folder, atau organisasi yang diizinkan.

Karena Memorystore for Redis Cluster dan Memorystore for Redis berbagi endpoint yang sama (redis.googleapis.com), Anda tidak dapat menerapkan CMEK untuk cluster secara terpisah dari instance Memorystore for Redis.

Untuk mengetahui informasi selengkapnya tentang batasan kebijakan organisasi terkait CMEK yang dikelola Google untuk Memorystore for Redis Cluster, lihat Batasan kebijakan organisasi.

Harga

Memorystore for Redis Cluster menagih cluster yang diaktifkan CMEK seperti cluster lainnya; tidak ada biaya tambahan. Untuk mengetahui informasi selengkapnya, lihat Harga Memorystore for Redis Cluster.

Anda menggunakan Cloud KMS API untuk mengelola CMEK. Saat Anda membuat cluster dengan CMEK, Memorystore akan menggunakan kunci tersebut secara berkala untuk mengenkripsi data.

Anda ditagih oleh Cloud KMS untuk biaya kunci dan untuk operasi enkripsi dan dekripsi saat Memorystore for Redis Cluster menggunakan kunci tersebut. Untuk mengetahui informasi selengkapnya, lihat harga Cloud KMS.

Batasan

Batasan berikut berlaku saat menggunakan CMEK dengan Memorystore for Redis Cluster:

  • Anda tidak dapat mengaktifkan CMEK di cluster yang sudah ada.
  • Kunci, key ring, dan cluster harus berada di region yang sama.
  • Anda harus menggunakan algoritma enkripsi simetris untuk kunci Anda.
  • Tingkat enkripsi dan dekripsi Cloud KMS bergantung pada kuota.

Langkah berikutnya