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 bawah4.0.0
: Paket NPMgoogle-gax
untuk Node.js memiliki dukungan terbatas pada versi yang lebih lama dari4.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 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 adalahpull
, antrean Anda adalah antrean pull. Jikatype
yang tercantum adalahpush
, 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:
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, 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 menampilkanuriOverride
denganhost
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, jikatask_ttl
ditetapkan ke lebih dari 60 hari, Anda tidak dapat mengaktifkan CMEK.
Sebelum memulai
Sebelum menggunakan CMEK di Cloud Tasks, selesaikan langkah-langkah berikut:
Aktifkan 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. 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.Perbarui 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 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.
-
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.
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.
-
Aktifkan atau nonaktifkan 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 kunci dan key ring tersebut, lewati bagian ini. Jika belum, gunakan petunjuk ini untuk membuat kunci dan key ring Cloud KMS.
-
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.
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, lalu pilih tab Key inventory.
Untuk kunci yang ID resource-nya Anda ambil, klik more_vert Tindakan.
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
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 ringLOCATION
: region key ringPROJECT_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
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.
di filter.Akun layanan Cloud Tasks memiliki format
service-PROJECT_NUMBER@gcp-sa-cloudtasks.
.Klik ikon pensil Edit akun utama.
Di panel yang terbuka, klik Tambahkan peran lain.
Telusuri dan pilih peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS.
Klik Simpan.
gcloud
gcloud kms keys add-iam-policy-binding KEY_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudtasks. \ --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 AndaKEY_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:
- REST: Gunakan metode
updateCmekConfig
. - RPC: Gunakan metode
UpdateCmekConfigRequest
.
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:
- Aktifkan CMEK (lihat bagian tentang mengaktifkan CMEK).
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:
- REST: Gunakan metode
updateCmekConfig
. - RPC: Gunakan metode
UpdateCmekConfigRequest
.
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.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 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.