Menggunakan kunci enkripsi yang dikelola pelanggan

Secara default, Workflows mengenkripsi data Anda yang tersimpan dalam penyimpanan. Google Cloud menangani dan 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 dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk Alur kerja. Alur kerja Anda dan data dalam penyimpanan terkait dilindungi menggunakan kunci enkripsi yang hanya dapat Anda akses, serta dapat Anda kontrol dan kelola menggunakan Cloud Key Management Service (Cloud KMS).

Apa yang dilindungi dengan CMEK

Saat men-deploy alur kerja, Anda dapat menentukan kunci Cloud KMS. Kunci ini digunakan untuk mengenkripsi alur kerja dan eksekusinya:

  • Alur kerja memerlukan file sumber yang berisi definisi alur kerja yang valid. File sumber ini dienkripsi menggunakan kunci.

  • Eksekusi alur kerja menjalankan definisi alur kerja saat ini (revisi alur kerja tertentu). Dengan menggunakan kunci yang terkait dengan revisi alur kerja pada saat deployment, alur kerja yang dikompilasi, serta data input, output, dan runtime eksekusi yang disimpan akan dienkripsi. Hal ini mencakup argumen eksekusi, hasil, error, dan pengecualian; peristiwa Eventarc yang dikirim; serta permintaan dan respons callback serta HTTP.

Sebelum memulai

Sebelum menggunakan CMEK di Workflows, selesaikan langkah-langkah berikut:

  1. Mengaktifkan API.

    Konsol

    1. Enable the Cloud KMS and Workflows 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. Update komponen gcloud.
      gcloud components update
      
    3. Aktifkan Cloud KMS dan Workflows API untuk project yang akan menyimpan kunci enkripsi Anda.
      gcloud services enable cloudkms.googleapis.com workflows.googleapis.com
      
  2. Cloud KMS menghasilkan Cloud Audit Logs saat kunci diaktifkan, dinonaktifkan, atau digunakan oleh resource Workflows 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.

Membuat key ring dan kunci Cloud KMS

Anda dapat membuat key ring baru atau menggunakan yang sudah ada. Dalam key ring, Anda dapat menambahkan kunci baru atau menggunakan kunci yang sudah ada.

  1. Buat key ring.

  2. Membuat kunci untuk key ring yang ditentukan.

Mengambil ID resource untuk kunci Cloud KMS

ID resource untuk kunci Cloud KMS diperlukan saat Anda mengaktifkan CMEK untuk alur kerja. Dalam dokumen ini, lihat Mengaktifkan CMEK untuk alur kerja.

Konsol

  1. Di konsol Google Cloud, buka halaman Key management.

    Buka Key management

  2. Klik key ring yang berisi kunci tersebut.

  3. Untuk kunci yang ID resource-nya Anda ambil, klik More.

  4. 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
    
  5. Kunci berisi nol atau beberapa versi kunci. ID resource untuk versi kunci adalah ID kunci, ditambah garis miring (/), plus ID versi. Untuk menampilkan daftar semua versi kunci:

    1. Klik nama kunci.
    2. Untuk versi tertentu, klik Lainnya.
    3. Klik Copy resource name.

gcloud

  1. Cantumkan semua kunci pada key ring tertentu:

    gcloud kms keys list --keyring RING_NAME --location LOCATION
    

    Ganti kode berikut:

    • RING_NAME: nama key ring
    • LOCATION: wilayah key ring

    Output mencakup ID resource untuk setiap kunci. Contoh:

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    
  2. Kunci memiliki nol atau beberapa versi kunci. ID resource untuk versi kunci adalah ID kunci, plus garis miring (/), plus ID versi. Mencantumkan semua versi kunci:

    gcloud kms keys versions list --location LOCATION --keyring RING_NAME --key KEY_NAME
    

    Output-nya mencakup ID resource untuk setiap versi kunci. Contoh:

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME/2
    

Memberi agen layanan Workflows akses ke kunci tersebut

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

Konsol

Saat mengaktifkan CMEK untuk alur kerja melalui konsol, Anda akan diminta untuk memberikan peran Cloud KMS CryptoKey Encrypter/Decrypter ke akun layanan. Untuk informasi selengkapnya, dalam dokumen ini, lihat Mengaktifkan CMEK untuk alur kerja.

gcloud

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --keyring RING_NAME \
    --location LOCATION \
    --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

Ganti kode berikut:

  • KEY_NAME: nama kunci. Contoh, my-key.
  • RING_NAME: nama key ring. Misalnya, my-keyring.
  • LOCATION: lokasi kunci. Misalnya, us-central1.
  • PROJECT_NUMBER: nomor project Google Cloud Anda. Anda dapat menemukan nomor project di halaman Welcome pada Google Cloud Console atau dengan menjalankan perintah berikut:

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

