Menggunakan kunci enkripsi yang dikelola pelanggan

Secara default, Cloud Tasks mengenkripsi data Anda yang tersimpan dalam penyimpanan. Google Cloud mengelola enkripsi default ini untuk Anda tanpa perlu tindakan tambahan.

Jika memiliki persyaratan kepatuhan atau peraturan khusus terkait kunci yang melindungi data, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk Cloud Tasks. Tugas dan data terkait (isi dan header) dalam penyimpanan dilindungi menggunakan kunci enkripsi yang hanya dapat diakses oleh Anda, dan yang dapat Anda kontrol serta kelola menggunakan Cloud Key Management Service (Cloud KMS).

Apa yang dilindungi dengan CMEK

Saat mengaktifkan CMEK di Cloud Tasks, Anda mengaktifkannya untuk suatu region. Jika diaktifkan, isi dan header tugas yang dibuat di region tersebut akan dilindungi dengan kunci Anda saat dalam penyimpanan. Jika tugas dibuat saat CMEK diaktifkan, dan kunci kemudian dijadikan tidak aktif (dengan menonaktifkan atau menghapus kunci, atau dengan menonaktifkan CMEK), tugas akan dienkripsi dengan kunci Anda tetapi tidak dapat dijalankan.

Tugas tidak dilindungi dengan CMEK dalam kasus berikut:

  • Tugas dibuat sebelum mengaktifkan CMEK
  • Tugas tidak berada di region tempat CMEK diaktifkan
  • Tugas dipengaruhi oleh batasan kompatibilitas

Batasan kompatibilitas

Integrasi Cloud Tasks dengan CMEK tidak mendukung hal berikut:

  • Versi google-gax di bawah 4.0.0: Paket NPM google-gax untuk Node.js memiliki dukungan terbatas pada versi di bawah 4.0.0. Untuk versi ini, CMEK hanya didukung di region us-central1. Meskipun Anda hanya memiliki tugas di region tersebut, sebaiknya upgrade ke versi 4.0.0 atau yang lebih baru.

  • Layanan Taskqueue bawaan App Engine: Tugas yang dibuat menggunakan layanan Taskqueue bawaan App Engine tidak dilindungi oleh CMEK, meskipun berada di region tempatnya diaktifkan. Mengaktifkan CMEK tidak mencegah pembuatan atau operasi (misalnya, eksekusi atau penghapusan) tugas ini.

  • Pull queue: Jika mengaktifkan CMEK, Anda dapat membuat dan menjalankan tugas pada antrean pull, tetapi tugas ini tidak dilindungi oleh CMEK. Antrean pull jarang terjadi. Untuk memeriksa apakah antrean Anda adalah pull queue, jalankan perintah gcloud CLI berikut di terminal Anda:

    gcloud beta tasks queues describe QUEUE_NAME
    

    Ganti QUEUE_NAME dengan nama antrean Anda.

    Jika type yang tercantum adalah pull, antrean Anda adalah antrean pull. Jika type yang tercantum adalah push, batasan ini tidak akan memengaruhi tugas pada antrean Anda.

  • Pemilihan rute tingkat antrean: Jika CMEK diaktifkan, Anda tidak dapat menerapkan perutean tingkat antrean. Jika perutean tingkat antrean diaktifkan, Anda tidak dapat mengaktifkan CMEK. Untuk memeriksa apakah Anda mengaktifkan pemilihan rute tingkat antrean, lakukan hal berikut:

    1. Jalankan perintah gcloud CLI berikut di terminal Anda:

      gcloud beta tasks queues describe QUEUE_NAME
      Ganti QUEUE_NAME dengan nama antrean Anda.

    2. Pada output, cari kolom httpTarget dan periksa apakah uriOverride telah ditetapkan. Jika host ditentukan, perutean tingkat antrean Anda diaktifkan dan tidak kompatibel dengan CMEK. Untuk menghapus perutean tingkat antrean, lihat Memperbarui atau menghapus perutean tingkat antrean. Jika output tidak menampilkan uriOverride dengan host yang ditentukan, antrean Anda tidak akan menggunakan perutean tingkat antrean.

  • TTL Tugas: Jika CMEK diaktifkan, Anda tidak dapat menetapkan task_ttl ke lebih dari 60 hari. Selain itu, jika task_ttl ditetapkan ke lebih dari 60 hari, Anda tidak dapat mengaktifkan CMEK.

Sebelum memulai

