Menggunakan kunci enkripsi yang dikelola pelanggan

Secara default, Cloud Tasks mengenkripsi konten pelanggan dalam penyimpanan. Cloud Tasks 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 Cloud Tasks. Dengan menggunakan kunci Cloud KMS, Anda dapat mengontrol tingkat perlindungan, lokasi, jadwal rotasi, izin penggunaan dan akses, serta batas kriptografisnya. Dengan menggunakan Cloud KMS, Anda juga dapat 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 Tasks mirip dengan menggunakan enkripsi default Google. Untuk mengetahui informasi selengkapnya tentang opsi enkripsi Anda, lihat Kunci enkripsi yang dikelola pelanggan (CMEK).

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 tidak ada aktivitas. Jika tugas dibuat saat CMEK diaktifkan, dan kunci kemudian dinonaktifkan (dengan menonaktifkan atau menghapus kunci, atau dengan menonaktifkan CMEK), tugas akan dienkripsi dengan kunci Anda, tetapi tidak dapat dieksekusi.

Tugas tidak dilindungi dengan CMEK dalam kasus berikut:

  • Tugas dibuat sebelum mengaktifkan CMEK
  • Tugas tidak berada di wilayah tempat CMEK diaktifkan
  • Tugas terpengaruh oleh batasan kompatibilitas

Batasan kompatibilitas

Integrasi Cloud Tasks dengan CMEK tidak mendukung hal berikut:

  • google-gax versi di bawah 4.0.0: Paket NPM google-gax untuk Node.js memiliki dukungan terbatas pada versi yang lebih lama dari 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 CMEK diaktifkan. Mengaktifkan CMEK tidak mencegah pembuatan atau pengoperasian (misalnya, eksekusi atau penghapusan) tugas ini.

  • Antrean pull: Jika mengaktifkan CMEK, Anda dapat membuat dan menjalankan tugas di antrean pull, tetapi tugas ini tidak dilindungi oleh CMEK. Antrean pull tidak umum. Untuk memeriksa apakah antrean Anda adalah antrean pull, 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 di antrean Anda.

  • Pemilihan rute tingkat antrean: Jika CMEK diaktifkan, Anda tidak dapat menerapkan pemilihan rute tingkat antrean. Selain itu, 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, antrean Anda telah mengaktifkan rute tingkat antrean dan tidak kompatibel dengan CMEK. Untuk menghapus rute tingkat antrean, lihat Memperbarui atau menghapus rute tingkat antrean. Jika output tidak menampilkan uriOverride dengan host yang ditentukan, antrean Anda tidak menggunakan pemilihan rute 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. Aktifkan API.

    Konsol

    1. Enable the Cloud KMS and Cloud Tasks APIs.

      Enable the APIs

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

      gcloud config set project PROJECT_ID

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

    3. Perbarui 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 dapat berupa project yang sama dengan resource Cloud Tasks Anda, tetapi untuk membatasi akses ke kunci Cloud KMS, sebaiknya Menyiapkan Cloud KMS di 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 bahwa logging diaktifkan untuk Cloud KMS API di project Anda, dan Anda telah memutuskan izin dan peran khusus logging mana yang berlaku untuk kasus penggunaan Anda. Untuk informasi selengkapnya, lihat Informasi logging audit Cloud KMS.

  3. Mendapatkan peran Identity and Access Management.

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

    • Aktifkan atau nonaktifkan CMEK: roles/cloudtasks.admin
    • Lihat kunci yang digunakan: roles/cloudtasks.viewer

    Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    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 dan key ring tersebut, lewati bagian ini. Jika belum, gunakan petunjuk ini untuk membuat kunci dan key ring Cloud KMS.

  1. Buat key ring.

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

    • Key ring dan resource Cloud Tasks yang dilindungi CMEK dapat berada di project yang sama, tetapi untuk membatasi akses ke kunci Cloud KMS, sebaiknya siapkan Cloud KMS di 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, lalu pilih tab Key inventory.

    Buka Inventaris kunci

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

  3. Klik Salin nama resource.

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

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

gcloud

  1. Mencantumkan semua kunci di key ring tertentu:

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

    Ganti kode berikut:

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

    Outputnya 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

Anda harus memberikan peran Identity and Access Management (IAM) Pengenkripsi/Pendekripsi CryptoKey Cloud KMS ke 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 akun utama.

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

  6. Telusuri dan pilih peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS.

  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 memenuhi syarat sepenuhnya 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 Selamat Datang pada Konsol Google Cloud 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 yang mengaktifkan 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 CMEK untuk Cloud Tasks.

Mengaktifkan CMEK untuk Cloud Tasks

Anda dapat mengaktifkan CMEK menggunakan API atau gcloud CLI. Untuk Cloud Tasks, CMEK diaktifkan berdasarkan region. Fitur ini tidak diaktifkan oleh setiap tugas. Jika CMEK diaktifkan untuk region tertentu di Cloud Tasks, semua tugas di region tersebut akan dilindungi oleh CMEK.

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 memenuhi syarat sepenuhnya 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.

REST

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

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

Mengaktifkan 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. Ganti tugas yang sudah ada. Ada dua cara utama untuk melakukannya. Cara terbaik untuk melakukannya bergantung pada hal yang penting bagi Anda:

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

    • Pencegahan duplikat: Untuk mencegah eksekusi duplikat ("paling banyak sekali" pengiriman), Anda dapat menghapus tugas lama terlebih dahulu, lalu membuatnya kembali. Hal ini dapat mengakibatkan hilangnya eksekusi, karena waktu yang berlalu antara penghapusan tugas lama dan pembuatan 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 menurut region. Tugas ini tidak dinonaktifkan oleh tugas individual. Jika CMEK dinonaktifkan untuk region tertentu di Cloud Tasks, tugas di region tersebut tidak akan dilindungi oleh CMEK.

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

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

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.

REST

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:

Menghapus 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. 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 menyebabkan error UNKNOWN di Cloud Logging. Anda dapat mengaktifkan kembali kunci nanti jika mau. Saat Anda menonaktifkan kunci enkripsi yang dikelola pelanggan, perlu waktu hingga 5 menit agar perubahan diterapkan.

  • Hancurkan 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 kunci tersebut kemudian dihancurkan, tugas akan dienkripsi dengan kunci Anda, tetapi tidak dapat dieksekusi. Jika tugas mencoba dieksekusi, Cloud Logging akan mencatat error UNKNOWN ke dalam log. Saat Anda menghancurkan kunci enkripsi yang dikelola pelanggan, perubahan tersebut dapat memerlukan waktu hingga 5 menit.

  • 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 yang dienkripsi CMEK.

Meskipun tidak ada operasi yang menjamin pencabutan akses secara instan, perubahan IAM umumnya diterapkan lebih cepat. Untuk mengetahui informasi selengkapnya, baca Konsistensi resource Cloud KMS dan Penerapan perubahan akses.

Harga

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