Menggunakan kunci enkripsi yang dikelola pelanggan

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

Anda dapat melindungi alur kerja dan data terkait dalam penyimpanan menggunakan kunci enkripsi yang hanya dapat Anda akses, dan yang dapat Anda kontrol dan kelola menggunakan Cloud KMS.

Yang dilindungi dengan CMEK

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

  • 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 Alur Kerja, selesaikan langkah-langkah berikut:

  1. Aktifkan API.

    Konsol

    1. Enable the Cloud KMS and Workflows 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. Perbarui 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 Alur Kerja 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.

Membuat key ring dan kunci Cloud KMS

Anda dapat membuat key ring baru atau menggunakan key ring yang sudah ada. Dalam key ring, Anda dapat menambahkan kunci baru atau menggunakan kunci yang 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.

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

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

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

gcloud

  1. Mencantumkan semua kunci di key ring tertentu:

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

    Ganti kode berikut:

    • RING_NAME: nama key ring
    • LOCATION: region key ring

    Outputnya 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, ditambah garis miring (/), ditambah ID versi. Mencantumkan semua versi untuk kunci:

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

    Outputnya 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

Anda harus memberikan peran Identity and Access Management (IAM) Pengenkripsi/Pendekripsi CryptoKey Cloud KMS 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 Pengenkripsi/Pendekripsi Cloud KMS CryptoKey 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. Contoh, my-keyring.
  • LOCATION: lokasi kunci. Contoh, us-central1.
  • 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:

    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, Anda dapat menentukan kunci Cloud KMS yang harus digunakan oleh alur kerja untuk enkripsi data.

Konsol

  1. Di konsol Google Cloud, buka halaman Workflows.

    Buka Workflows

  2. Klik nama alur kerja yang ingin diperbarui.

    Halaman Detail alur kerja akan muncul.

  3. Klik Edit.

  4. Pilih Kunci Cloud KMS.

  5. Pilih Jenis kunci.

    Anda dapat mengelola kunci secara manual atau menggunakan Autokey yang memungkinkan Anda membuat ring kunci dan kunci sesuai permintaan. Jika dinonaktifkan, opsi Kunci Otomatis belum terintegrasi dengan jenis resource saat ini.

  6. Di daftar Select a Cloud KMS key, pilih atau filter kunci Cloud KMS.

  7. Opsional: Untuk memasukkan nama resource kunci secara manual, di daftar Pilih kunci yang dikelola pelanggan, klik Masukkan kunci secara manual, lalu masukkan nama resource kunci dalam format yang ditentukan.

  8. Jika diminta, berikan peran cloudkms.cyptoKeyEncrypterDecrypter ke akun layanan Workflows dengan peran workflows.serviceAgent.

  9. Klik Berikutnya.

  10. Untuk menyimpan perubahan dan men-deploy alur kerja yang diperbarui, 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. Kami sangat merekomendasikan penggunaan 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 Memberikan izin alur kerja untuk mengakses resource Google Cloud.

Perhatikan 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 tersebut. Jika alur kerja kemudian diedit dan kunci baru ditentukan, revisi alur kerja tersebut akan dienkripsi dengan kunci baru, dan eksekusi berikutnya akan menggunakan kunci baru.
  • Revisi dan eksekusi alur kerja yang sebelumnya dienkripsi non-CMEK tetap tidak diekripsi.
  • 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 digunakan untuk mengenkripsi.

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 diverifikasi.

    Halaman Workflows details akan muncul.

  3. Klik tab Detail.

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

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 kunci Cloud KMS yang digunakan untuk mengamankan alur kerja dan eksekusinya.

Menonaktifkan CMEK untuk alur kerja

Anda dapat menonaktifkan CMEK untuk alur kerja sehingga 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 diperbarui.

    Halaman Detail alur kerja akan muncul.

  3. Klik Edit.

  4. Untuk menghapus tombol pilihan Kunci Cloud KMS, pilih Kunci enkripsi yang dikelola Google.

  5. Klik Berikutnya.

  6. Untuk menyimpan perubahan dan men-deploy alur kerja yang diperbarui, 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 eksekusi berikutnya akan dibuat tanpa enkripsi CMEK. Revisi dan eksekusi alur kerja yang ada tetap dienkripsi dengan kunci yang sebelumnya mengenkripsinya.

Menonaktifkan Cloud KMS

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

  • Nonaktifkan atau hancurkan versi kunci utama dari kunci enkripsi yang dikelola pelanggan. Menonaktifkan versi kunci CMEK akan menangguhkan akses ke semua data yang dilindungi oleh versi kunci tersebut. Menghancurkan versi kunci adalah tindakan permanen yang setara dengan 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.cryptoKeyEncrypterDecrypter dari agen layanan Alur Kerja. Hal ini memengaruhi semua alur kerja dalam project Google Cloud yang mendukung enkripsi menggunakan CMEK. Anda tidak dapat membuat alur kerja dan eksekusi baru yang terintegrasi dengan CMEK, atau melihat resource yang dienkripsi CMEK. Setiap eksekusi aktif akan gagal dengan pesan error yang sesuai.

Meskipun kedua operasi tersebut tidak menjamin pencabutan akses secara instan, perubahan IAM umumnya diterapkan lebih cepat. Untuk mengetahui informasi selengkapnya, baca Konsistensi resource Cloud KMS dan Penerapan 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 disediakan tidak ada atau izin tidak dikonfigurasi dengan benar.

Solusi:

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

Solusi: Aktifkan kembali versi kunci Cloud KMS.

Wilayah key ring tidak cocok dengan resource yang akan dilindungi Region ring kunci 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 dalam 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 karena alasan tertentu Cloud KMS tidak tersedia, Alur Kerja 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 tidak tersedia selama eksekusi alur kerja (misalnya, izin dicabut selama callback), error runtime akan terjadi, yang menampilkan nilai state: FAILED, dan detail terkait di kolom error.

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.