本文說明如何使用客戶自行管理的加密金鑰 (CMEK),透過 Cloud Key Management Service 加密及控管雲端服務中的靜態資料。CMEK 已整合至 Gemini Code Assist 的程式碼自訂功能。Gemini Code Assist 不支援使用 Cloud EKM 金鑰。
本文將說明如何:
- 瞭解如何建立 CMEK。
- 將權限授予 Gemini Code Assist 服務帳戶。
- 使用 CMEK 建立程式碼存放區索引。
- 移除 CMEK 存放區的存取權。
根據預設,Gemini Code Assist 的自訂程式碼功能會加密靜態的客戶內容。自訂程式碼功能會為您處理加密作業,您不必進行任何其他操作。這項做法稱為「Google 預設加密機制」。
如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配整合 CMEK 的服務 (包括自訂程式碼)。使用 Cloud KMS 金鑰可讓您控管防護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 也能查看稽核記錄,以及控管金鑰生命週期。您可以在 Cloud KMS 中控制及管理這些金鑰,而不是由 Google 擁有及管理用來保護您資料的對稱金鑰加密金鑰 (KEK)。
使用 CMEK 設定資源後,存取自訂程式碼資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱「客戶自行管理的加密金鑰 (CMEK)」。
事前準備
-
在 Google Cloud 控制台中啟用 Cloud Shell。
在您設定 gcloud CLI 的開發環境中,執行
gcloud components update指令,確保已將所有已安裝的 gcloud CLI 元件更新至最新版本。gcloud components update
建立 CMEK 並授予權限
如要建立 CMEK 並授予 Gemini Code Assist 服務帳戶金鑰權限,請執行下列工作:
在要管理金鑰的 Google Cloud 專案中,執行下列操作:
將 CryptoKey Encrypter/Decrypter IAM 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予 Gemini Code Assist 服務帳戶。在您建立的金鑰上授予這項權限。控制台
前往「金鑰管理」。
選取您建立的金鑰。
授予 Gemini Code Assist 服務帳戶存取權:
- 按一下「Add principal」(新增主體)。
- 新增 Gemini Code Assist 服務帳戶。服務帳戶為
service-PROJECT_NUMBER@gcp-sa-cloudaicompanions.iam.gserviceaccount.com,其中 PROJECT_NUMBER 是啟用 Gemini Code Assist 的 Google Cloud 專案專案編號。 - 在「選取角色」中,依序選取「Cloud KMS」 >「Cloud KMS CryptoKey Encrypter/Decrypter」。
- 按一下 [儲存]。
重複上一個步驟,授予帳戶存取權,以便使用 CMEK 建立程式碼存放區索引。
選取「顯示資訊面板」。您應該會在「角色/成員」欄中看到角色。
gcloud CLI
如要授予 Gemini Code Assist 服務帳戶存取權,請在 Shell 環境中使用
kms keys add-iam-policy-binding指令:gcloud kms keys add-iam-policy-binding KEY_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --keyring=KEYRING_NAME \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com" \ --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"更改下列內容:
- KEY_NAME:金鑰名稱。
- PROJECT_ID:包含金鑰的專案 ID。
- LOCATION:金鑰位置。
- KEYRING_NAME:金鑰環名稱。
- PROJECT_NUMBER:已啟用 Gemini Code Assist 的專案 Google Cloud 專案編號。
重複上一個步驟,授予帳戶存取權,以便使用 CMEK 建立程式碼存放區索引。
如要進一步瞭解這個指令,請參閱
gcloud kms keys add-iam-policy-binding說明文件。
您現在可以使用 API 建立含有 CMEK 的程式碼存放區索引,並指定用於加密的金鑰。
使用 CMEK 建立程式碼存放區索引
如要建立受 CMEK 保護的新存放區,請執行下列其中一項操作:
gcloud CLI
使用 gemini code-repository-indexes create 指令:
gcloud gemini code-repository-indexes create CODE_REPOSITORY_INDEX_NAME \
--location=LOCATION \
--kms-key="projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
更改下列內容:
- CODE_REPOSITORY_INDEX_NAME:您要建立的新程式碼存放區索引名稱。
- LOCATION:金鑰位置。
- KEY_PROJECT_ID:金鑰專案 ID。
- KEYRING_NAME:金鑰環名稱。
- KEY_NAME:金鑰名稱。
API
建立包含下列資訊的 JSON 檔案:
{ "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME" }更改下列內容:
KEY_PROJECT_ID:金鑰專案 IDKEY_LOCATION:金鑰位置KEYRING_NAME:金鑰環名稱KEY_NAME:金鑰名稱
使用
cURL指令呼叫projects.locations.codeRepositoryIndexes.create方法:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://cloudaicompanion.googleapis.com/v1/projects/PROJECT_ID/locations/KEY_LOCATION/codeRepositoryIndexes?codeRepositoryIndexId=CODE_REPOSITORY_INDEX_NAME"更改下列內容:
JSON_FILE_NAME:您在上一個步驟中建立的 JSON 檔案路徑。PROJECT_ID:要在其中建立存放區的專案 ID。KEY_LOCATION:要在其中建立存放區的位置,必須與 CMEK 所在位置相符。CODE_REPOSITORY_INDEX_NAME:您要建立的新程式碼存放區索引名稱。例如:zg-btf-0001。
回應會傳回一組記錄項目。
移除 CMEK 存放區的存取權
您可以透過下列幾種方式,移除對 CMEK 加密存放區的存取權:
- 使用 Google Cloud 控制台或 gcloud CLI,從 Gemini Code Assist 服務帳戶撤銷 Cloud KMS CryptoKey Encrypter/Decrypter 角色。
- 暫時停用 CMEK。
- 永久銷毀 CMEK。
建議您先撤銷 Gemini Code Assist 服務帳戶的權限,再停用或刪除金鑰。權限變更會在幾秒內生效,因此您可以觀察停用或刪除金鑰的影響。