Sebelum menggunakan CMEK di Cloud Tasks, selesaikan langkah-langkah berikut:

  1. Mengaktifkan API.

    Konsol

    1. Enable the Cloud KMS and Cloud Tasks APIs.

      Enable the APIs

    gcloud

    1. Di konsol Google Cloud, aktifkan Cloud Shell.

      Aktifkan Cloud Shell

      Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

    2. Tetapkan project default Anda. Project ini harus berisi resource Cloud Tasks yang ingin Anda lindungi dengan CMEK. Jika Anda perlu menjalankan perintah di project lain, seperti project yang berisi resource Cloud KMS, halaman ini akan menyertakan flag --project dalam perintah CLI gcloud dan memberi tahu Anda project mana yang harus ditentukan.

      gcloud config set project PROJECT_ID
      

      Ganti PROJECT_ID dengan ID project yang berisi resource Cloud Tasks Anda.

    3. Update komponen gcloud.

      gcloud components update
      

    4. Aktifkan Cloud KMS dan Cloud Tasks API untuk project yang akan menyimpan kunci enkripsi Anda.

      gcloud services enable cloudkms.googleapis.com cloudtasks.googleapis.com 
      --project=PROJECT_ID

      Ganti PROJECT_ID dengan ID project yang akan menyimpan kunci enkripsi Anda. Project ini bisa jadi sama dengan resource Cloud Tasks Anda, tetapi untuk membatasi akses ke kunci Cloud KMS Anda, pertimbangkan untuk Menyiapkan Cloud KMS dalam project terpisah.

  2. Cloud KMS menghasilkan Log Audit Cloud saat kunci diaktifkan, dinonaktifkan, atau digunakan oleh resource Cloud Tasks untuk mengenkripsi dan mendekripsi data. Pastikan logging diaktifkan untuk Cloud KMS API dalam project Anda dan Anda telah memutuskan izin dan peran khusus logging yang berlaku untuk kasus penggunaan Anda. Untuk mengetahui informasi lebih lanjut, baca Informasi logging audit Cloud KMS.

  3. Mendapatkan peran Identity and Access Management.

    Untuk mendapatkan izin yang diperlukan untuk menggunakan CMEK dengan Cloud Tasks, minta administrator untuk memberi Anda peran IAM berikut pada project:

    • Mengaktifkan atau menonaktifkan CMEK: roles/cloudtasks.admin
    • Lihat kunci yang digunakan: roles/cloudtasks.viewer

    Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Membuat key ring dan kunci Cloud KMS

Jika Anda sudah memiliki key ring di region yang sama dengan resource Cloud Tasks dan ingin menggunakan kunci serta keyring tersebut, lewati bagian ini. Jika belum, gunakan petunjuk ini untuk membuat kunci dan key ring Cloud KMS Anda.

  1. Buat key ring.

    • Key ring harus berada di region yang berisi resource Cloud Tasks yang ingin Anda lindungi. Untuk mengetahui informasi selengkapnya, lihat lokasi Cloud KMS dan lokasi Cloud Tasks.

    • Key ring dan resource Cloud Tasks yang dilindungi CMEK dapat berada dalam project yang sama, tetapi untuk membatasi akses ke kunci Cloud KMS Anda, pertimbangkan untuk menyiapkan Cloud KMS dalam project terpisah.

  2. Membuat kunci untuk key ring yang ditentukan.

Mengambil ID untuk kunci Cloud KMS

ID resource untuk kunci Cloud KMS diperlukan saat Anda mengaktifkan CMEK untuk Cloud Tasks.

Konsol

  1. Di konsol Google Cloud, buka halaman Key management dan pilih tab Key inventory.

    Buka Inventaris kunci

  2. Untuk kunci yang ID resource-nya Anda ambil, klik Actions.

  3. Klik Salin nama resource.

    ID resource untuk kunci disalin ke papan klip Anda. Formatnya mirip dengan berikut ini:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

gcloud

  1. Mencantumkan semua tombol pada key ring tertentu:

    gcloud kms keys list --keyring=KEY_RING --location=LOCATION --project=PROJECT_ID
    

    Ganti kode berikut:

    • KEY_RING: nama key ring
    • LOCATION: wilayah key ring
    • PROJECT_ID: ID project yang berisi key ring

    Output menyertakan ID kunci untuk setiap kunci. Contoh:

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

Memberi agen layanan Cloud Tasks akses ke kunci

Anda harus memberikan peran Identity and Access Management (IAM) Cloud KMS Encrypter/Decrypter kepada agen layanan Cloud Tasks agar dapat mengakses kunci Cloud KMS:

