使用 CMEK (第 1 代) 保護資料
您可以使用 Cloud Key Management Service 的客戶管理的加密金鑰 (CMEK) 保護 Cloud Run 函式和相關靜態資料。這類金鑰會透過 Cloud KMS 建立及管理,並以軟體金鑰的形式儲存在 HSM 叢集或外部。
使用 CMEK 部署函式時,系統會使用您完全控管的加密金鑰保護與函式相關聯的資料。這類加密方式可讓您遵守金融服務等特定產業的法規遵循要求。由於金鑰由您擁有,並非由 Google 控管,因此當金鑰遭到停用或刪除時,任何人 (包括您) 都無法存取這些加密金鑰所保護的資料。
使用 CMEK 時,系統會將下列類型的 Cloud Run 函式資料加密:
- 為部署而上傳的函式原始碼,並由 Google 儲存在 Cloud Storage 中,用於建構程序。
- 函式建構程序的結果,包括:
- 從函式原始碼建構的容器映像檔。
- 每個已部署函式的例項。
- 內部事件傳輸管道的靜止資料。
函式建構程序本身會受到專為每個版本產生的暫時性金鑰保護。詳情請參閱「Cloud Build 中的 CMEK 法規遵循」。此外,請注意下列事項:
檔案中繼資料 (例如檔案系統路徑或修改時間戳記) 不會加密。
如果關鍵已停用,就無法部署容器映像檔,也無法啟動新的執行個體。
Cloud Run 函式 CMEK 保護功能僅適用於 Google 管理的 Cloud Run 函式資源;您必須負責保護自己管理的資料和資源,例如原始碼存放區或函式使用的任何服務。
為 Cloud Run 函式設定 CMEK 需要完成以下步驟:
授予必要的服務帳戶存取金鑰權限:
- 針對所有函式,您必須將金鑰存取權授予 Cloud Run 函式、Artifact Registry 和 Cloud Storage 服務帳戶。
建立 CMEK 保護的 Artifact Registry 存放區,用於儲存函式映像檔。
在函式中啟用 CMEK。
您可以選擇啟用 CMEK 組織政策,強制執行所有新函式符合 CMEK 法規。
以下將詳細說明這些步驟。
事前準備
建立單一區域金鑰,用於加密函式。如要瞭解如何建立金鑰,請參閱「建立對稱式加密金鑰」。
建立已啟用 CMEK 的 Artifact Registry 存放區。為函式啟用 CMEK 時,您必須為 Artifact Registry 存放區使用相同的金鑰。
授予服務帳戶金鑰存取權
對於所有函式,您必須將金鑰存取權授予下列服務帳戶:
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 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:
主控台
前往 Google Cloud 控制台的「Cloud Run 函式」頁面:
前往「Cloud Run 函式」頁面按一下要啟用 CMEK 的函式名稱。
按一下 [編輯]。
按一下「Runtime, build...」展開進階設定選項。
選取「安全性和映像檔存放區」分頁標籤。
在「Encryption」區段中,選取「Customer-managed encryption key (CMEK)」。
從下拉式選單中選取所選金鑰。
在「容器位置」下方,選取「客戶管理的 Artifact Registry」。
在「Artifact registry」下拉式選單中,選取受 CMEK 保護的存放區。
點按「Next」。
按一下 [Deploy] (部署)。
gcloud
執行下列指令。
gcloud functions deploy FUNCTION \ --no-gen2 \ --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。
請注意,Cloud Run 函式一律會使用金鑰的主要版本來提供 CMEK 保護。為函式啟用 CMEK 時,您無法指定要使用的特定金鑰版本。
如果金鑰遭到刪除或停用,或是其上必要的權限遭到撤銷,則不會關閉受該金鑰保護的函式活動執行個體。已執行中的函式會繼續執行,但如果 Cloud Run 函式無法存取金鑰,新執行作業就會失敗。
測試 CMEK 保護
如要確認 CMEK 防護機制是否運作正常,您可以停用用於為函式啟用 CMEK 的金鑰,然後嘗試觸發函式:
嘗試查看與這個函式相關聯的原始碼。嘗試應會失敗。
嘗試觸發受 CMEK 保護的函式。嘗試應該會失敗。
確認 CMEK 保護機制運作正常後,請啟用金鑰。
函式的 CMEK 保護功能已確認。
後續步驟
- 瞭解如何旋轉鍵。
- 進一步瞭解 Google 的預設加密機制。
- 進一步瞭解 CMEK。
- 進一步瞭解 CMEK 機構政策。