根據預設,Vertex AI Search 會加密靜態儲存的客戶內容。Vertex AI Search 會為您處理加密作業,您不必採取其他動作。這項做法稱為「Google 預設加密」。
如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配整合 CMEK 的服務,包括 Vertex AI Search。使用 Cloud KMS 金鑰可控管保護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。 使用 Cloud KMS 還可追蹤金鑰用量、查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控制及管理用來保護您資料的對稱金鑰加密金鑰 (KEK),而不是由 Google 擁有及管理。
使用 CMEK 設定資源後,存取 Vertex AI Search 資源的體驗與使用 Google 預設加密類似。如要進一步瞭解加密選項,請參閱「客戶管理的加密金鑰 (CMEK)」。
Vertex AI Search 中 Cloud KMS 的限制
下列限制適用於 Vertex AI Search 中的 CMEK (Cloud KMS) 金鑰:
- 已套用至資料存放區的金鑰無法變更,但金鑰版本可以輪替。
- 您必須使用美國或歐盟多區域資料儲存庫和應用程式 (而非全球資料儲存庫和應用程式)。如要進一步瞭解多地區和資料所在地,包括使用非全域位置的相關限制,請參閱位置。
如要為專案註冊多個金鑰,請與 Google 帳戶團隊聯絡,要求增加 CMEK 設定的配額,並說明需要多個金鑰的原因。
搭配使用外部金鑰管理工具 (EKM) 和 CMEK 的功能已正式發布,但僅限許可清單中的使用者。如要將 EKM 與 CMEK 搭配使用,請與 Google 帳戶團隊聯絡。
使用 EKM 或 HSM 搭配 CMEK 時,有以下限制:
加密和解密呼叫的 EKM 和 HSM 配額應至少有 1,000 QPM 的空間。如要瞭解如何檢查配額,請參閱「檢查 Cloud KMS 配額」。
如果使用 EKM,金鑰在任何超過 30 秒的時間範圍內,都必須有 90% 以上的時間可供存取。如果金鑰在這麼長的時間內無法存取,可能會對索引和搜尋結果的新鮮度造成負面影響。
如果發生帳單問題、持續超出配額,或持續無法連線超過 12 小時,服務會自動關閉與 EKM 或 HSM 金鑰相關聯的 CmekConfig。
- 如果資料儲存區是在金鑰註冊至專案前建立,則無法受到金鑰保護。
- 您無法調整搜尋模型, 以用於受金鑰保護的資料庫。
- 如果應用程式有多個資料儲存庫,且其中一個使用 CMEK 設定,則所有其他資料儲存庫也必須使用相同的 CMEK 設定。
如要使用 Vertex AI Search,必須採用 Enterprise 版。如要瞭解 Enterprise 版,請參閱「關於進階功能」。
第一方連接器不符合 CMEK 規定,但 BigQuery 和 Cloud Storage 的「匯入一次」和「定期」資料儲存區除外。
醫療照護搜尋資料儲存庫和第三方連接器符合 CMEK 規定。 如需醫療照護資料儲存庫的一般資訊,請參閱「建立醫療照護搜尋資料儲存庫」。如要瞭解如何讓第三方連接器符合 CMEK 規定,請參閱第三方連接器的單一區域金鑰簡介。
金鑰不適用於下列 RAG API,因為這些 API 不會儲存靜態內容:check grounding、grounded generation 和ranking。
- 您無法使用 Terraform 為 Vertex AI Search 設定 CMEK。
第三方連接器的單一區域金鑰簡介
如果您使用第三方連結器,並想使用自己的金鑰保護連結的資料,除了多區域金鑰外,還需要建立三把補充的單一區域金鑰。建立金鑰的指令請見下列程序:註冊 Cloud KMS 金鑰。
您需要為下列區域建立單一金鑰:
| 多區域 | 單一區域 | ||
|---|---|---|---|
eu |
europe-west1 |
europe-west4 |
europe-north1 |
us |
us-east1 |
us-central1 |
us-west1 |
事前準備
請確認您符合下列必要條件:
建立多區域對稱 Cloud KMS 金鑰。請參閱 Cloud KMS 說明文件中的「建立金鑰環」和「建立金鑰」。
將輪替週期設為「永不 (手動輪替)」。
在「Location」(位置) 中選取「Multi-region」(多區域),然後從下拉式選單中選取「europe」(歐洲) 或「us」(美國)。
已將金鑰的 CryptoKey Encrypter/Decrypter IAM 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予 Discovery Engine 服務代理人。服務代理程式帳戶的電子郵件地址採用下列格式:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com。 如需將角色新增至服務代理程式的一般操作說明,請參閱授予或撤銷單一角色。已將金鑰的 CryptoKey Encrypter/Decrypter IAM 角色 (
roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予 Cloud Storage 服務代理人。如果未授予這項角色,Discovery Engine 就無法建立匯入作業所需的受 CMEK 保護臨時值區和目錄,因此受 CMEK 保護的資料儲存庫資料匯入作業會失敗。請先完成本頁的金鑰註冊說明,再建立任何要由金鑰管理的資料儲存庫或應用程式。
- 應用程式已啟用 Enterprise 版功能。請參閱「開啟或關閉 Enterprise 版」。
註冊 Cloud KMS 金鑰
如要使用 CMEK 加密資料,您必須註冊多區域金鑰。如果資料需要單一地區金鑰 (例如使用第三方連結器時),您必須註冊單一地區金鑰。
事前準備
請確認您做到了以下各項:
該區域尚未受到金鑰保護。如果已透過 REST 指令為區域註冊金鑰,下列程序就會失敗。如要判斷 Vertex AI Search 中是否有位置的有效金鑰,請參閱「查看 Cloud KMS 金鑰」。
您具備 Discovery Engine 管理員 (
roles/discoveryengine.admin) 角色。
程序
REST
如要註冊 Vertex AI Search 的專屬金鑰,請按照下列步驟操作:
使用要註冊的金鑰呼叫
UpdateCmekConfig方法。curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{"kmsKey":"projects/KMS_PROJECT_ID/locations/KMS_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"}' \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID?set_default=SET_DEFAULT"更改下列內容:
KMS_PROJECT_ID:包含金鑰的專案 ID。專案編號無法使用。KMS_LOCATION:金鑰的多區域:us或europe。KEY_RING:保存金鑰的金鑰環名稱。KEY_NAME:金鑰名稱。PROJECT_ID:包含資料存放區的專案 ID。LOCATION:資料儲存庫的多重區域:us或eu。CMEK_CONFIG_ID:為 CmekConfig 資源設定專屬 ID,例如default_cmek_config。SET_DEFAULT:設為true,將金鑰做為在多個區域中建立後續資料儲存庫的預設金鑰。
選用:記錄方法傳回的
name值,並按照「取得長時間執行的作業詳細資料」一節的說明操作,查看作業完成時間。註冊金鑰通常需要幾分鐘。
作業完成後,該多區域中的新資料儲存區就會受到金鑰保護。如需建立資料儲存庫的一般資訊,請參閱「關於應用程式和資料儲存庫」。
控制台
程序
如要註冊 Vertex AI Search 的專屬金鑰,請按照下列步驟操作:
前往 Google Cloud 控制台的「AI Applications」頁面。
按一下「設定」,然後選取「CMEK」分頁標籤。
按一下 us 或 eu 地點的「新增金鑰」。
按一下「新增金鑰」。 按一下「選取 Cloud KMS 金鑰」下拉式選單,然後選取金鑰。
如果金鑰位於其他專案,請按一下「切換專案」,然後按一下專案名稱,輸入您建立的金鑰名稱,並選取該金鑰。
如果您知道金鑰的資源名稱,請按一下「手動輸入」,貼上金鑰資源名稱,然後按一下「儲存」。
依序點選「確定」>「儲存」。
這會註冊金鑰,並建立名為 default_cmek_config 的 CmekResource。
擷取的資料可能需要幾小時才會顯示在搜尋結果中。
查看 Cloud KMS 金鑰
如要查看 Vertex AI Search 的已註冊金鑰,請執行下列任一操作:
如果您有 CmekConfig 資源名稱,請呼叫
GetCmekConfig方法:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID"更改下列內容:
LOCATION:資料儲存庫的多重區域:us或eu。PROJECT_ID:包含資料的專案 ID。CMEK_CONFIG_ID:CmekConfig 資源的 ID。如果您使用控制台註冊金鑰,ID 為default_cmek_config。
以下是 curl 呼叫和回應的範例:
$ curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config"
{ "name": "projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config", "kmsKey": "projects/key-project-456/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" "state": "ACTIVE" "isDefault": true }如果沒有 CmekConfig 資源名稱,請呼叫
ListCmekConfigs方法:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs"更改下列內容:
LOCATION:資料儲存庫的多重區域:us或eu。PROJECT_ID:包含資料的專案 ID。
以下是 curl 呼叫和回應的範例:
$ curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs"
{ "cmek_configs": [ { "name": "projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config", "kmsKey": "projects/key-project-456/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" "state": "ACTIVE" "isDefault": true } ] }
取消註冊 Cloud KMS 金鑰
如要從 Vertex AI Search 取消註冊金鑰,請按照下列步驟操作:
使用要取消註冊的 CmekConfig 資源名稱呼叫
DeleteCmekConfig方法。curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID"更改下列內容:
LOCATION:資料儲存庫的多重區域:us或eu。PROJECT_ID:包含資料存放區的專案 ID。CMEK_CONFIG_ID:CmekConfig 資源的 ID。如果您使用控制台註冊金鑰,ID 為default_cmek_config。
以下是 curl 呼叫和回應的範例:
$ curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config" { "name": "projects/my-ai-app-project-123/locations/us/operations/delete-cmek-config-56789", "metadata": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.DeleteCmekConfigMetadata" } }選用:記錄方法傳回的
name值,並按照「取得長時間執行的作業詳細資料」一文中的操作說明,查看作業何時完成。刪除金鑰通常需要幾分鐘的時間。
確認資料儲存庫是否受到金鑰保護
金鑰註冊後建立的資料儲存庫會受到金鑰保護。如要確認特定資料儲存庫是否受到金鑰保護,請按照下列步驟操作:
在資料存放區中執行下列 curl 指令:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "x-goog-user-project: PROJECT_ID" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID"更改下列內容:
LOCATION:資料儲存庫的多個區域:us或eu。PROJECT_ID:包含資料商店的專案 ID。DATA_STORE_ID:資料儲存庫的 ID。
以下是 curl 呼叫範例:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H "x-goog-user-project: my-ai-app-project-123" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/collections/default_collection/dataStores/my-data-store-1"
查看指令的輸出內容:如果輸出內容中包含
cmekConfig欄位,且kmsKey欄位顯示您註冊的金鑰,表示資料儲存區受到該金鑰保護。回應範例如下:
{ "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1", "displayName": "my-data-store-1", "industryVertical": "GENERIC", "createTime": "2023-09-05T21:20:21.520552Z", "solutionTypes": [ "SOLUTION_TYPE_SEARCH" ], "defaultSchemaId": "default_schema", "cmekConfig": { "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1/cmekConfigs/default_cmek_config", "kmsKey": "projects/my-ai-app-project-123/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" } }
受 Cloud KMS 金鑰保護的其他資料
除了資料儲存庫中的資料,金鑰還可保護 Vertex AI Search 持有的其他類型應用程式自有核心資訊,例如後續追問搜尋期間產生的工作階段資料。如果與應用程式相關聯的資料儲存庫受到 CMEK 保護,這類核心資訊也會受到保護。
雖然您無法執行特定指令來驗證工作階段是否受到保護,但如果執行「驗證資料儲存庫是否受到金鑰保護」指令,並在 cmekConfig 資源中看到金鑰,則表示工作階段資料受到保護。
輪替 Cloud KMS 金鑰
輪替金鑰時,您會建立新的金鑰版本,並將新版本設為主要版本。請先啟用原始金鑰版本一段時間,再停用。這樣一來,使用舊版金鑰的任何長時間執行作業,都有時間完成。
以下程序說明如何輪替 Vertex AI Search 資料儲存庫的金鑰。如需輪替金鑰的一般資訊,請參閱 Cloud KMS 指南中的「金鑰輪替」。
重要事項:請勿輪替與建議應用程式或任何需要分析的應用程式相關聯的資料存放區金鑰,也不要輪替用於第三方連接器的單一區域金鑰。請參閱 Vertex AI Search 中 Cloud KMS 的限制。
重新註冊金鑰。如要這麼做,請重複「註冊 Cloud KMS 金鑰」的步驟 1。
請參閱 Cloud KMS 指南的「管理金鑰」一節,瞭解如何執行下列操作:
建立新的金鑰版本、啟用該版本,並設為主要版本。
新金鑰成為主要金鑰後,資料儲存庫中的文件會使用新金鑰重新加密,之後新增至資料儲存庫的文件也會使用新金鑰加密。
讓舊版金鑰保持啟用狀態。
過一週左右,停用舊版金鑰,並確認一切運作正常。
過一段時間後,如果確定停用舊版金鑰不會造成任何問題,即可銷毀舊版金鑰。
如果 Cloud KMS 金鑰遭到停用或撤銷
如果停用金鑰或撤銷金鑰權限,資料存放區會在 15 分鐘內停止擷取及提供資料。不過,重新啟用金鑰或還原權限需要很長時間。資料儲存區最多可能需要 24 小時,才能繼續提供資料。
因此,除非必要,否則請勿停用金鑰。在資料儲存區中停用及啟用金鑰是耗時的作業。舉例來說,如果頻繁切換金鑰的啟用/停用狀態,資料存放區就需要很長時間才能達到受保護狀態。停用金鑰後立即重新啟用,可能會導致數天的停機時間,因為系統會先從資料存放區停用金鑰,然後再重新啟用。
疑難排解:找不到 KMS 金鑰專案錯誤
症狀:嘗試使用 KMS 金鑰建立資料儲存庫時,您會收到類似下列的錯誤訊息:
KMS key projects/[...] not found for location: [...] and project number: [...]
問題:這則錯誤訊息可能會造成誤導。這不一定代表金鑰不存在。這可能表示 KMS 金鑰尚未註冊,無法在指定位置搭配 Vertex AI Search 使用。
解決方法:如要解決這個問題,請按照「註冊 Cloud KMS 金鑰」一文中的步驟註冊金鑰。完成註冊後,您就能建立受該金鑰保護的資料儲存庫。