Selama agen layanan memiliki peran roles/cloudkms.cryptoKeyEncrypterDecrypter, alur kerja dalam project Anda 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 alur kerja

Saat membuat alur kerja atau memperbaruinya setelahnya, Anda dapat menentukan kunci Cloud KMS yang harus digunakan alur kerja untuk enkripsi data.

Konsol

  1. Di konsol Google Cloud, buka halaman Workflows.

    Buka Workflows

  2. Klik nama alur kerja yang ingin Anda perbarui.

    Halaman Detail alur kerja akan muncul.

  3. Klik Edit.

  4. Pilih Kunci enkripsi yang dikelola pelanggan (CMEK).

  5. Pada daftar Select a customer-managed key, pilih atau filter untuk kunci Cloud KMS.

  6. Opsional: Untuk memasukkan nama resource kunci secara manual, pada daftar Select a customer-managed key, klik Enter key manually, lalu masukkan nama resource kunci dalam format yang ditentukan.

  7. Jika diminta, berikan peran cloudkms.cyptoKeyEncrypterDecrypter ke akun layanan Alur kerja dengan peran workflows.serviceAgent.

  8. Klik Next.

  9. Untuk menyimpan perubahan dan men-deploy alur kerja yang diupdate, klik Deploy.

gcloud

gcloud workflows deploy WORKFLOW_NAME \
    --source=SOURCE_FILE \
    --kms-key=KEY \
    --location LOCATION \
    --service-account=SERVICE_ACCOUNT

Ganti kode berikut:

  • WORKFLOW_NAME: nama alur kerja Anda
  • SOURCE_FILE: file sumber alur kerja Anda dengan ekstensi file yaml untuk file YAML, atau dengan ekstensi file json untuk file JSON; misalnya, myWorkflow.yaml.
  • KEY: ID resource kunci dalam format projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME. Anda dapat mengambil ID kunci.

  • LOCATION: lokasi alur kerja

  • SERVICE_ACCOUNT: akun layanan yang akan digunakan alur kerja Anda untuk mengakses layanan Google Cloud lainnya; misalnya, SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com. Sebaiknya gunakan akun layanan dengan hak istimewa terendah yang diperlukan untuk mengakses resource yang diperlukan. Jika dibiarkan kosong, akun layanan default akan digunakan. Untuk mengetahui informasi selengkapnya, lihat bagian Memberikan izin alur kerja untuk mengakses resource Google Cloud.

Perhatikan hal-hal berikut:

  • Revisi dan eksekusi alur kerja dienkripsi dengan kunci yang ditentukan pada saat deployment; resource yang sebelumnya dienkripsi dengan kunci sebelumnya tetap dienkripsi dengan kunci sebelumnya. Jika alur kerja selanjutnya diedit dan kunci baru ditentukan, revisi alur kerja tersebut akan dienkripsi dengan kunci baru, dan setiap eksekusi berikutnya akan menggunakan kunci baru.
  • Revisi dan eksekusi alur kerja yang sebelumnya tidak dienkripsi dengan CMEK tetap tidak dienkripsi.
  • Jika Anda menonaktifkan CMEK untuk revisi alur kerja, eksekusi berikutnya akan dibuat tanpa enkripsi CMEK. Dalam dokumen ini, lihat Menonaktifkan CMEK untuk alur kerja. Revisi dan eksekusi alur kerja yang ada tetap dienkripsi dengan kunci yang sebelumnya dienkripsi.

Memverifikasi integrasi Cloud KMS

Anda dapat memverifikasi integrasi CMEK dengan menampilkan metadata untuk alur kerja.

Konsol

  1. Di konsol Google Cloud, buka halaman Workflows.

    Buka Workflows

  2. Klik nama alur kerja yang ingin Anda verifikasi.

    Halaman Detail alur kerja akan muncul.

  3. Klik tab Details.

    Nilai Encryption menampilkan ID resource dari kunci Cloud KMS yang digunakan untuk mengamankan alur kerja dan eksekusinya.

gcloud

gcloud workflows describe WORKFLOW_NAME \
    --location=LOCATION

Outputnya akan mirip dengan berikut ini:

createTime: '2022-08-10T19:57:58.233177709Z'
cryptoKeyName: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
name: projects/PROJECT_NAME/locations/LOCATION/workflows/WORKFLOW_NAME
revisionCreateTime: '2022-11-18T19:44:04.933633237Z'
revisionId: 000009-8be
serviceAccount: projects/PROJECT_NAME/serviceAccounts/SA_NAME@PROJECT_NAME.iam.gserviceaccount.com
sourceContents:
[...]
state: ACTIVE
updateTime: '2022-11-18T19:44:05.171793128Z'

