Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK)

Halaman ini menjelaskan cara mengenkripsi konten yang disimpan di plugin Service Extensions dengan kunci enkripsi yang dikelola pelanggan (CMEK).

Ringkasan

Secara default, Ekstensi Layanan mengenkripsi konten pelanggan dalam penyimpanan. Ekstensi Layanan 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 yang terintegrasi dengan CMEK, termasuk Ekstensi Layanan. Dengan menggunakan kunci Cloud KMS, Anda dapat mengontrol tingkat perlindungan, lokasi, jadwal rotasi, izin penggunaan dan akses, serta batasan kriptografisnya. Dengan Cloud KMS, Anda juga dapat melihat log audit dan mengontrol siklus proses kunci. Bukan 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 Ekstensi Layanan Anda akan serupa dengan menggunakan enkripsi default Google. Untuk mengetahui informasi selengkapnya tentang opsi enkripsi, lihat Kunci enkripsi yang dikelola pelanggan (CMEK).

Semua operasi kriptografi ditagih ke Google Cloud project yang memiliki kunci, terlepas dari jenis kunci. Untuk mengetahui informasi harga, lihat Harga Cloud KMS.

Membuat kunci dan memberikan izin

Petunjuk berikut menjelaskan cara membuat kunci untuk plugin dan memberikan izin untuk mengenkripsi dan mendekripsi data plugin dengan kunci tersebut.

  1. Di project Google Cloud tempat Anda ingin mengelola kunci, lakukan tindakan berikut:

    1. Untuk dapat membuat kunci, aktifkan Cloud Key Management Service API.

    2. Buat key ring dan kunci menggunakan salah satu opsi berikut:

      Lokasi kunci Cloud KMS harus cocok dengan lokasi plugin yang ingin Anda enkripsi.

  2. Akun layanan Ekstensi Layanan harus ada di project Ekstensi Layanan Anda. Nama akun layanan adalah service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com, dengan PROJECT_NUMBER adalah nomor project dari project Google Cloud tempat Ekstensi Layanan berjalan.

    Akun layanan dibuat secara otomatis saat Anda membuat plugin pertama di project Ekstensi Layanan. Jika Anda belum membuat plugin di project, buat akun layanan dengan menjalankan perintah berikut:

    gcloud beta services identity create \
        --service=networkactions.googleapis.com \
        --project=PROJECT
    

    Ganti PROJECT dengan ID project tempat Ekstensi Layanan berjalan.

  3. Berikan peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) ke akun layanan Ekstensi Layanan pada kunci yang Anda buat.

    Konsol

    1. Di konsol Google Cloud , buka halaman Key management.

      Buka Pengelolaan kunci

    2. Pilih kunci yang Anda buat.

    3. Memberikan akses ke akun layanan Ekstensi Layanan:

      1. Pilih Tampilkan panel info.
      2. Klik Tambahkan anggota.
      3. Tambahkan akun layanan Ekstensi Layanan. Akun layanan adalah service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com.
      4. Di Pilih peran, pilih Cloud KMS > Cloud KMS CryptoKey Encrypter/Decrypter
      5. Klik Simpan.
    4. Ulangi langkah sebelumnya untuk memberikan akses ke akun pembuat plugin.

    5. Kembali ke halaman Key management dan pilih kunci lagi.

    6. Pilih Tampilkan panel info. Anda akan melihat peran di kolom Peran/Anggota.

    gcloud

    1. Berikan akses ke akun layanan Ekstensi Layanan dengan menjalankan perintah gcloud kms keys add-iam-policy-binding:

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] KEY_NAME \
          --location LOCATION
          --keyring=KEYRING_NAME \
          --member=serviceAccount:service-PROJECT-NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com \
          --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Ganti kode berikut:

      • PROJECT: ID project yang berisi kunci
      • KEY_NAME: adalah nama kunci
      • LOCATION: lokasi kunci
      • KEYRING_NAME: nama key ring
      • PROJECT-NUMBER: nomor project dari Google Cloud project
    2. Ulangi langkah sebelumnya dengan member yang ditetapkan ke akun pembuat plugin.

