Kunci enkripsi yang dikelola pelanggan

Penyiapan

Halaman ini membahas kunci enkripsi yang dikelola pelanggan dan cara penggunaannya di Cloud Storage. Untuk opsi enkripsi lainnya, lihat Opsi Enkripsi Data.

Ringkasan

Jika memerlukan kontrol lebih besar atas operasi kunci daripada yang diizinkan oleh enkripsi Cloud Storage standar, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan. Kunci ini dibuat dan dikelola menggunakan Cloud Key Management Service (Cloud KMS), dan Anda menyimpan kunci tersebut sebagai kunci software, di cluster HSM, atau secara eksternal. Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan pada setiap objek, atau mengonfigurasi bucket untuk menggunakan kunci secara default pada semua objek baru yang ditambahkan ke bucket.

Saat menggunakan kunci enkripsi yang dikelola pelanggan, objek dienkripsi dengan kunci tersebut oleh Cloud Storage pada saat disimpan dalam bucket, dan objek secara otomatis didekripsi oleh Cloud Storage saat objek disajikan kepada pemohon.

Kapan kunci digunakan?

Saat Anda menerapkan kunci enkripsi yang dikelola pelanggan ke suatu objek, Cloud Storage akan menggunakan kunci tersebut saat mengenkripsi:

  • Data objek.
  • Checksum CRC32C objek.
  • Hash MD5 objek.

Cloud Storage menggunakan kunci sisi server standar untuk mengenkripsi metadata lainnya untuk objek, termasuk nama objek. Jadi, jika memiliki izin yang memadai, Anda dapat melakukan tindakan seperti membaca sebagian besar metadata, mencantumkan objek, dan menghapus objek bahkan setelah Anda menonaktifkan atau menghancurkan kunci enkripsi yang dikelola pelanggan terkait.

Agen layanan

Setiap project memiliki akun layanan Cloud Storage khusus yang disebut agen layanan yang melakukan enkripsi dan dekripsi dengan kunci enkripsi yang dikelola pelanggan. Setelah Anda memberikan akses kepada agen layanan ke kunci enkripsi, agen layanan tersebut akan mengenkripsi:

Saat menambahkan atau menulis ulang objek di Cloud Storage, jika Anda memiliki kunci default yang ditetapkan pada bucket dan kunci tertentu yang disertakan dalam permintaan Anda, Cloud Storage akan menggunakan kunci tersebut untuk mengenkripsi objek tersebut.

Ketika pemohon ingin membaca objek yang dienkripsi dengan kunci enkripsi yang dikelola pelanggan, mereka cukup mengakses objek seperti biasanya. Selama permintaan tersebut, agen layanan akan otomatis mendekripsi objek yang diminta selama:

  • Agen layanan masih memiliki izin untuk mendekripsi dengan menggunakan kunci tersebut.
  • Anda belum menonaktifkan atau menghancurkan kunci tersebut.

Jika salah satu kondisi ini tidak terpenuhi, agen layanan tidak akan mendekripsi data, dan permintaan akan gagal.

Pembatasan

Pembatasan berikut berlaku saat menggunakan kunci enkripsi yang dikelola pelanggan:

  • Anda tidak dapat mengenkripsi objek menggunakan kunci enkripsi yang dikelola pelanggan dengan memperbarui metadata objek. Sertakan kunci sebagai bagian dari penulisan ulang objek.

    • gcloud storage menggunakan perintah objects update untuk menetapkan kunci enkripsi pada objek, tetapi perintah tersebut akan menulis ulang objek sebagai bagian dari permintaan.

  • Tingkat enkripsi dan dekripsi Cloud KMS bergantung pada kuota.

  • Checksum CRC32C dan hash MD5 objek yang dienkripsi dengan kunci enkripsi yang dikelola pelanggan tidak akan ditampilkan saat mencantumkan objek dengan JSON API.

    • Jika memungkinkan, beberapa alat, seperti gcloud storage, melakukan permintaan GET metadata tambahan pada setiap objek yang dienkripsi dengan kunci enkripsi yang dikelola pelanggan untuk mengambil informasi CRC32C dan MD5. Permintaan tambahan ini dapat membuat listingan jauh lebih lambat dibandingkan listingan objek yang dienkripsi dengan enkripsi Cloud Storage standar.
  • Cloud Storage tidak dapat menggunakan bagian dekripsi dari kunci asimetris yang disimpan di Cloud KMS untuk secara otomatis mendekripsi objek yang relevan dengan cara yang sama seperti yang dilakukan oleh kunci enkripsi yang dikelola pelanggan.

Hubungan dengan kunci enkripsi yang disediakan pelanggan

Selain enkripsi yang dikelola pelanggan, Cloud Storage menawarkan Kunci Enkripsi yang Disediakan Pelanggan sebagai cara untuk mengontrol enkripsi data Anda. Anda dapat mengenkripsi berbagai objek dalam satu bucket dengan metode enkripsi yang berbeda, tetapi perhatikan bahwa:

  • Satu objek hanya dapat dienkripsi dengan salah satu metode ini pada satu waktu.

  • Jika Anda telah menetapkan kunci default yang dikelola pelanggan untuk bucket Anda dan menentukan kunci yang disediakan pelanggan dalam permintaan, Cloud Storage akan menggunakan kunci yang disediakan pelanggan untuk mengenkripsi objek.

