根據預設,AI 應用程式會加密靜態儲存的客戶內容。AI 應用程式會為您處理加密作業,您不必採取其他動作。這個選項稱為「Google 預設加密」。
如果您想控制加密金鑰,可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),並搭配 CMEK 整合服務 (包括 AI 應用程式) 使用。使用 Cloud KMS 金鑰可讓您控制金鑰的保護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 還可讓您追蹤金鑰使用情形、查看稽核記錄,以及控管金鑰生命週期。您可以在 Cloud KMS 中控制及管理用來保護資料的對稱金鑰加密金鑰 (KEK),而非由 Google 擁有及管理這些金鑰。
使用 CMEK 設定資源後,存取 AI 應用程式資源的體驗就會類似使用 Google 預設加密功能。如要進一步瞭解加密選項,請參閱「客戶管理的加密金鑰 (CMEK)」。
Cloud KMS 在 AI 應用程式中的限制
AI 應用程式中的 CMEK (Cloud KMS) 金鑰有下列限制:
- 已套用至資料儲存庫的鍵無法變更。
- 註冊金鑰後,就無法取消註冊或從資料儲存庫中移除。
- 您必須使用美國或歐盟的多區域資料儲存空間和應用程式 (而非全球應用程式)。如要進一步瞭解多地區和資料儲存地點,包括使用非全球位置時的限制,請參閱位置。
如果您需要為專案註冊多個金鑰,請與 Google 帳戶團隊聯絡,要求增加 CMEK 設定的配額,並說明為何需要多個金鑰。
使用外部金鑰管理工具 (EKM) 搭配 CMEK 的做法已納入 GA 的許可清單。如要將 EKM 與 CMEK 搭配使用,請與 Google 帳戶團隊聯絡。
以下限制適用於使用 CMEK 的 EKM 或 HSM:
用於加密和解密呼叫的 EKM 和 HSM 配額應至少有 1,000 QPM 的預留空間。如要瞭解如何檢查配額,請參閱「檢查 Cloud KMS 配額」。
如果使用 EKM,金鑰必須在任何超過 30 秒的時間範圍內,有超過 90% 的時間可供存取。如果在這個時間內無法存取金鑰,可能會對索引和搜尋新鮮度造成負面影響。
如果發生結帳問題、持續超出配額問題,或持續無法連線問題超過 12 小時,服務會自動關閉與 EKM 或 HSM 金鑰相關聯的 CmekConfig。
在金鑰註冊至專案之前建立的資料儲存庫,無法受到金鑰保護。
您無法為受金鑰保護的資料儲存庫調整搜尋模型。
如果應用程式有多個資料儲存庫,其中一個資料儲存庫使用 CMEK 設定,則所有其他資料儲存庫也必須使用相同的 CMEK 設定。
第三方連接器的單一區域金鑰不支援金鑰輪替。如果您停用或刪除用於保護與第三方連接器相關聯的資料儲存庫的金鑰版本,連接器就會停止運作。
金鑰輪替與 analytics 不相容。如果您旋轉資料儲存庫的金鑰,使用該資料儲存庫的應用程式就不會再顯示分析資料。
推薦內容應用程式不支援金鑰輪替。如果您停用或刪除保護與推薦應用程式相關聯資料儲存庫的金鑰版本,推薦應用程式就會停止運作。
Vertex AI Search 必須使用 Enterprise 版。如要瞭解 Enterprise 版,請參閱「關於進階功能」。
第一方連接器不符合 CMEK 規範,但 BigQuery 和 Cloud Storage 的「import-once」和「periodic」資料儲存庫除外。
醫療照護搜尋資料儲存庫和第三方連接器皆符合 CMEK 規定。不過,第一方連接器 (例如 BigQuery 週期連接器) 不符合 CMEK 規定。如需醫療照護資料儲存庫的一般資訊,請參閱「建立醫療照護搜尋資料儲存庫」。如要瞭解如何讓第三方連接器符合 CMEK 規定,請參閱「關於第三方連接器的單一區域金鑰」。
金鑰不適用於下列 RAG API:check grounding、grounded generation 和 ranking。
- 您無法使用 Terraform 為 AI 應用程式設定 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 服務代理人。如果未授予這個角色,受 CMEK 保護的資料儲存庫資料匯入作業就會失敗,因為 Discovery Engine 無法建立受 CMEK 保護的臨時對值區和目錄,而這兩者是匯入作業所需的項目。請先完成本頁的金鑰註冊操作說明,再建立要由金鑰管理的任何資料儲存庫或應用程式。
- 應用程式已啟用 Enterprise 版功能。請參閱開啟或關閉 Enterprise 版。
註冊 Cloud KMS 金鑰
如要使用 CMEK 加密資料,您必須註冊多區域金鑰。您可以選擇註冊單一地區金鑰,例如在使用第三方連接器時,如果資料需要單一地區金鑰。
REST
如要為 AI 應用程式註冊專屬金鑰,請按照下列步驟操作:
使用要註冊的金鑰呼叫
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
值,並按照「取得長時間執行作業的詳細資料」中的指示,查看作業完成的時間。註冊金鑰通常需要幾分鐘的時間。
作業完成後,該多區域中的新資料儲存庫就會受到金鑰保護。如要進一步瞭解如何建立資料儲存庫,請參閱「關於應用程式和資料儲存庫」。
控制台
事前準備
請確認該區域未受金鑰保護。如果已透過 REST 指令為區域註冊金鑰,則以下程序會失敗。
如要判斷 AI 應用程式是否在某個位置使用有效金鑰,請參閱「查看 Cloud KMS 金鑰」。
程序
如要為 AI 應用程式註冊專屬金鑰,請按照下列步驟操作:
前往 Google Cloud 控制台的「AI Applications」頁面。
按一下「設定」,然後選取「CMEK」分頁標籤。
按一下「us」或「eu」位置的「Add key」。
按一下「新增金鑰」。 按一下「選取 Cloud KMS 金鑰」下拉式選單,然後選取金鑰。
如果金鑰位於其他專案中,請按一下「Switch project」,然後點選專案名稱,輸入您建立的金鑰名稱,並選取金鑰。
如果您知道金鑰的資源名稱,請按一下「手動輸入」,貼上金鑰資源名稱,然後按一下「儲存」。
依序點選「OK」>「Save」。
這會註冊您的金鑰,並建立名為 default_cmek_config
的 CmekResource。
擷取的資料可能需要幾小時才會顯示在搜尋結果中。
查看 Cloud KMS 金鑰
如要查看 AI 應用程式的註冊金鑰,請執行下列任一操作:
如果您有 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 金鑰
如要從 AI 應用程式取消註冊金鑰,請按照下列步驟操作:
使用您要取消註冊的 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 金鑰保護的其他資料
除了資料儲存庫中的資料,您的金鑰還可保護 AI 應用程式持有的其他類型應用程式專屬核心資訊,例如在搜尋並追蹤期間產生的工作階段資料。如果與應用程式相關聯的資料儲存庫受 CMEK 保護,這類核心資訊就會受到 CMEK 保護。
雖然您無法執行特定指令來驗證工作階段是否受到保護,但如果您執行「Verify that a data store is protected by a key」指令,並在 cmekConfig 資源中看到該金鑰,即可得知工作階段資料受到保護。
輪替 Cloud KMS 金鑰
輪替金鑰時,您會建立金鑰的新版本,並將新版本設為主要版本。請先啟用原始版本的金鑰一段時間,再停用該金鑰。這麼做可讓任何可能使用舊版金鑰的長時間運作作業完成。
以下程序概述了輪替 AI 應用程式資料儲存庫金鑰的步驟。如需有關輪替金鑰的一般資訊,請參閱 Cloud KMS 指南中的「金鑰輪替」一節。
重要事項:請勿在與推薦應用程式或需要數據分析的任何應用程式相關聯的資料儲存庫中旋轉金鑰,也請勿旋轉用於第三方連接器的單一區域金鑰。請參閱「AI 應用程式中 Cloud KMS 的限制」。
重新註冊金鑰。方法是重複執行「註冊 Cloud KMS 金鑰」中的步驟 1。
請參閱 Cloud KMS 指南的「管理金鑰」一節,瞭解如何執行下列操作:
建立新的金鑰版本、啟用該版本,並將其設為主要版本。
保留舊版金鑰。
大約一週後,請停用舊版金鑰,並確認所有內容都正常運作。
日後,如果您確定停用舊版金鑰不會造成任何問題,就可以銷毀舊版金鑰。
是否已停用或撤銷 Cloud KMS 金鑰
如果金鑰已停用或金鑰權限遭到撤銷,資料存放區會在 15 分鐘內停止擷取資料,並停止提供資料。不過,重新啟用金鑰或還原權限需要很長的時間。資料儲存庫最多可能需要 24 小時才能恢復提供資料。
因此,除非必要,否則請勿停用金鑰。在資料儲存區中停用及啟用金鑰是一項耗時的作業。舉例來說,如果您不斷在停用和啟用狀態之間切換金鑰,資料儲存庫就需要花費很長的時間才能達到受保護的狀態。停用金鑰並立即重新啟用,可能會導致數天停機,因為金鑰會先從資料儲存庫停用,然後再重新啟用。