Kunci enkripsi yang dikelola pelanggan

Penyiapan

Secara default, Cloud Storage mengenkripsi konten pelanggan dalam penyimpanan. Cloud Storage menangani enkripsi untuk Anda tanpa tindakan tambahan dari Anda. Opsi ini disebut enkripsi default Google.

Jika ingin mengontrol kunci enkripsi, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) di Cloud KMS dengan layanan terintegrasi CMEK, termasuk Cloud Storage. Menggunakan kunci Cloud KMS memberi Anda kontrol atas tingkat perlindungan, lokasi, jadwal rotasi, izin penggunaan dan akses, serta batas kriptografisnya. Dengan Cloud KMS, Anda juga dapat melacak penggunaan kunci, melihat log audit, dan mengontrol siklus proses kunci. Alih-alih Google yang memiliki dan mengelola kunci enkripsi kunci (KEK) simetris yang melindungi data Anda, Andalah yang mengontrol dan mengelola kunci ini di Cloud KMS.

Setelah Anda menyiapkan resource dengan CMEK, pengalaman mengakses resource Cloud Storage Anda mirip dengan menggunakan enkripsi default Google. Untuk informasi selengkapnya tentang CMEK, lihat Kunci enkripsi yang dikelola pelanggan (CMEK). Untuk mempelajari cara menggunakan CMEK yang dibuat secara manual untuk melindungi resource Cloud Storage Anda, lihat Menggunakan kunci enkripsi yang dikelola pelanggan.

Untuk informasi selengkapnya tentang opsi enkripsi lainnya saat menggunakan Cloud Storage, lihat Opsi Enkripsi Data.

CMEK dengan Kunci Otomatis Cloud KMS

Anda dapat membuat CMEK secara manual untuk melindungi bucket Cloud Storage dan objek di dalamnya atau menggunakan Kunci Otomatis Cloud KMS. Dengan Autokey, key ring dan kunci dibuat sesuai permintaan sebagai bagian dari pembuatan atau pembaruan resource di Cloud Storage. Agen layanan yang menggunakan kunci untuk operasi enkripsi dan dekripsi akan dibuat jika belum ada dan diberi peran Identity and Access Management (IAM) yang diperlukan. Untuk mengetahui informasi selengkapnya, lihat Ringkasan kunci otomatis.

Autokey tidak membuat kunci untuk objek. Secara default, objek dalam bucket menggunakan kunci default bucket. Jika ingin mengenkripsi objek menggunakan kunci selain kunci default bucket, Anda dapat membuat CMEK secara manual dan menggunakan kunci tersebut saat membuat objek.

Untuk mempelajari cara menggunakan CMEK yang dibuat oleh Cloud KMS Autokey untuk melindungi bucket Cloud Storage dan objek di dalamnya, lihat Menggunakan Autokey dengan resource Cloud Storage.

Kapan kunci digunakan?

Saat Anda menerapkan CMEK 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 CMEK terkait.

Agen layanan

Setiap project memiliki akun layanan Cloud Storage khusus yang disebut agen layanan yang melakukan enkripsi dan dekripsi dengan CMEK. 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.

Saat pemohon ingin membaca objek yang dienkripsi dengan CMEK, mereka cukup mengakses objek seperti biasa. 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

Batasan berikut berlaku saat menggunakan CMEK:

  • Anda tidak dapat mengenkripsi objek dengan CMEK 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.
  • Anda harus membuat key ring Cloud KMS di lokasi yang sama dengan data yang ingin Anda enkripsi. Misalnya, jika bucket Anda berada di US-EAST1, key ring apa pun yang digunakan untuk mengenkripsi objek di bucket tersebut juga harus dibuat di US-EAST1.

    • Untuk dual-region, lokasi key ring Cloud KMS harus cocok dengan kode lokasi dual-region. Misalnya, jika bucket Anda berada di pasangan region ganda yang dapat dikonfigurasi US-EAST1, US-WEST1, key ring apa pun yang digunakan untuk mengenkripsi objek di bucket tersebut harus dibuat di multi-region US, yang cocok dengan kode lokasi bucket ini. Jika bucket Anda berada di dual-region standar NAM4, Anda harus membuat key ring di dual-region standar yang sama, NAM4.

      Untuk mengetahui lokasi Cloud KMS yang tersedia, lihat lokasi Cloud KMS.

  • Tingkat enkripsi dan dekripsi Cloud KMS bergantung pada kuota.

  • Checksum CRC32C dan hash MD5 objek yang dienkripsi dengan CMEK 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 denganCMEK untuk mengambil informasi CRC32C dan MD5. Permintaan tambahan ini dapat membuat listingan jauh lebih lambat dibandingkan objek listingan yang dienkripsi dengan enkripsi Cloud Storage standar.
  • Hanya kunci enkripsi simetris yang dapat digunakan sebagai CMEK.

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 CMEK default 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 menghancurkan 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 tersebut disimpan dalam bucket dengan kebijakan retensi terkunci atau karena objek tersebut memiliki konfigurasi retensi terkunci-nya sendiri, versi kunci hanya dapat dihancurkan jika kondisi berikut terpenuhi:

  • Waktu habis masa berlaku retensi objek terenkripsi harus sudah berlalu.
  • 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 tersebut. Jika Anda melakukannya, data objek yang terpengaruh menjadi tidak dapat diakses secara permanen.

Langkah selanjutnya