Melindungi data Anda dengan CMEK (generasi ke-1)
Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) Cloud Key Management Service untuk melindungi Cloud Run Functions dan data dalam penyimpanan terkait. 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 jasa keuangan. 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 Cloud Run Functions berikut dienkripsi saat menggunakan CMEK:
- Kode sumber fungsi yang diupload untuk deployment 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 transportasi peristiwa internal.
Proses build fungsi itu sendiri dilindungi oleh kunci ephemeral 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 Cloud Run Functions hanya berlaku untuk resource Cloud Run Functions yang dikelola Google. Anda bertanggung jawab untuk melindungi data dan resource yang dikelola oleh Anda, seperti repositori kode sumber, atau layanan apa pun yang digunakan oleh fungsi Anda.
Menyiapkan CMEK untuk Cloud Run Functions memerlukan hal-hal berikut:
Memberi akun layanan yang diperlukan akses ke kunci:
- Untuk semua fungsi, Anda perlu memberi Cloud Run Functions, Artifact Registry, dan akun layanan Cloud Storage akses ke kunci.
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
Buat kunci region tunggal untuk mengenkripsi fungsi Anda. Untuk mempelajari cara membuat kunci, lihat Membuat kunci enkripsi simetris.
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
principal dari kunci tersebut, lalu berikan peran Cloud KMS CryptoKey Encrypter/Decrypter pada
akun layanan tersebut:
Konsol
Buka halaman Cloud Key Management Service di konsol Google Cloud :
Buka halaman Cloud KMSKlik nama key ring yang berisi kunci yang dipilih.
Klik nama kunci untuk melihat detail kunci.
Di tab Permissions, klik Grant access.
Di kolom New principals, masukkan alamat email ketiga akun layanan di atas untuk menetapkan izin ke ketiga akun tersebut sekaligus.
Di drop-down Select a role, pilih Cloud KMS CryptoKey Encrypter/Decrypter.
Klik Save.
gcloud
Untuk setiap akun layanan yang 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 Artifact Registry dengan CMEK diaktifkan dan memberi Cloud Run Functions akses ke kunci, Anda siap mengaktifkan CMEK untuk fungsi Anda.
Untuk mengaktifkan CMEK sebuah fungsi:
Konsol
Buka halaman Cloud Run Functions di konsol Google Cloud :
Buka halaman Cloud Run FunctionsKlik nama fungsi tempat Anda ingin mengaktifkan CMEK.
Klik Edit.
Klik Runtime, build... untuk meluaskan opsi konfigurasi lanjutan.
Pilih tab Security and image repo.
Di bagian Encryption, pilih Customer-managed encryption key (CMEK).
Pilih kunci yang Anda pilih dari dropdown.
Di bagian Container location, pilih Customer-managed Artifact Registry.
Di dropdown Artifact registry, pilih repositori yang dilindungi CMEK.
Klik Next.
Klik Deploy.
gcloud
Jalankan perintah berikut.
gcloud functions deploy FUNCTION \ --no-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. Untuk mengetahui detailnya, lihat Men-deploy fungsi Cloud Run.
CMEK diaktifkan untuk fungsi ini.
Perhatikan bahwa Cloud Run Functions selalu menggunakan versi utama kunci untuk perlindungan CMEK. 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 berjalan akan terus berjalan, tetapi eksekusi baru akan gagal selama Cloud Run Functions tidak memiliki akses ke kunci.
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:
Nonaktifkan kunci yang digunakan untuk melindungi fungsi Anda.
Coba lihat kode sumber yang terkait dengan fungsi ini. Upaya tersebut akan gagal.
Coba picu fungsi yang dilindungi CMEK. Upaya tersebut akan gagal.
Setelah Anda memastikan bahwa perlindungan CMEK berfungsi, aktifkan kunci.
Perlindungan CMEK fungsi kini telah dikonfirmasi.
Langkah berikutnya
- Pelajari cara merotasikan kunci.
- Pelajari enkripsi default Google lebih lanjut.
- Pelajari CMEK lebih lanjut
- Pelajari kebijakan organisasi CMEK lebih lanjut.