使用 CMEK 保護資料
本頁提供補充資訊,協助您使用客戶代管加密金鑰 (CMEK) 保護使用 gcloud functions
指令或 Cloud Functions v2 API 建立的函式。
如需 CMEK 的詳細說明,包括手動設定、使用 Autokey 和測試 CMEK 保護機制,請參閱 Cloud Run 說明文件。
使用 CMEK 時,系統會將下列類型的 Cloud Run 函式資料加密:
- 為部署而上傳的函式原始碼,並由 Google 儲存在 Cloud Storage 中,用於建構程序。
- 函式建構程序的結果,包括:
- 從函式原始碼建構的容器映像檔。
- 每個已部署函式的例項。
函式建構程序本身會受到專為每個版本產生的暫時性金鑰保護。詳情請參閱「Cloud Build 中的 CMEK 法規遵循」。此外,請注意下列事項:
檔案中繼資料 (例如檔案系統路徑或修改時間戳記) 不會加密。
如果關鍵已停用,就無法部署容器映像檔,也無法啟動新的執行個體。
Cloud Run 函式 CMEK 保護措施僅適用於 Google 管理的 Cloud Run 函式資源;您必須負責保護自己管理的資料和資源,例如位於客戶專案中的來源程式碼存放區、事件管道,或函式使用的任何服務。
事前準備
建立單一區域金鑰,用於加密函式。如要瞭解如何建立金鑰,請參閱「建立對稱式加密金鑰」。
建立已啟用 CMEK 的 Artifact Registry 存放區。為函式啟用 CMEK 時,您必須為 Artifact Registry 存放區使用相同的金鑰。
如果是事件驅動函式,請按照「為 Google 管道啟用 CMEK」一文中所述的額外設定步驟進行操作。
授予服務帳戶金鑰存取權
對於所有函式,您必須將金鑰存取權授予下列服務帳戶:
Cloud Run 函式服務代理人 (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
)Artifact Registry 服務代理人 (
service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
)Cloud Storage 服務代理人 (
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com
)Cloud Run 服務代理人 (
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
)Eventarc 服務代理人 (
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
)
如要授予這些服務帳戶金鑰存取權,請將每個服務帳戶設為金鑰的實體,然後授予服務帳戶 Cloud KMS CryptoKey Encrypter/Decrypter
角色:
主控台
前往 Google Cloud 控制台的「Cloud Key Management Service」頁面:
前往「Cloud KMS」頁面按一下包含所選金鑰的金鑰環名稱。
按一下鍵的名稱,即可查看鍵的詳細資料。
在「權限」分頁中,按一下「授予存取權」。
在「新增主體」欄位中,輸入先前討論的所有三個服務帳戶的電子郵件地址,一次為三個帳戶指派權限。
在「Select a role」(選取角色) 選單中,選取「Cloud KMS CryptoKey Encrypter/Decrypter」(Cloud KMS 加密編譯金鑰加密者/解密者)。
按一下 [儲存]。
gcloud
針對先前討論的每個服務帳戶,執行下列指令:
gcloud kms keys add-iam-policy-binding KEY \ --keyring KEY_RING \ --location LOCATION \ --member serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
更改下列內容:
KEY
:金鑰名稱。例如:my-key
。KEY_RING
:金鑰環的名稱。例如:my-keyring
。LOCATION
:鍵的位置。例如:us-central1
。SERVICE_AGENT_EMAIL
:服務帳戶的電子郵件地址。
為函式啟用 CMEK
設定啟用 CMEK 的 Artifact Registry 存放區,並授予 Cloud Run 函式存取金鑰的權限後,您就可以為函式啟用 CMEK。
如要為函式啟用 CMEK,請執行下列指令:
gcloud functions deploy FUNCTION \ --kms-key=KEY \ --docker-repository=REPOSITORY \ --source=YOUR_SOURCE_LOCATION FLAGS...
更改下列內容:
FUNCTION
:要啟用 CMEK 的函式名稱。例如:cmek-function
。KEY
:完整的鍵名稱,格式如下:projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
。REPOSITORY
:Artifact Registry 存放區的完整名稱,格式如下:projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY
。YOUR_SOURCE_LOCATION
:為現有函式啟用 CMEK 時,請明確指定此參數,確保系統重新部署所需的原始碼。FLAGS...
:部署函式時可能需要的其他標記,特別是建立部署作業。詳情請參閱「部署 Cloud Run 函式」。
為該函式啟用 CMEK。您可以選擇啟用 CMEK 組織政策,強制執行所有新函式符合 CMEK 規定。
請注意,Cloud Run 函式一律會使用金鑰的主要版本來提供 CMEK 保護。為函式啟用 CMEK 時,您無法指定要使用的特定金鑰版本。
如果金鑰遭到刪除或停用,或是其上必要的權限遭到撤銷,則不會關閉受該金鑰保護的函式活動執行個體。已執行中的函式會繼續執行,但如果 Cloud Run 函式無法存取金鑰,新執行作業就會失敗。