Lindungi data Anda dengan CMEK (generasi ke-1)

Anda dapat menggunakan Cloud Key Management Service kunci enkripsi yang dikelola pelanggan (Customer-Managed Encryption Key/CMEK) untuk melindungi Fungsi Cloud Run dan fitur terkait data dalam penyimpanan. Kunci tersebut dibuat dan dikelola melalui Cloud KMS dan disimpan sebagai kunci software, dalam cluster HSM, atau secara eksternal.

Men-deploy fungsi dengan CMEK akan melindungi data yang terkait dengannya menggunakan kunci enkripsi yang ada dalam kendali penuh Anda. Jenis enkripsi ini memungkinkan Anda memenuhi persyaratan kepatuhan di industri tertentu, seperti keuangan layanan IT perusahaan mereka. Karena kunci tersebut dimiliki oleh Anda dan tidak dikontrol oleh Google, tidak seorang pun (termasuk Anda) yang dapat mengakses data yang dilindungi oleh kunci enkripsi ini saat kunci tersebut dinonaktifkan atau dihancurkan.

Jenis data fungsi Cloud Run berikut dienkripsi saat menggunakan CMEK:

  • Kode sumber fungsi yang diupload untuk penerapan dan disimpan oleh Google di Cloud Storage, yang digunakan dalam proses build.
  • Hasil proses build fungsi, termasuk:
    • Image container yang dibuat dari kode sumber fungsi Anda.
    • Setiap instance fungsi yang di-deploy.
  • Data dalam penyimpanan untuk saluran transpor peristiwa internal.

Proses build fungsi itu sendiri dilindungi oleh kunci efemeral yang dibuat secara unik untuk setiap build. Lihat Kepatuhan CMEK di Cloud Build untuk mengetahui informasi selengkapnya. Selain itu, perhatikan hal-hal berikut:

  • Metadata file, seperti jalur sistem file atau stempel waktu modifikasi, tidak dienkripsi.

  • Jika kunci dinonaktifkan, image container tidak dapat di-deploy dan instance baru tidak dapat dimulai.

  • Perlindungan CMEK fungsi Cloud Run hanya berlaku untuk aset yang dikelola Google resource fungsi Cloud Run; Anda bertanggung jawab untuk melindungi data dan resource yang Anda kelola, seperti repositori kode sumber Anda, atau layanan yang digunakan oleh {i>function<i} Anda.

Penyiapan CMEK untuk fungsi Cloud Run memerlukan langkah-langkah berikut:

  • Memberi akun layanan yang diperlukan akses ke kunci:

    • Untuk semua fungsi, Anda perlu memberikan fungsi Cloud Run, Artifact Registry, dan akun layanan Cloud Storage yang mengakses kunci tersebut.
  • Membuat repositori Artifact Registry yang dilindungi CMEK untuk menyimpan image fungsi Anda.

  • Mengaktifkan CMEK di fungsi Anda.

  • Secara opsional, aktifkan kebijakan organisasi CMEK untuk menerapkan semua fungsi baru agar mematuhi CMEK.

Langkah-langkah ini dijelaskan secara lebih mendetail di bawah.

Sebelum memulai

  1. Buat kunci region tunggal untuk mengenkripsi fungsi Anda. Untuk mempelajari cara membuat kunci, lihat Membuat kunci enkripsi simetris.

  2. Buat repositori Artifact Registry yang telah mengaktifkan CMEK. Anda harus menggunakan kunci yang sama untuk repositori Artifact Registry seperti yang Anda gunakan saat mengaktifkan CMEK untuk suatu fungsi.

Memberi akun layanan akses ke kunci

Untuk semua fungsi, Anda harus memberi akun layanan berikut akses ke kunci:

  • Agen layanan Cloud Run Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)

  • Agen layanan Artifact Registry (service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com)

  • Agen layanan Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

Untuk memberi akun layanan ini akses ke kunci tersebut, tambahkan setiap akun layanan sebagai akun utama dari kunci tersebut, lalu berikan peran Cloud KMS CryptoKey Encrypter/Decrypter kepada akun layanan tersebut:

Konsol

  1. Buka halaman Cloud Key Management Service di konsol Google Cloud:
    Buka halaman Cloud KMS

  2. Klik nama key ring yang berisi kunci yang dipilih.

  3. Klik nama kunci untuk melihat detail kunci.

  4. Di tab Izin, klik Berikan akses.

  5. Di kolom New principals, masukkan alamat email ketiganya akun layanan yang ditampilkan sebelumnya untuk menetapkan izin ke ketiga akun sekaligus.

  6. Di drop-down Select a role, pilih Cloud KMS CryptoKey Pengenkripsi/Pendekripsi.

  7. Klik Simpan.

