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 for Redis. Setelah menambahkan kunci enkripsi yang dikelola pelanggan, setiap kali panggilan API dilakukan, Memorystore akan menggunakan kunci Anda untuk mengakses data.

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

  • DEK mengenkripsi data.
  • KEK mengenkripsi DEK.

Instance Memorystore menyimpan DEK terenkripsi bersama data terenkripsi pada PD dan Google 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 dibandingkan dengan 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 untuk menggunakan kunci enkripsi yang dikelola pelanggan.
Update instance Memorystore memeriksa kunci CMEK selama update pada instance yang mendukung CMEK.

Data apa yang dienkripsi menggunakan CMEK?

CMEK mengenkripsi jenis data berikut:

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

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

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

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

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 yang berbeda untuk masing-masing kunci.

CMEK tersedia di semua lokasi instance Memorystore. Region kunci dan ringkasan kunci harus ditetapkan 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 region 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 yang saat ini digunakan (misalnya jika Anda menonaktifkan versi kunci), Memorystore akan menonaktifkan instance tanpa penundaan yang tidak perlu. Di konsol Google Cloud, instance yang ditangguhkan akan menampilkan tooltip tanda seru merah di halaman Instance. Saat mengarahkan kursor ke tooltip, "Tidak ada status" akan ditampilkan. Setelah kunci dapat diakses kembali, 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 jika data sebelumnya disimpan di instance Memorystore yang mengaktifkan CMK.

Perilaku menghancurkan/menonaktifkan versi kunci CMEK

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

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

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

Mengaktifkan kembali/memulihkan versi kunci CMEK yang sedang digunakan

Instance tidak disembunyikan lagi setelah mengaktifkan kembali/memulihkan 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 ada.
  • Region untuk kunci, ring kunci, dan instance Memorystore harus sama.
  • Anda harus menggunakan algoritma enkripsi/dekripsi simetris untuk kunci Anda.
  • Tingkat enkripsi dan dekripsi Cloud KMS bergantung pada kuota.

Kebijakan organisasi CMEK

Memorystore for Redis mendukung batasan kebijakan organisasi yang dapat digunakan untuk perlindungan CMEK.

Kebijakan dapat membatasi kunci Cloud KMS mana yang dapat digunakan untuk perlindungan CMEK.

  • Jika Memorystore for Redis API tercantum dalam daftar kebijakan layanan Deny berdasarkan batasan constraints/gcp.restrictNonCmekServices, pembuatan Memorystore for Redis akan gagal untuk instance yang tidak dilindungi CMEK.

  • Jika constraints/gcp.restrictCmekCryptoKeyProjects dikonfigurasi, Memorystore for Redis akan membuat instance yang dilindungi CMEK yang dienkripsi menggunakan kunci dari project, folder, atau organisasi yang diizinkan.

Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi kebijakan organisasi CMEK, lihat Kebijakan organisasi CMEK.