客戶自行管理的加密金鑰

根據預設,AI Applications 會加密靜態儲存的客戶內容。AI 應用程式會為您處理加密作業,您不必採取其他動作。這項做法稱為「Google 預設加密」

如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配整合 CMEK 的服務 (包括 AI 應用程式)。使用 Cloud KMS 金鑰可讓您控管保護等級、位置、輪換時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 也能追蹤金鑰使用情形、查看稽核記錄,以及控管金鑰生命週期。您可以在 Cloud KMS 中控制及管理這些金鑰,而不是由 Google 擁有及管理用來保護您資料的對稱金鑰加密金鑰 (KEK)

使用 CMEK 設定資源後,存取 AI 應用程式資源的體驗與使用 Google 預設加密類似。如要進一步瞭解加密選項,請參閱客戶管理的加密金鑰 (CMEK)

AI 應用程式中的 Cloud KMS 限制

在 AI 應用程式中使用 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:check groundinggrounded generationranking

  • 您無法使用 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 服務代理人。如果未授予這項角色,Discovery Engine 就無法建立匯入作業所需的受 CMEK 保護臨時值區和目錄,因此受 CMEK 保護的資料儲存庫資料匯入作業會失敗。

  • 完成本頁的金鑰註冊操作說明後,再建立任何要由金鑰管理的資料儲存庫或應用程式。

註冊 Cloud KMS 金鑰

如要使用 CMEK 加密資料,您必須註冊多區域金鑰。如果資料需要單一地區金鑰 (例如使用第三方連結器時),您必須註冊單一地區金鑰。

REST

如要註冊 AI 應用程式專用的金鑰,請按照下列步驟操作:

  1. 使用要註冊的金鑰呼叫 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:金鑰的多區域:useurope
    • KEY_RING:保存金鑰的金鑰環名稱。
    • KEY_NAME:金鑰名稱。
    • PROJECT_ID:包含資料商店的專案 ID。
    • LOCATION:資料存放區的多區域:useu
    • CMEK_CONFIG_ID:為 CmekConfig 資源設定專屬 ID,例如 default_cmek_config
    • SET_DEFAULT:設為 true,將金鑰做為在多區域中建立後續資料儲存庫的預設金鑰。
  2. 選用:記錄方法傳回的 name 值,並按照「取得長時間執行的作業詳細資料」一文中的操作說明,查看作業完成時間。

    註冊金鑰通常需要幾分鐘。

    作業完成後,該多區域中的新資料儲存區就會受到金鑰保護。如需建立資料儲存庫的一般資訊,請參閱「關於應用程式和資料儲存庫」。

控制台

事前準備

確認該區域尚未受到金鑰保護。如果已透過 REST 指令為區域註冊金鑰,下列程序就會失敗。

如要判斷 AI Applications 中是否有某個位置的有效金鑰,請參閱「查看 Cloud KMS 金鑰」。

程序

如要註冊 AI 應用程式專屬金鑰,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「AI Applications」頁面。

    AI 應用程式

  2. 按一下「設定」,然後選取「CMEK」分頁標籤。

  3. 按一下 useu 地點的「新增金鑰」

    按一下地點的「新增金鑰」。
    按一下「新增金鑰」。
    1. 按一下「選取 Cloud KMS 金鑰」下拉式選單,然後選取金鑰。

      • 如果金鑰位於其他專案,請按一下「切換專案」,然後按一下專案名稱,輸入您建立的金鑰名稱,並選取該金鑰。

      • 如果您知道金鑰的資源名稱,請按一下「手動輸入」,貼上金鑰資源名稱,然後按一下「儲存」

    2. 依序點選「確定」和「儲存」

這會註冊金鑰,並建立名為 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:資料存放區的多區域:useu
    • 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:資料儲存庫的多區域:useu
    • 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 應用程式取消註冊金鑰,請按照下列步驟操作:

  1. 使用要取消註冊的 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:資料儲存庫的多區域:useu
    • 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"
     }
    }
    

  2. 選用:記錄方法傳回的 name 值,並按照「取得長時間執行的作業詳細資料」一文中的操作說明,查看作業何時完成。

    刪除金鑰通常需要幾分鐘的時間。

確認資料儲存庫是否受到金鑰保護

在您註冊金鑰前建立的資料儲存庫不會受到金鑰保護。如要確認特定資料儲存空間是否受到金鑰保護,請按照下列步驟操作:

  1. 在資料存放區中執行下列 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:資料存放區的多區域:useu
    • 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"
    

  2. 查看指令的輸出內容:如果輸出內容中包含 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 保護,這類核心資訊也會受到保護。

雖然您無法執行特定指令來驗證工作階段是否受到保護,但如果執行「Verify that a data store is protected by a key」(確認資料儲存庫是否受到金鑰保護) 指令,並在 cmekConfig 資源中看到金鑰,則表示工作階段資料受到保護。

輪替 Cloud KMS 金鑰

輪替金鑰時,您會建立新的金鑰版本,並將新版本設為主要版本。請先啟用原始金鑰版本一段時間,再停用。這樣一來,使用舊版金鑰的任何長時間執行作業,都有時間完成。

以下程序說明如何輪替 AI 應用程式資料存放區的金鑰。如需輪替金鑰的一般資訊,請參閱 Cloud KMS 指南中的「金鑰輪替」。

重要事項:請勿輪替與建議應用程式或任何需要分析的應用程式相關聯的資料存放區金鑰,也不要輪替用於第三方連接器的單一區域金鑰。請參閱「AI 應用程式中的 Cloud KMS 限制」。

  1. 重新註冊金鑰。如要這麼做,請重複「註冊 Cloud KMS 金鑰」的步驟 1。

  2. 請參閱 Cloud KMS 指南的「管理金鑰」一節,瞭解如何執行下列操作:

    1. 建立新的金鑰版本、啟用該版本,並設為主要版本。

    2. 讓舊版金鑰保持啟用狀態。

    3. 過一週左右,停用舊版金鑰,並確認一切運作正常。

    4. 過一段時間後,如果確定停用舊金鑰版本不會造成任何問題,即可銷毀舊金鑰版本。

如果 Cloud KMS 金鑰已停用或撤銷

如果金鑰停用或金鑰權限遭到撤銷,資料存放區會在 15 分鐘內停止擷取及提供資料。不過,重新啟用金鑰或還原權限需要很長時間。資料儲存區最多可能需要 24 小時,才能繼續提供資料。

因此,除非必要,否則請勿停用金鑰。在資料儲存區中停用及啟用金鑰是耗時的作業。舉例來說,如果重複在停用和啟用之間切換金鑰,資料存放區就需要很長的時間才能達到受保護狀態。停用金鑰後立即重新啟用,可能會導致數天的停機時間,因為系統會先從資料存放區停用金鑰,然後再重新啟用。