客戶自行管理的加密金鑰 (CMEK)

根據預設,Dialogflow CX 會加密靜態客戶內容。Dialogflow CX 會為您處理加密作業,您不必採取任何其他動作。這項做法稱為「Google 預設加密機制」。 Google 預設加密功能使用的強化金鑰管理系統,與我們加密自家資料時使用的系統相同。這些系統包括嚴格的金鑰存取權控管與稽核措施。

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

使用 CMEK 設定資源後,存取 Dialogflow CX 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱「客戶自行管理的加密金鑰 (CMEK)」。

受保護的資料

您可以透過 CMEK 保護所有 Dialogflow CX 虛擬服務專員的靜態資料

限制

  • 系統支援金鑰輪替,但不支援資料重新加密。系統不支援使用新的金鑰版本,重新加密先前加密的資料。
  • 不支援下列地區
    • global
  • 每個專案位置應使用一個金鑰。
  • 如要還原已啟用 CMEK 的代理程式,請務必選擇 Cloud Storage 選項。
  • 您無法追溯將未整合 CMEK 的專案中現有資源整合 CMEK。請改為匯出資源,然後還原至新的 CMEK 專案。
  • Vertex AI Agent Builder 有一些 Cloud Key Management Service 限制

建立金鑰

如要建立金鑰,請使用 Cloud KMS。如需操作說明,請參閱「建立對稱金鑰」。建立或選擇金鑰時,請務必設定下列項目:

  • 請選取代理程式使用的位置,因為位置不符時,要求會失敗。

找出 Dialogflow 服務帳戶

如要找出 Dialogflow 服務帳戶,請按照下列步驟操作:

  1. 開啟 Conversational Agents 控制台
  2. 選取專案。
  3. 選取代理程式。
  4. 在導覽選單中,按一下「設定」,然後前往「安全性」分頁標籤。
  5. 按一下「管理安全性設定」,系統會將您重新導向至 CCAI 控制台
  6. 在 CCAI 控制台中,前往「CMEK」CMEK分頁。
  7. 按一下「檢查或建立服務帳戶」
  8. 記下顯示的服務帳戶名稱 (例如 service-665989447347@gcp-sa-ccai-cmek.IAM.gserviceaccount.com)。

將權限授予服務帳戶

如要將權限授予服務帳戶,請按照下列步驟操作:

  1. 前往 Cloud KMS 頁面
  2. 選取您建立的金鑰環。
  3. 選取您在該金鑰環中建立的金鑰。
  4. 前往「權限」分頁標籤。
  5. 點選「授予存取權」。
  6. 在「新增主體」欄位,輸入您在上一步驟中識別的 Dialogflow 服務帳戶。
  7. 在「Select a role」(選取角色) 清單中,選取「Cloud KMS CryptoKey Encrypter/Decrypter」(Cloud KMS CryptoKey 加密者/解密者)
  8. 按一下 [儲存]

複製金鑰資源名稱

如要複製金鑰資源名稱,請按照下列步驟操作:

  1. 前往 KMS 金鑰詳細資料頁面。
  2. 按一下「動作」選單,然後選取「複製資源名稱」

這項操作會複製 KMS 金鑰的完整路徑 (例如 projects/<var>PROJECT_ID</var>/locations/<var>LOCATION_ID</var>/keyRings/<var>KEY_RING</var>/cryptoKeys/<var>KEY_ID</var>)。

在 Dialogflow 中啟用 CMEK

如要在 Dialogflow 中啟用 CMEK,請按照下列步驟操作:

  1. 返回 CCAI 控制台的「CMEK」CMEK分頁。
  2. 將複製的金鑰資源名稱貼到要啟用 CMEK 的位置的「金鑰」欄位。
  3. 按一下 [儲存]

這會啟動長時間執行的作業 (LRO),為所選位置啟用 CMEK。這項程序需要 2 到 3 分鐘。

設定代理程式以使用金鑰

建立代理程式時,請指定位置,以及該位置要使用 Google-managed encryption key 或 CMEK。

使用 CLI 設定 CMEK

或者,您也可以使用下列指令設定 CMEK。如果為多個區域設定,這項功能會很有幫助。

  1. 使用 Google Cloud CLI 為專案建立 CCAI CMEK 服務帳戶。詳情請參閱 gcloud 服務身分說明文件

     gcloud beta services identity create --service=dialogflow.googleapis.com --project=PROJECT_ID

    服務帳戶便建立完成。不會在建立回應中傳回,但格式如下:

     service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com
  2. Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 CCAI CMEK 服務帳戶,允許服務使用您的金鑰加密及解密。

     gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
     --project=PROJECT_ID \
     --location=LOCATION_ID \
     --keyring=KMS_KEY_RING \
     --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com \
     --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

使用 API 設定金鑰及檢查設定

  1. 如要設定 Dialogflow CX 地理位置的金鑰,請呼叫 InitializeEncryptionSpec API 並提供下列變數:

    • PROJECT_ID:專案 ID。 Google Cloud
    • LOCATION_ID:您選取要在 Dialogflow CX 中啟用 CMEK 的位置。
    • KMS_KEY_RING:建立 KMS 金鑰的金鑰環。金鑰環中的位置 (例如 projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING) 必須與您啟用 CMEK 的位置相符。
    • KMS_KEY_ID:用於加密及解密所選位置中 Dialogflow CX 資料的 KMS 金鑰名稱。

    例如:

     curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        -d "{ encryption_spec: { kms_key: 'projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY_ID' } }" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec:initialize"

    JSON 回應類似於下列內容:

     {
       "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"
     }
  2. 如要取得長時間執行的作業 (LRO) 結果,請呼叫 GetOperation API。

    例如:

     curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"
  3. 如要擷取為地點設定的加密金鑰,請呼叫 GetEncryptionSpec API。

    例如:

     curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec"

撤銷金鑰

如要撤銷 Dialogflow CX 的金鑰存取權,可以停用 KMS 金鑰版本,或從 KMS 金鑰移除服務帳戶的 Cloud KMS CryptoKey Encrypter/Decrypter 角色。

撤銷金鑰後,Dialogflow CX 就無法存取加密資料,且服務會停止運作,直到金鑰權限恢復為止。