Pengelolaan kunci

Bagian ini membahas pertimbangan saat merotasi kunci, mengganti kunci, dan menonaktifkan atau menghancurkan versi kunci.

Rotasi kunci

Cloud KMS mendukung rotasi kunci otomatis dan manual ke versi baru. Setelah merotasi kunci, Cloud Storage akan menggunakan versi baru untuk semua operasi yang dienkripsi menggunakan kunci tersebut, seperti:

  • Objek akan diupload saat bucket tujuan menggunakan kunci tersebut sebagai kunci enkripsi default.

  • Operasi upload, salin, dan penulisan ulang objek yang secara khusus menggunakan kunci dalam operasi.

Kunci versi sebelumnya tidak dinonaktifkan atau dihancurkan, sehingga Cloud Storage masih dapat mendekripsi objek yang sudah ada yang sebelumnya dienkripsi menggunakan versi tersebut.

Penggantian kunci

Gunakan panduan berikut saat mengganti kunci yang Anda gunakan untuk mengenkripsi objek Cloud Storage dengan kunci baru:

  1. Periksa bucket Anda untuk melihat mana yang menggunakan kunci tersebut sebagai kunci enkripsi default. Untuk bucket ini, ganti kunci lama dengan kunci baru.

    Cara ini akan memastikan bahwa ke depannya semua objek yang ditulis ke bucket menggunakan kunci baru tersebut.

  2. Periksa kode sumber untuk memahami permintaan mana yang menggunakan kunci dalam operasi yang sedang berlangsung, seperti menetapkan konfigurasi bucket dan mengupload, menyalin, atau menulis ulang objek. Perbarui instance ini untuk menggunakan kunci baru.

  3. Periksa objek, di semua bucket, yang dienkripsi dengan kunci lama. Gunakan Rewrite Object method untuk mengenkripsi ulang setiap objek dengan kunci baru.

  4. Nonaktifkan semua versi kunci lama. Setelah menonaktifkan versi kunci lama, pantau log klien dan layanan untuk operasi yang gagal karena versi tidak tersedia.

Menonaktifkan atau menghancurkan versi kunci

  • Saat menonaktifkan atau destroy versi kunci tertentu, Anda tidak dapat mendekripsi objek apa pun yang saat ini dienkripsi dengan versi kunci tersebut.

    Misalnya, Anda tidak boleh mendownload, menyalin, atau menulis ulang objek, dan mencoba melakukannya akan menyebabkan error.

    • Jika versi kunci dinonaktifkan, Anda dapat mengaktifkannya kembali. Setelah diaktifkan kembali, Anda dapat mengakses objek yang dienkripsi oleh versi kunci tersebut.

    • Jika Anda menghancurkan versi kunci, download objek yang dienkripsi dengan versi tersebut tidak akan dapat dilakukan lagi.

    Sebelum menonaktifkan atau menghancurkan versi kunci, Anda harus mengidentifikasi semua objek, di semua bucket, yang dienkripsi menggunakan versi kunci tertentu. Setelah diidentifikasi, gunakan metode Rewrite Object untuk mengenkripsi ulang setiap objek menggunakan versi kunci baru, kunci baru, atau kunci sisi server.

  • Saat menonaktifkan atau menghancurkan versi utama kunci, Anda tidak dapat menggunakan kunci tersebut untuk enkripsi sampai Anda memiliki versi utama yang baru. Misalnya, tanpa versi utama:

    • Anda tidak dapat menentukan kunci sebagai bagian dari upload, salin, atau penulisan ulang objek.

    • Anda tidak dapat mengupload, menyalin, atau menulis ulang objek ke bucket yang memiliki kunci yang ditetapkan sebagai kunci enkripsi default, kecuali jika Anda menentukan kunci lain yang valid sebagai bagian dari operasi.

    Setelah Anda memiliki versi utama untuk kunci tersebut, operasi yang menggunakan kunci tersebut untuk mengenkripsi objek akan berhasil.

    Sebelum menonaktifkan atau menghancurkan versi kunci yang merupakan versi utama kunci, Anda harus berhenti menggunakannya sebagai versi utama terlebih dahulu. Anda dapat melakukannya dengan:

    • Menggantinya dengan versi utama baru, biasanya dengan melakukan rotasi kunci.
    • Menghapus instance tempat Anda menggunakan kunci untuk enkripsi. Jika Anda melakukannya, Cloud Storage akan menggunakan kunci sisi server untuk enkripsi.

Versi kunci dan objek terkunci

Jika versi kunci mengenkripsi objek yang terkunci, baik karena objek disimpan dalam bucket dengan kebijakan retensi yang terkunci maupun karena objek memiliki konfigurasi retensi yang terkunci sendiri, versi kunci hanya dapat dihancurkan jika kondisi berikut terpenuhi:

  • Waktu habis masa berlaku retensi objek terenkripsi harus berada di masa lampau.
  • Objek yang dienkripsi tidak boleh memiliki penangguhan objek.

Setelah semua objek yang relevan memenuhi kondisi ini, Anda dapat menghancurkan versi kunci, bahkan tanpa menghapus objek. Jika Anda melakukannya, data objek yang terpengaruh menjadi tidak dapat diakses secara permanen.

Langkah selanjutnya