gcloud

Untuk setiap akun layanan yang telah dibahas sebelumnya, jalankan perintah berikut:

gcloud kms keys add-iam-policy-binding KEY \
--keyring KEY_RING \
--location LOCATION \
--member serviceAccount:SERVICE_AGENT_EMAIL \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter

Ganti kode berikut:

  • KEY: Nama kunci. Contoh, my-key.

  • KEY_RING: Nama key ring. Contoh, my-keyring.

  • LOCATION: Lokasi kunci. Contoh, us-central1.

  • SERVICE_AGENT_EMAIL: Alamat email akun layanan.

Mengaktifkan CMEK untuk fungsi

Setelah menyiapkan repositori {i>Artifact Registry<i} dengan mengaktifkan CMEK dan Dengan memberi Cloud Run akses ke kunci Anda, Anda siap mengaktifkan CMEK untuk fungsi Anda.

Untuk mengaktifkan CMEK sebuah fungsi:

Konsol

  1. Buka halaman fungsi Cloud Run di Konsol Google Cloud:
    Buka halaman Cloud Run Functions

  2. Klik nama fungsi tempat Anda ingin mengaktifkan CMEK.

  3. Klik Edit.

  4. Klik Runtime, build... untuk meluaskan opsi konfigurasi lanjutan.

  5. Pilih tab Keamanan dan repositori image.

  6. Di bagian Enkripsi, pilih Kunci enkripsi yang dikelola pelanggan (CMEK).

  7. Pilih kunci yang Anda pilih dari menu drop-down.

  8. Di bagian Lokasi container, pilih Artifact Registry yang dikelola pelanggan.

  9. Di drop-down Artifact registry, pilih repositori yang dilindungi CMEK.

  10. Klik Berikutnya.

  11. Klik Deploy.

gcloud

Jalankan perintah berikut.

gcloud functions deploy FUNCTION \
[--gen2] \
--kms-key=KEY \
--docker-repository=REPOSITORY \
--source=YOUR_SOURCE_LOCATION
FLAGS...

Ganti kode berikut:

  • FUNCTION: Nama fungsi untuk mengaktifkan CMEK. Contoh, cmek-function.

  • KEY: Nama kunci yang sepenuhnya memenuhi syarat, dalam format berikut: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME.

  • REPOSITORY: Nama repositori Artifact Registry yang sepenuhnya memenuhi syarat, dalam format berikut: projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.

  • YOUR_SOURCE_LOCATION: Saat mengaktifkan CMEK untuk fungsi yang sudah ada, pastikan kode sumber yang dimaksud di-deploy ulang dengan menentukan parameter ini secara eksplisit.

  • FLAGS...: Flag tambahan yang mungkin diperlukan untuk men-deploy fungsi Anda, terutama untuk membuat deployment. Sebagai detail, lihat Men-deploy fungsi Cloud Run.

CMEK diaktifkan untuk fungsi ini.

Perhatikan bahwa fungsi Cloud Run selalu menggunakan versi utama kunci untuk CMEK perlindungan data. Anda tidak dapat menentukan versi kunci tertentu yang akan digunakan saat mengaktifkan CMEK untuk fungsi Anda.

Jika kunci dihancurkan atau dinonaktifkan, atau izin yang diperlukan atas kunci tersebut dicabut, instance aktif dari fungsi yang dilindungi oleh kunci tersebut tidak akan dinonaktifkan. Eksekusi fungsi yang sudah berlangsung akan terus berjalan, tetapi eksekusi baru akan gagal selama fungsi Cloud Run tidak memiliki akses ke kunci tersebut.

Menguji perlindungan CMEK

Untuk memverifikasi bahwa perlindungan CMEK berfungsi, Anda dapat menonaktifkan kunci yang digunakan untuk mengaktifkan CMEK untuk suatu fungsi, lalu mencoba memicu fungsi Anda:

  1. Nonaktifkan kunci yang digunakan untuk melindungi fungsi Anda.

  2. Coba lihat kode sumber yang terkait dengan fungsi ini. Upaya tersebut akan gagal.

  3. Coba picu fungsi yang dilindungi CMEK. Upaya tersebut akan gagal.

  4. Setelah Anda memastikan bahwa perlindungan CMEK berfungsi, aktifkan kunci.

Perlindungan CMEK fungsi kini telah dikonfirmasi.

Langkah selanjutnya