Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Melindungi data Anda dengan CMEK
Halaman ini memberikan informasi tambahan untuk melindungi data Anda dengan kunci enkripsi yang dikelola pelanggan (CMEK) untuk fungsi yang dibuat menggunakan perintah gcloud functions atau Cloud Functions v2 API.
Untuk deskripsi mendetail tentang CMEK, termasuk penyiapan manual, penggunaan Autokey, dan pengujian perlindungan CMEK, lihat dokumentasi Cloud Run.
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.
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, saluran peristiwa yang ada di project pelanggan, atau layanan apa pun yang digunakan oleh fungsi Anda.
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.
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)
Agen layanan Cloud Run (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com)
Agen layanan Eventarc (service-PROJECT_NUMBER@gcp-sa-eventarc.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 KMS
Klik 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 telah dibahas sebelumnya untuk menetapkan izin ke ketiga akun tersebut sekaligus.
Di menu Select a role, pilih Cloud KMS CryptoKey
Encrypter/Decrypter.
Klik Simpan.
gcloud
Untuk setiap akun layanan yang telah dibahas sebelumnya, jalankan perintah berikut:
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, jalankan perintah 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. Secara opsional, aktifkan kebijakan organisasi CMEK untuk menerapkan semua fungsi baru agar mematuhi CMEK.
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.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-19 UTC."],[[["\u003cp\u003eCloud Run functions encrypts customer content at rest by default using Google default encryption, but offers the option to use customer-managed encryption keys (CMEKs) for greater control.\u003c/p\u003e\n"],["\u003cp\u003eUsing CMEKs with Cloud Run functions allows you to manage key protection level, location, rotation schedule, access permissions, and cryptographic boundaries, and view audit logs.\u003c/p\u003e\n"],["\u003cp\u003eCMEK protection in Cloud Run functions encrypts function source code, container images, and deployed function instances, while file metadata remains unencrypted.\u003c/p\u003e\n"],["\u003cp\u003eEnabling CMEK requires granting specific service accounts (Cloud Run, Artifact Registry, Cloud Storage, etc.) access to the encryption key and creating a CMEK-protected Artifact Registry repository.\u003c/p\u003e\n"],["\u003cp\u003eDisabling the CMEK key will prevent new function instances from starting and new executions from occurring, but existing function executions will continue until completion.\u003c/p\u003e\n"]]],[],null,["# Protect your data with CMEK\n===========================\n\nThis page provides supplemental information for protecting your data with\ncustomer-managed encryption keys (CMEKs) for functions created using\n[`gcloud functions`](/sdk/gcloud/reference/functions) commands or the\n[Cloud Functions v2 API](/functions/docs/reference/rest).\n\nFor a detailed description of CMEK, including manual setup, using Autokey,\nand testing CMEK protection, refer to [Cloud Run documentation](/run/docs/securing/using-cmek).\n\nThe following types of Cloud Run functions data are encrypted when using a\nCMEK:\n\n- Function source code uploaded for deployment and stored by Google in Cloud Storage, used in the build process.\n- The results of the function build process, including:\n - The container image built from your function source code.\n - Each instance of the function that is deployed.\n\nThe function build process itself is protected by an ephemeral key uniquely\ngenerated for each build. See\n[CMEK compliance in Cloud Build](/build/docs/securing-builds/cmek) for more\ninformation. Additionally, note the following:\n\n- File metadata, such as file system paths or modification timestamps,\n is not encrypted.\n\n- If a key is disabled, the container image cannot be deployed and new\n instances cannot start.\n\n- Cloud Run functions CMEK protection only applies to Google-managed\n Cloud Run functions resources; you are responsible for protecting data and\n resources managed by you, such as your source code repositories,\n [event channels](/eventarc/docs/third-parties/third-parties-overview#subscription-terms)\n that live in the customer project, or any services used by your\n functions.\n\nBefore you begin\n----------------\n\n1. Create a single-region key to use to encrypt your functions. To learn how to\n create a key, see\n [Creating symmetric encryption keys](/kms/docs/creating-keys).\n\n2. [Create an Artifact Registry repository](/artifact-registry/docs/manage-repos#create)\n that has [CMEK enabled](/artifact-registry/docs/cmek). You must use the same\n key for the Artifact Registry repository as you do when enabling CMEK for a\n function.\n\n3. For event-driven functions, follow the additional setup steps\n outlined in\n [Enable CMEK for a Google channel](/eventarc/docs/use-cmek#enable-cmek-google-channel).\n\nGranting service accounts access to the key\n-------------------------------------------\n\nFor all functions, you must grant the following service accounts access to the key:\n\n- Cloud Run functions service agent (`service-`\u003cvar translate=\"no\"\u003ePROJECT_NUMBER\u003c/var\u003e`@gcf-admin-robot.iam.gserviceaccount.com`)\n\n- Artifact Registry service agent (`service-`\u003cvar translate=\"no\"\u003ePROJECT_NUMBER\u003c/var\u003e`@gcp-sa-artifactregistry.iam.gserviceaccount.com`)\n\n- Cloud Storage service agent (`service-`\u003cvar translate=\"no\"\u003ePROJECT_NUMBER\u003c/var\u003e`@gs-project-accounts.iam.gserviceaccount.com`)\n\n- Cloud Run service agent (`service-`\u003cvar translate=\"no\"\u003ePROJECT_NUMBER\u003c/var\u003e`@serverless-robot-prod.iam.gserviceaccount.com`)\n\n- Eventarc service agent (`service-`\u003cvar translate=\"no\"\u003ePROJECT_NUMBER\u003c/var\u003e`@gcp-sa-eventarc.iam.gserviceaccount.com`)\n\nTo grant these service accounts access to the key, add each service account as a\nprincipal of the key and then grant the service account the\n`Cloud KMS CryptoKey Encrypter/Decrypter` role: \n\n### Console\n\n1. Go to the Cloud Key Management Service page in the Google Cloud console: \n\n [Go to the Cloud KMS page](https://console.cloud.google.com/security/kms)\n\n2. Click the name of the key ring that contains the chosen key.\n\n3. Click the name of the key to view the key details.\n\n4. In the **Permissions** tab, click **Grant access**.\n\n5. In the **New principals** field, enter the email addresses of all three\n service accounts discussed earlier to assign permissions to all three\n accounts at once.\n\n6. In the **Select a role** menu, select **Cloud KMS CryptoKey\n Encrypter/Decrypter**.\n\n7. Click **Save**.\n\n### gcloud\n\nFor each service account discussed earlier, run the following command: \n\n```bash\ngcloud kms keys add-iam-policy-binding KEY \\\n --keyring KEY_RING \\\n --location LOCATION \\\n --member serviceAccount:SERVICE_AGENT_EMAIL \\\n --role roles/cloudkms.cryptoKeyEncrypterDecrypter\n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eKEY\u003c/var\u003e: The name of the key. For example, `my-key`.\n\n- \u003cvar translate=\"no\"\u003eKEY_RING\u003c/var\u003e: The name of the key ring. For example,\n `my-keyring`.\n\n- \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e: The location of the key. For example,\n `us-central1`.\n\n- \u003cvar translate=\"no\"\u003eSERVICE_AGENT_EMAIL\u003c/var\u003e: The email address of the\n service account.\n\n| **Important:** Some service agents, such as the Cloud Storage service agent (including its email address), are not initially available when you create a project. Instead, they are activated the first time you access them. For example, to activate the Cloud Storage service agent, you can [retrieve its email address](/storage/docs/getting-service-agent). The service agent must be activated prior to assigning permissions to it.\n\nEnabling CMEK for a function\n----------------------------\n\nAfter setting up an Artifact Registry repository with CMEK enabled and\ngranting Cloud Run functions access to your key, you're ready to enable\nCMEK for your function.\n\nTo enable CMEK for a function, run the following command: \n\n```bash\ngcloud functions deploy FUNCTION \\\n --kms-key=KEY \\\n --docker-repository=REPOSITORY \\\n --source=YOUR_SOURCE_LOCATION\n FLAGS...\n \n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eFUNCTION\u003c/var\u003e: The name of the function to enable CMEK\n on. For example, `cmek-function`.\n\n- \u003cvar translate=\"no\"\u003eKEY\u003c/var\u003e: The fully qualified key name, in the following\n format:\n `projects/`\u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e`/locations/`\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e`/keyRings/`\u003cvar translate=\"no\"\u003eKEYRING_NAME\u003c/var\u003e`/cryptoKeys/`\u003cvar translate=\"no\"\u003eKEY_NAME\u003c/var\u003e.\n\n- \u003cvar translate=\"no\"\u003eREPOSITORY\u003c/var\u003e: The fully qualified Artifact Registry\n repository name, in the following format:\n `projects/`\u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e`/locations/`\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e`/repositories/`\u003cvar translate=\"no\"\u003eREPOSITORY\u003c/var\u003e.\n\n- \u003cvar translate=\"no\"\u003eYOUR_SOURCE_LOCATION\u003c/var\u003e: When enabling CMEK for a\n pre-existing function, make sure that the intended source code is being\n re-deployed by specifying this parameter explicitly.\n\n- \u003cvar translate=\"no\"\u003eFLAGS\u003c/var\u003e`...`: Additional flags that may be\n required to deploy your function, particularly for create deployments. For\n details, see\n [Deploy a Cloud Run function](/functions/docs/deploy#basics).\n\nCMEK is enabled for the function. Optionally, enable\n[CMEK organization policies](/kms/docs/cmek-org-policy) to enforce all new\nfunctions to be CMEK compliant.\n| **Note:** First-time function deployments with CMEK enabled might fail due to IAM propagation delays. If you encounter an error upon deployment, ensure the permissions are set correctly and try again after a short period.\n\nNote that Cloud Run functions always uses the primary version of a key for CMEK\nprotection. You cannot specify a particular key version to use when enabling\nCMEK for your functions.\n\nIf a key is [destroyed](/kms/docs/destroy-restore) or\n[disabled](/kms/docs/enable-disable), or the requisite permissions on it are\nrevoked, active instances of functions protected by that key are not shut down.\nFunction executions already in progress will continue to run, but new executions\nwill fail as long as Cloud Run functions does not have access to the key."]]