Melindungi data Anda dengan CMEK (generasi ke-1)
Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) Cloud Key Management Service untuk melindungi fungsi Cloud Run 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 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 transportasi 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 resource fungsi Cloud Run 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 fungsi Cloud Run memerlukan hal-hal berikut:
Memberi akun layanan yang diperlukan akses ke kunci:
- Untuk semua fungsi, Anda perlu memberi fungsi Cloud Run, 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 fungsi Cloud Run (
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
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 Izin, klik Berikan akses.
Di kolom New principals, masukkan alamat email ketiga akun layanan yang ditampilkan sebelumnya untuk menetapkan izin ke ketiga akun tersebut sekaligus.
Di menu drop-down Select a role, pilih Cloud KMS CryptoKey Encrypter/Decrypter.
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 Artifact Registry dengan CMEK diaktifkan dan memberi fungsi Cloud Run akses ke kunci, Anda siap mengaktifkan CMEK untuk fungsi Anda.
Untuk mengaktifkan CMEK sebuah fungsi:
Konsol
Buka halaman fungsi Cloud Run di konsol Google Cloud:
Buka halaman fungsi Cloud RunKlik nama fungsi tempat Anda ingin mengaktifkan CMEK.
Klik Edit.
Klik Runtime, build... untuk meluaskan opsi konfigurasi lanjutan.
Pilih tab Keamanan dan repositori image.
Di bagian Enkripsi, pilih Kunci enkripsi yang dikelola pelanggan (CMEK).
Pilih kunci yang Anda pilih dari menu drop-down.
Di bagian Lokasi container, pilih Artifact Registry yang dikelola pelanggan.
Di drop-down Artifact registry, pilih repositori yang dilindungi CMEK.
Klik Berikutnya.
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 fungsi Cloud Run 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 fungsi Cloud Run 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 selanjutnya
- Pelajari cara merotasikan tombol.
- Pelajari lebih lanjut tentang enkripsi default Google.
- Pelajari CMEK lebih lanjut.
- Pelajari kebijakan organisasi CMEK lebih lanjut.