Tentang kunci enkripsi yang dikelola pelanggan (CMEK)

Halaman ini menjelaskan cara kerja kunci enkripsi yang dikelola pelanggan (CMEK) dengan Memorystore for Redis. Untuk segera menggunakan fitur ini, lihat Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK).

Apakah CMEK cocok untuk saya?

Kunci enkripsi yang dikelola pelanggan ditujukan untuk organisasi yang memiliki data yang sensitif atau data yang diatur yang mengharuskan mereka mengelola kunci enkripsi mereka sendiri.

Enkripsi yang dikelola Google versus enkripsi yang dikelola pelanggan

Dengan fitur CMEK, Anda dapat menggunakan kunci kriptografis sendiri untuk data dalam penyimpanan di Memorystore untuk Redis. Setelah menambahkan kunci enkripsi yang dikelola pelanggan, setiap kali panggilan API dilakukan, Memorystore menggunakan kunci Anda untuk mengakses data.

Memorystore menggunakan kunci enkripsi data (DEK) dan kunci enkripsi kunci (KEK) yang dikelola Google untuk mengenkripsi Memorystore for Redis. Ada dua tingkat enkripsi:

  • DEK mengenkripsi data.
  • KEK mengenkripsi DEK.

Instance Memorystore menyimpan DEK terenkripsi bersama data terenkripsi pada PD dan Google akan mengelola Google KEK. Dengan kunci enkripsi yang dikelola pelanggan, Anda membuat kunci yang menggabungkan Google KEK. Kunci enkripsi yang dikelola pelanggan memungkinkan Anda membuat, mencabut, dan menghapus KEK.

Kunci enkripsi yang dikelola pelanggan dikelola melalui Cloud Key Management Service API.

Diagram di bawah menunjukkan cara kerja enkripsi data dalam penyimpanan di dalam instance Memorystore saat menggunakan enkripsi Google default versus kunci enkripsi yang dikelola pelanggan.

Tanpa CMEK

Data diunggah ke Google, kemudian dipotong dan setiap potongan dienkripsi dengan kunci enkripsi datanya sendiri. Kunci Enkripsi Data digabungkan menggunakan kunci enkripsi kunci. Dengan Enkripsi Google default, kunci enkripsi kunci diambil dari Keystore internal Google. Potongan terenkripsi dan kunci enkripsi yang digabungkan didistribusikan ke seluruh infrastruktur penyimpanan Google.

Dengan CMEK

Data diunggah ke Google, kemudian dipotong dan setiap potongan dienkripsi dengan kunci enkripsi datanya sendiri. Kunci Enkripsi Data digabungkan menggunakan kunci enkripsi kunci. Dengan CMEK yang menggunakan Cloud KMS, kunci enkripsi kunci diambil dari Cloud KMS. Potongan terenkripsi dan kunci enkripsi yang digabungkan didistribusikan ke seluruh infrastruktur penyimpanan Google.

Saat mendekripsi data yang digabungkan dengan kunci enkripsi yang dikelola pelanggan, Memorystore menggunakan KEK untuk mendekripsi DEK dan DEK yang tidak dienkripsi untuk mendekripsi data dalam penyimpanan.

Potongan data dienkripsi dengan DEK dan disimpan dengan DEK gabungan. Permintaan untuk membuka DEK dikirim ke penyimpanan KMS yang menyimpan KEK yang tidak dapat diekspor. KMS Storage menampilkan DEK yang telah dibuka.

Kapan Memorystore berinteraksi dengan kunci CMEK?

Operasi Deskripsi
Pembuatan instance Selama pembuatan instance, Anda mengonfigurasi instance tersebut untuk menggunakan kunci enkripsi yang dikelola pelanggan.
Update instance Memorystore memeriksa kunci CMEK selama update ke instance berkemampuan CMEK.

Data apa yang dienkripsi menggunakan CMEK?

CMEK mengenkripsi jenis data berikut:

  • Data pelanggan yang disimpan di penyimpanan persisten.
  • Metadata yang terkait dengan fitur keamanan seperti AUTH dan enkripsi dalam transit.

Tentang akun layanan

Saat membuat instance dengan CMEK, Anda harus memberikan peran cloudkms.cryptoKeyEncrypterDecrypter ke akun layanan Memorystore yang memiliki format berikut:

  • service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

Memberikan izin ini memungkinkan akun layanan meminta akses kunci dari Cloud KMS.

Untuk mengetahui petunjuk tentang cara memberikan izin ini ke akun layanan, lihat Memberi akun layanan akses ke kunci.