Konsol

  1. Di konsol Google Cloud, buka halaman Identity and Access Management.

    Buka IAM

  2. Centang kotak Include Google-provided role grants.

  3. Temukan akun layanan Cloud Tasks dengan mengetikkan cloudtasks.iam.gserviceaccount.com di filter.

    Akun layanan Cloud Tasks memiliki formulir service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com.

  4. Klik ikon pensil Edit akun utama.

  5. Di panel yang terbuka, klik Tambahkan peran lain.

  6. Telusuri dan pilih peran Cloud KMS Bigtable Encrypter/Decrypter.

  7. Klik Simpan.

gcloud

gcloud kms keys add-iam-policy-binding KEY_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com \
    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Ganti kode berikut:

  • KEY_ID: ID resource yang sepenuhnya memenuhi syarat untuk kunci Anda. Untuk mengetahui petunjuk cara menemukannya, baca Mengambil ID untuk kunci Cloud KMS. Jangan sertakan nomor versi kunci. Menyertakan nomor versi kunci dapat menyebabkan perintah ini gagal.
  • PROJECT_NUMBER: nomor project Google Cloud Anda. Anda dapat menemukan nomor project di halaman Welcome di Google Cloud Console atau dengan menjalankan perintah berikut:

    PROJECT=$(gcloud info --format='value(config.project)')
    gcloud projects describe ${PROJECT} --format="value(projectNumber)"
    

Selama agen layanan memiliki peran roles/cloudkms.cryptoKeyEncrypterDecrypter, tugas di region Anda yang mendukung CMEK dapat mengenkripsi dan mendekripsi datanya menggunakan kunci CMEK. Jika Anda mencabut peran ini, atau menonaktifkan atau menghancurkan kunci CMEK, data tersebut tidak dapat diakses. Dalam dokumen ini, lihat Menonaktifkan Cloud KMS.

Mengaktifkan CMEK untuk Cloud Tasks

Anda dapat mengaktifkan CMEK menggunakan API atau gcloud CLI. Untuk Cloud Tasks, CMEK diaktifkan berdasarkan region. Ini tidak diaktifkan oleh tugas individu. Saat CMEK diaktifkan untuk region tertentu di Cloud Tasks, semua tugas di region tersebut dilindungi oleh CMEK.

API

Anda dapat mengaktifkan CMEK dengan memanggil metode Update CMEK config. Cloud Tasks API menyediakan metode Update CMEK config di REST API dan RPC API:

gcloud

Untuk mengaktifkan CMEK menggunakan Google Cloud CLI, gunakan perintah berikut:

gcloud tasks cmek-config update --location=LOCATION --kms-key-name=KEY_ID

Ganti kode berikut:

  • LOCATION: region resource Cloud Tasks Anda
  • KEY_ID: ID resource yang sepenuhnya memenuhi syarat untuk kunci Anda. Untuk mengetahui petunjuk cara menemukannya, baca Mengambil ID untuk kunci Cloud KMS. Jangan sertakan nomor versi kunci. Menyertakan nomor versi kunci dapat menyebabkan perintah ini gagal.

Untuk memastikan bahwa kunci berhasil diaktifkan, ikuti petunjuk di bagian Mengidentifikasi kunci yang digunakan.

Aktifkan untuk tugas yang sudah ada

