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 apa pun.

Jika memiliki persyaratan kepatuhan atau peraturan khusus terkait kunci yang melindungi data Anda, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk Cloud Tasks. Tugas Anda dan data terkait (isi dan header) dalam penyimpanan dilindungi menggunakan kunci enkripsi yang hanya dapat diakses oleh Anda, serta yang dapat Anda kontrol dan 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 dibuat 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 tugas tersebut berada di region tempat tugas tersebut 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 di antrean pull, tetapi tugas ini tidak dilindungi oleh CMEK. Pull queue jarang terjadi. Untuk memeriksa apakah antrean Anda adalah pull queue, jalankan perintah gcloud CLI berikut di terminal Anda:

    gcloud 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 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 telah mengaktifkan perutean tingkat antrean, lakukan hal berikut:

    1. Jalankan perintah gcloud CLI berikut di terminal Anda:

      gcloud 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, berarti antrean Anda mengaktifkan perutean tingkat antrean dan tidak kompatibel dengan CMEK. Untuk menghapus pemilihan rute tingkat antrean, lihat Memperbarui atau menghapus pemilihan rute 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. Dan jika memiliki task_ttl yang 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 berupa project yang berisi resource Cloud Tasks yang ingin Anda lindungi dengan CMEK. Jika Anda perlu menjalankan perintah di project yang berbeda, seperti project yang berisi resource Cloud KMS Anda, halaman ini akan menyertakan flag --project dalam perintah gcloud CLI 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, pertimbangkan untuk menyiapkan Cloud KMS dalam project terpisah.

  2. Cloud KMS menghasilkan Cloud Audit Logs 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 mana yang berlaku untuk kasus penggunaan Anda. Untuk mengetahui informasi selengkapnya, lihat 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 di project Anda:

    • 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 key 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 Copy resource name.

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

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

gcloud

  1. Cantumkan semua kunci 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 mencakup 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 tersebut

Anda harus memberikan peran Identity and Access Management (IAM) Cloud KMS CryptoKey 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 mengetik cloudtasks.iam.gserviceaccount.com di filter.

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

  4. Klik ikon pensil Edit principal.

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

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

  7. Klik Save.

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 petunjuk cara menemukannya, lihat 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 pada 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 jika Anda 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. Fungsi 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 petunjuk cara menemukannya, lihat Mengambil ID untuk kunci Cloud KMS. Jangan sertakan nomor versi kunci. Menyertakan nomor versi kunci dapat menyebabkan perintah ini gagal.

Untuk memastikan 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. Mengaktifkan CMEK (lihat bagian tentang mengaktifkan CMEK).
  2. Mengganti tugas yang sudah ada. Ada dua cara utama untuk melakukannya. Cara terbaik untuk melakukannya bergantung pada apa yang penting bagi Anda:

    • Continuous execution: Untuk memastikan eksekusi berkelanjutan ("pada paling tidak sekali" Anda dapat membuat ulang tugas terlebih dahulu, lalu menghapus tugas yang sudah ada setelah memastikan bahwa tugas baru tersebut berfungsi seperti yang diharapkan. Hal ini dapat mengakibatkan eksekusi duplikat karena tugas lama dan baru dapat dijalankan sebelum Anda menghapus tugas lama.

    • Pencegahan duplikat: Untuk mencegah eksekusi duplikat ("pada paling sekali" dikirim), 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 Anda.

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. Fitur 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 terenkripsi 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 Anda.

Menghapus Cloud KMS

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

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

  • Musnahkan kunci enkripsi yang dikelola pelanggan. Jika kunci CMEK dihapus, akses ke semua data yang dilindungi oleh versi kunci tersebut akan ditangguhkan 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 cloudkms.cryptoKeyEncrypterDecrypterIAM dari 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 apa pun yang dienkripsi CMEK.

Meskipun tidak 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 Proagasi 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.