Tentang kunci

Di Cloud KMS, Anda perlu membuat keyring dengan kunci kriptografis yang menggunakan algoritma enkripsi/dekripsi simetris. Saat membuat instance Memorystore baru, Anda memilih kunci ini untuk mengenkripsi instance. Anda dapat membuat satu project untuk kunci dan instance Memorystore, atau project berbeda untuk setiap kunci.

CMEK tersedia di semua lokasi instance Memorystore. Region kunci dan keyring harus disetel ke region yang sama dengan instance Memorystore untuk Redis. Kunci multi-region atau region global tidak berfungsi. Permintaan untuk membuat instance Memorystore akan gagal jika regionnya tidak cocok.

CMEK untuk Memorystore kompatibel dengan Cloud External Key Manager (Cloud EKM).

Kunci enkripsi yang dikelola pelanggan menggunakan format berikut:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Jika Memorystore tidak dapat mengakses versi kunci apa pun yang sedang digunakan (misalnya jika Anda menonaktifkan versi kunci), Memorystore akan menutup instance tanpa penundaan yang tidak semestinya. Di Konsol Google Cloud, instance yang ditangguhkan menampilkan tooltip tanda seru berwarna merah di halaman Instances. Saat mengarahkan kursor ke tooltip, "Tidak ada status" akan ditampilkan. Setelah kunci dapat diakses lagi, Memorystore akan otomatis melanjutkan instance.

Bagaimana cara membuat data terenkripsi CMEK agar tidak dapat diakses secara permanen?

Anda mungkin ingin menghancurkan data yang dienkripsi dengan CMEK secara permanen. Untuk melakukannya, Anda menghancurkan versi kunci enkripsi yang dikelola pelanggan. Anda tidak dapat menghancurkan keyring atau kunci, tetapi Anda dapat menghancurkan versi kunci dari kunci tersebut.

Bagaimana cara saya mengekspor serta mengimpor data dari dan ke instance yang mendukung CMEK?

Jika ingin data Anda tetap dienkripsi dengan kunci yang dikelola pelanggan selama impor atau ekspor, Anda harus menetapkan kunci enkripsi yang dikelola pelanggan di bucket Cloud Storage sebelum mengekspor data ke dalamnya.

Tidak ada persyaratan atau batasan khusus untuk mengimpor data ke instance Memorystore baru saat data tersebut sebelumnya disimpan di instance Memorystore yang mendukung CMEK.

Perilaku menghancurkan/menonaktifkan versi kunci CMEK

Jika ingin memastikan tidak ada akses data ke instance Anda, Anda dapat melakukannya dengan menonaktifkan versi kunci utama dari kunci enkripsi yang dikelola pelanggan. Tindakan ini akan menonaktifkan instance Anda tanpa penundaan yang tidak semestinya. Selain itu, Memorystore menghentikan instance tanpa penundaan yang tidak semestinya jika kunci enkripsi yang dikelola pelanggan yang sedang digunakan dinonaktifkan/dihancurkan. Hal ini termasuk versi kunci lama yang masih digunakan oleh instance Memorystore. Anda dapat menggunakan gcloud atau Google Cloud Console untuk mengetahui apakah instance Anda ditangguhkan:

Untuk konsol Google Cloud, jika instance Anda ditangguhkan, Anda akan melihat notifikasi tooltip berwarna merah di samping instance Anda di halaman Instances Memorystore for Redis. Tooltip akan menampilkan "Tidak ada status" saat kursor Anda diarahkan ke atasnya.

Untuk gcloud, jika Anda menjalankan gcloud beta redis instances describe, dan Anda tidak melihat state: READY, state: REPAIRING, atau status lain dalam metadata instance, ini berarti instance Anda ditangguhkan.

Mengaktifkan kembali/memulihkan versi kunci CMEK yang sedang digunakan

Instance ditampilkan setelah reenabling/restoring versi kunci CMEK yang sedang digunakan.

Pembatasan

Batasan berikut berlaku saat menggunakan kunci enkripsi yang dikelola pelanggan dengan Memorystore:

  • Anda tidak dapat mengaktifkan kunci enkripsi yang dikelola pelanggan pada instance Memorystore yang sudah ada.
  • Region untuk kunci, keyring, dan instance Memorystore harus sama.
  • Anda harus menggunakan algoritma enkripsi/dekripsi simetris untuk kunci Anda.
  • Tingkat enkripsi dan dekripsi Cloud KMS bergantung pada kuota.