Nilai cryptokeyName adalah ID resource dari kunci Cloud KMS yang digunakan untuk mengamankan alur kerja dan eksekusinya.

Menonaktifkan CMEK untuk alur kerja

Anda dapat menonaktifkan CMEK untuk alur kerja agar tidak lagi menggunakan kunci Cloud KMS terkait.

Konsol

  1. Di konsol Google Cloud, buka halaman Workflows.

    Buka Workflows

  2. Klik nama alur kerja yang ingin Anda perbarui.

    Halaman Detail alur kerja akan muncul.

  3. Klik Edit.

  4. Untuk menghapus tombol pilihan Customer-managed encryption key (CMEK), pilih Kunci enkripsi yang dikelola Google.

  5. Klik Next.

  6. Untuk menyimpan perubahan dan men-deploy alur kerja yang diupdate, klik Deploy.

gcloud

gcloud workflows deploy WORKFLOW_NAME \
    --source=SOURCE_FILE \
    --clear-kms-key \
    --service-account=SERVICE_ACCOUNT

Tindakan ini akan menonaktifkan CMEK untuk revisi alur kerja saat ini dan semua eksekusi berikutnya akan dibuat tanpa enkripsi CMEK. Revisi dan eksekusi alur kerja yang ada tetap dienkripsi dengan kunci yang sebelumnya dienkripsi.

Nonaktifkan Cloud KMS

Jika ingin mencabut akses data ke eksekusi alur kerja atau alur kerja, Anda dapat melakukan salah satu tindakan berikut untuk menonaktifkan Cloud KMS:

  • Nonaktifkan atau destroy versi kunci utama dari kunci enkripsi yang dikelola pelanggan Anda. Menonaktifkan versi kunci CMEK akan menangguhkan akses ke semua data yang dilindungi oleh versi kunci tersebut. Menghancurkan versi kunci adalah kebalikan permanen dari tindakan ini. Keduanya hanya memengaruhi alur kerja dan eksekusi alur kerja yang terkait dengan kunci tertentu. Anda tidak dapat membuat eksekusi baru atau melihat resource yang terkait dengan kunci yang dinonaktifkan atau dihancurkan. Setiap eksekusi aktif akan gagal dengan pesan error yang sesuai.

  • Cabut peran IAM cloudkms.cryptoKeyEncrypterDecrypterdari agen layanan alur kerja. Hal ini memengaruhi semua alur kerja di project Google Cloud yang mendukung enkripsi menggunakan CMEK. Anda tidak dapat membuat alur kerja dan eksekusi baru yang terintegrasi dengan CMEK, atau melihat resource apa pun yang dienkripsi CMEK. Setiap eksekusi aktif akan gagal dengan pesan error yang sesuai.

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

Pemecahan masalah

Anda mungkin mengalami error saat menggunakan Cloud KMS dengan Alur kerja. Tabel berikut menjelaskan berbagai masalah dan cara mengatasinya.

Masalah Deskripsi
Izin cloudkms.cryptoKeyVersions.useToEncrypt ditolak Kunci Cloud KMS yang diberikan tidak ada atau izin tidak dikonfigurasi dengan benar.

Solusi:

Versi kunci tidak diaktifkan Versi kunci Cloud KMS yang disediakan telah dinonaktifkan.

Solusi: Aktifkan kembali versi kunci Cloud KMS.

Region key ring tidak cocok dengan resource yang akan dilindungi Region key ring KMS yang disediakan berbeda dengan region alur kerja.

Solusi: Gunakan key ring Cloud KMS dan alur kerja yang dilindungi dari region yang sama. (Perhatikan bahwa keduanya dapat berada di project yang berbeda.) Untuk mengetahui informasi selengkapnya, lihat Lokasi Cloud KMS dan Lokasi alur kerja.

Batas kuota Cloud KMS terlampaui Batas kuota Anda untuk permintaan Cloud KMS telah tercapai.

Solusi: Batasi jumlah panggilan Cloud KMS atau tingkatkan batas kuota. Untuk mengetahui informasi selengkapnya, lihat kuota Cloud KMS.

Cara penanganan status kunci yang tidak tersedia

Jika Cloud KMS tidak tersedia karena alasan tertentu, Workflows mungkin tidak dapat mengambil status kunci Anda dari Cloud KMS.

Jika status kunci tidak tersedia, alur kerja atau eksekusinya akan menampilkan nilai state: UNAVAILABLE dan detail terkait di kolom stateError.

Jika status kunci menjadi tidak tersedia selama eksekusi alur kerja (misalnya, izin dicabut selama callback), terjadi error runtime, menampilkan nilai state: FAILED, dan detail terkait di kolom error.

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.