Saat membuat plugin atau mengupdatenya, tentukan kunci CMEK. Kunci ini menyediakan enkripsi untuk image plugin dan data konfigurasi. Data plugin lainnya dilindungi oleh enkripsi default Google.

Enkripsi ulang otomatis

Saat versi utama kunci KMS berubah (baik karena perubahan pengguna manual atau karena rotasi otomatis), data plugin yang dilindungi oleh kunci tersebut akan otomatis dienkripsi ulang dengan versi kunci yang baru.

Pelacakan kunci

Anda dapat menggunakan pelacakan kunci untuk mencantumkan resource plugin yang dilindungi kunci. Untuk mengetahui informasi selengkapnya, lihat Melihat penggunaan kunci.

Kuota Cloud Key Management Service dan Ekstensi Layanan

Saat Anda menggunakan kunci CMEK di Ekstensi Layanan, seperti dalam operasi berikut, project Anda dapat menggunakan kuota permintaan kriptografi Cloud KMS:

  • Membuat atau mengupdate plugin yang dilindungi CMEK
  • Menambahkan versi baru atau mengubah versi utama plugin yang dilindungi CMEK
  • Mencantumkan versi plugin yang dilindungi CMEK yang memiliki setelan kolom plugin_config_data
  • Melampirkan plugin ke ekstensi

Plugin terlampir juga menimbulkan operasi dekripsi dari waktu ke waktu.

Jika Anda menggunakan kunci hardware (Cloud HSM) atau eksternal (Cloud EKM), operasi enkripsi dan dekripsi menggunakan kunci CMEK akan memengaruhi kuota Cloud KMS.

Menghapus akses ke plugin yang dienkripsi CMEK

Ada beberapa cara untuk menghapus akses ke plugin yang dienkripsi CMEK:

Sebaiknya batalkan izin dari akun layanan Service Extensions sebelum menonaktifkan atau menghancurkan kunci.

Implikasi penghapusan akses

Data yang dilindungi CMEK terdiri dari image yang didownload dari Artifact Registry serta data konfigurasi plugin yang diberikan secara langsung (melalui kolom plugin_config_data).

Setelah Anda menonaktifkan atau menghapus kunci enkripsi untuk plugin, semua data plugin yang dilindungi oleh CMEK akan menjadi tidak dapat diakses dalam beberapa menit. Mungkin perlu waktu puluhan menit hingga semua replika penayangan plugin berhenti menayangkan traffic setelah kuncinya dicabut.

Metadata plugin, seperti nama plugin, deskripsi, label, atau konfigurasi logging, tetap dapat diakses.

Akibatnya, menghapus akses ke kunci yang melindungi plugin aktif (yaitu, plugin yang terlampir ke ekstensi), menyebabkan plugin tidak dapat menayangkan traffic. Semua permintaan ke plugin gagal.

Jika pemanggilan plugin gagal, perilaku ekstensi bergantung pada kolom fail_open:

  • Jika kolom disetel ke true, permintaan akan dilanjutkan ke layanan target, tanpa memberikan indikasi bahwa pemanggilan plugin telah gagal.
  • Jika kolom disetel ke false, permintaan tidak akan mencapai layanan target.

Batasan

  • Perlindungan CMEK yang ditetapkan pada plugin terbatas pada Ekstensi Layanan.

    Untuk melindungi resource plugin di produk Google lainnya, aktifkan CMEK melalui produk tersebut. Untuk image plugin yang diupload ke Artifact Registry, siapkan CMEK untuk Artifact Registry. Untuk melindungi log yang dihasilkan oleh plugin Anda, konfigurasi CMEK untuk Cloud Logging.

  • Anda tidak dapat mengubah mode enkripsi (dikelola Google atau CMEK) plugin. Namun, Anda dapat memperbarui plugin untuk menggunakan kunci KMS yang berbeda.

  • Hanya plugin regional yang didukung. Selain itu, plugin hanya dapat dienkripsi oleh kunci di region yang sama dengan plugin.

Apa langkah selanjutnya?