CMEK tidak melindungi tugas yang dibuat sebelum mengaktifkan CMEK untuk Cloud Tasks. Untuk melindungi tugas yang sudah ada dengan CMEK:

  1. Aktifkan CMEK (lihat bagian tentang mengaktifkan CMEK).
  2. Mengganti tugas yang sudah ada. Ada dua cara utama untuk melakukan hal ini. Cara terbaik untuk melakukannya bergantung pada apa yang penting bagi Anda:

    • Eksekusi berkelanjutan: Untuk memastikan eksekusi berkelanjutan ("setidaknya sekali" Anda dapat membuat ulang tugas terlebih dahulu, lalu menghapus tugas yang sudah ada setelah memastikan bahwa tugas baru berfungsi seperti yang diharapkan. Hal ini dapat menyebabkan eksekusi duplikat karena tugas lama dan baru dapat dijalankan sebelum Anda menghapus tugas lama.

    • Pencegahan duplikat: Untuk mencegah eksekusi duplikat ("penayangan paling sekali"), Anda dapat menghapus tugas lama terlebih dahulu, lalu membuatnya kembali. Hal ini dapat mengakibatkan hilangnya eksekusi karena waktu yang berlalu antara menghapus tugas lama dan membuat tugas baru.

Mengidentifikasi kunci yang digunakan

Untuk mengidentifikasi kunci CMEK yang digunakan untuk resource Cloud Tasks, jalankan perintah gcloud CLI berikut di terminal Anda:

gcloud tasks cmek-config describe --location=LOCATION

Ganti LOCATION dengan region resource Cloud Tasks.

Jika tidak ada output, CMEK tidak dikonfigurasi untuk lokasi yang ditentukan.

Menonaktifkan CMEK untuk Cloud Tasks

Anda dapat menonaktifkan CMEK menggunakan API atau gcloud CLI. Untuk Cloud Tasks, CMEK dinonaktifkan berdasarkan region. Ini tidak dinonaktifkan oleh tugas individu. Saat CMEK dinonaktifkan untuk region tertentu di Cloud Tasks, tugas di region tersebut tidak dilindungi oleh CMEK.

Menonaktifkan CMEK memengaruhi tugas yang dibuat di masa mendatang, bukan tugas yang dibuat sebelumnya:

  • Tugas baru: tidak dilindungi oleh CMEK
  • Tugas yang sudah ada: Tugas yang dibuat saat CMEK diaktifkan akan tetap dienkripsi dan terus dijalankan selama kunci Cloud KMS tetap aktif.

API

Anda dapat menonaktifkan CMEK dengan memanggil metode Update CMEK config dan menghapus kunci Cloud KMS dengan menggantinya dengan string kosong. Cloud Tasks API menyediakan metode Update CMEK config di REST API dan RPC API:

gcloud

Untuk menonaktifkan CMEK menggunakan Google Cloud CLI, gunakan perintah berikut:

gcloud tasks cmek-config update --location=LOCATION --clear-kms-key

Ganti kode berikut:

  • LOCATION: region resource Cloud Tasks.

Hapus Cloud KMS

Jika ingin mencabut akses data ke tugas, Anda dapat menghapus Cloud KMS. Ada tiga cara untuk melakukannya:

  • Nonaktifkan kunci enkripsi yang dikelola pelanggan. Jika kunci CMEK dinonaktifkan, akses ke semua data yang dilindungi oleh versi kunci tersebut akan ditangguhkan saat kunci tersebut dinonaktifkan. Anda tidak dapat mengakses atau membuat tugas dengan kunci yang dinonaktifkan. Mencoba menjalankan tugas yang dilindungi CMEK saat kunci dinonaktifkan akan menyebabkan error UNKNOWN di Cloud Logging. Anda dapat mengaktifkan kembali kunci tersebut nanti jika ingin. Jika Anda menonaktifkan kunci enkripsi yang dikelola pelanggan, diperlukan waktu hingga 5 menit agar perubahan diterapkan.

  • Musnahkan kunci enkripsi yang dikelola pelanggan. Menghancurkan kunci CMEK akan menangguhkan akses ke semua data yang dilindungi oleh versi kunci tersebut secara permanen. Anda tidak dapat mengakses atau membuat tugas dengan kunci yang telah dihancurkan. Jika tugas dibuat saat CMEK diaktifkan, dan kuncinya kemudian dihancurkan, tugas akan dienkripsi dengan kunci Anda, tetapi tidak dapat dijalankan. Jika tugas dicoba dijalankan, Cloud Logging akan mencatat error UNKNOWN. Saat Anda menghancurkan kunci enkripsi yang dikelola pelanggan, diperlukan waktu hingga 5 menit agar perubahan diterapkan.

  • Cabut peran IAM cloudkms.cryptoKeyEncrypterDecrypterdari agen layanan Cloud Tasks. Hal ini memengaruhi semua tugas dalam project Google Cloud yang mendukung enkripsi menggunakan CMEK. Anda tidak dapat membuat tugas baru yang terintegrasi dengan CMEK atau melihat resource yang dienkripsi CMEK.

Meskipun tidak ada satu pun dari operasi ini yang menjamin pencabutan akses secara instan, perubahan IAM umumnya berlaku lebih cepat. Untuk mengetahui informasi selengkapnya, lihat Konsistensi resource Cloud KMS dan propagasi perubahan akses.

Harga

Integrasi ini tidak menimbulkan biaya tambahan di luar operasi kunci, yang ditagihkan ke project Google Cloud Anda. Untuk mengetahui informasi harga saat ini, lihat Harga Cloud KMS.