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 bawah4.0.0
: Paket NPMgoogle-gax
untuk Node.js memiliki dukungan terbatas pada versi di bawah4.0.0
. Untuk versi ini, CMEK hanya didukung di regionus-central1
. Meskipun Anda hanya memiliki tugas di region tersebut, sebaiknya upgrade ke versi4.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 adalahpull
, antrean Anda adalah antrean pull. Jikatype
yang tercantum adalahpush
, 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:
Jalankan perintah gcloud CLI berikut di terminal Anda:
Gantigcloud tasks queues describe QUEUE_NAME
QUEUE_NAME
dengan nama antrean Anda.Pada output, cari kolom
httpTarget
dan periksa apakahuriOverride
telah ditetapkan. Jikahost
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 menampilkanuriOverride
denganhost
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 memilikitask_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:
Mengaktifkan API.
Konsol
-
Aktifkan API Cloud KMS and Cloud Tasks.
gcloud
Di konsol Google Cloud, 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.
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.Update komponen
gcloud
.gcloud components update
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_IDGanti
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.
-
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.
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.
-
Mengaktifkan atau menonaktifkan CMEK:
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.
-
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.
Mengambil ID untuk kunci Cloud KMS
ID resource untuk kunci Cloud KMS diperlukan saat Anda mengaktifkan CMEK untuk Cloud Tasks.
Konsol
Di Konsol Google Cloud, buka halaman Key management dan pilih tab Key inventory.
Untuk kunci yang ID resource-nya Anda ambil, klik more_vert Actions.
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
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 ringLOCATION
: wilayah key ringPROJECT_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
Di konsol Google Cloud, buka halaman Identity and Access Management.
Centang kotak Include Google-provided role grants.
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
.Klik ikon pensil Edit principal.
Di panel yang terbuka, klik Tambahkan peran lain.
Telusuri dan pilih peran Cloud KMS CryptoKey Encrypter/Decrypter.
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:
- REST: Gunakan metode
updateCmekConfig
. - RPC: Gunakan metode
UpdateCmekConfigRequest
.
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 AndaKEY_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:
- Mengaktifkan CMEK (lihat bagian tentang mengaktifkan CMEK).
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:
- REST: Gunakan metode
updateCmekConfig
. - RPC: Gunakan metode
UpdateCmekConfigRequest
.
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.cryptoKeyEncrypterDecrypter
IAM 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.