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

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

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

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

本指南說明對 Vertex AI 資源使用 CMEK 的一些優點,並逐步說明如何設定訓練工作以使用 CMEK。

如要進一步瞭解如何為 Colab Enterprise 使用 CMEK,請參閱 Colab Enterprise CMEK 頁面。如要進一步瞭解如何為 Vertex AI Workbench 執行個體使用 CMEK,請參閱 Vertex AI Workbench 執行個體 CMEK 頁面

Vertex AI 資源的 CMEK

以下各節說明 Vertex AI 資源的 CMEK 基本資訊,您必須先瞭解這些資訊,才能為工作設定 CMEK。

CMEK 的優點

一般來說,如果您需要完全控管用於加密資料的金鑰,CMEK 最能派上用場。使用 CMEK 時,您可以在 Cloud KMS 中管理金鑰。舉例來說,您可以使用 Cloud KMS API 輪替或停用金鑰,或是設定輪替排程。如要進一步瞭解 CMEK,包括啟用時機和原因,請參閱 Cloud KMS 說明文件

執行 AutoML自訂 訓練工作時,程式碼會在 Vertex AI 管理的一或多個虛擬機器 (VM) 執行個體上執行。為 Vertex AI 資源啟用 CMEK 時,系統會使用您指定的金鑰,而非 Google 管理的金鑰,加密這些 VM 開機磁碟上的資料。CMEK 金鑰會加密下列類型的資料:

  • VM 上的程式碼副本。
  • 程式碼載入的任何資料。
  • 程式碼儲存到本機磁碟的任何暫時性資料。
  • 使用 AutoML 訓練的模型。
  • 上傳至媒體資料集的媒體檔案 (資料)。

一般來說,CMEK 金鑰不會加密與作業相關聯的中繼資料,例如作業名稱和區域,或是資料集的顯示名稱。作業相關聯的中繼資料一律會使用 Google 的預設加密機制加密。

如果是資料集,使用者將資料匯入資料集時,資料項目和註解會以 CMEK 加密。資料集顯示名稱不會經過 CMEK 加密。

對於模型,儲存在儲存系統 (例如磁碟) 中的模型會經過 CMEK 加密。所有模型評估結果都會經過 CMEK 加密。

對於端點,端點下模型部署作業使用的所有模型檔案都會經過 CMEK 加密。這不包括任何記憶體內資料。

如果是批次預測,執行批次預測工作時使用的任何暫存檔案 (例如模型檔案、記錄、VM 磁碟) 都會經過 CMEK 加密。批次預測結果會儲存在使用者提供的目的地。因此,Vertex AI 會採用目的地加密設定的預設值。否則,結果也會以 CMEK 加密。

如果是資料標註,所有輸入檔案 (圖片、文字、影片、表格)、暫時討論內容 (例如問題、意見回饋) 和輸出內容 (標註結果) 都會經過 CMEK 加密。註解規格顯示名稱不會經過 CMEK 加密。

外部金鑰

您可以使用 Cloud External Key Manager (Cloud EKM) 建立您管理的外部金鑰,加密 Google Cloud中的資料。

使用 Cloud EKM 金鑰時,Google 無法控管外部管理金鑰的供應情形。如果您要求存取以外部代管金鑰加密的資源,但金鑰無法使用,Vertex AI 就會拒絕要求。金鑰可用後,您可能需要等待最多 10 分鐘,才能存取資源。

如要進一步瞭解使用外部金鑰時的注意事項,請參閱 Cloud External Key Manager

將 CMEK 與其他 Google Cloud 產品搭配使用

為 Vertex AI 資源設定 CMEK 時,不會自動為與 Vertex AI 一併使用的其他 Google Cloud 產品設定 CMEK。如要使用 CMEK 加密其他Google Cloud 產品中的資料,必須進行額外設定。例如:

目前支援 CMEK 的資源

目前適用於 CMEK 的 Vertex AI 資源如下。預先發布版功能的 CMEK 支援也處於預先發布狀態。

資源 已加密的資料 說明文件連結
資料集
  • 所有使用者匯入的資料 (例如 DataItemsAnnotations 的文字內容或影片)。
  • 使用者建立的內容,例如 AnnotationSpecsColumnSpecs
型號
  • 上傳的模型檔案。
  • 已訓練模型的評估結果。
端點
  • 用於端點下模型部署的所有模型檔案。 這包括任何記憶體內資料,但如果停用金鑰,模型就會自動取消部署。
CustomJob
  • 用於執行作業的 VM 上的程式碼副本。
  • 程式碼載入的任何資料。
  • 程式碼儲存到本機磁碟的任何暫時性資料。
HyperparameterTuningJob
  • 用於執行作業的 VM 上的程式碼副本。
  • 程式碼載入的任何資料。
  • 程式碼儲存到本機磁碟的任何暫時性資料。
TrainingPipeline
  • 用於執行作業的 VM 上的程式碼副本。
  • 程式碼載入的任何資料。
  • 程式碼儲存到本機磁碟的任何暫時性資料。
  • AutoML 訓練的模型。
BatchPredictionJob (不含 AutoML 圖片批次預測)
  • 工作期間使用的任何暫時性檔案 (例如模型檔案、記錄、VM 磁碟),用於繼續執行批次預測工作。
  • 如果 BatchPrediction 的寫入結果儲存在使用者提供的目的地,系統會遵守預設值的加密設定。否則也會以 CMEK 加密。
ModelDeploymentMonitoringJob
  • 工作用來處理模型部署監控工作的任何暫存檔案 (例如訓練資料集檔案、記錄、VM 磁碟)。
  • 用於偵測監控異常狀況的任何資料。
  • 如果停用金鑰,模型部署監控工作就會暫停。
PipelineJob
  • 管道工作和所有子資源。
MetadataStore
  • 中繼資料儲存區中的所有內容。
TensorBoard
  • 上傳的 TensorBoard 記錄檔中的所有資料,包括純量、直方圖、圖形定義、圖片和文字。
特徵商店
  • 特徵商店和特徵商店中的所有內容。
索引
  • 用於向量搜尋索引的所有資料檔案,都儲存在 Cloud Storage、Pub/Sub 和內部儲存空間。Index 和 IndexEndpoint 必須使用相同的金鑰建立。
IndexEndpoint
  • 用於向量搜尋索引的所有資料檔案,都儲存在 Cloud Storage、Pub/Sub 和內部儲存空間。Index 和 IndexEndpoint 必須使用相同的金鑰建立。
Colab Enterprise 執行階段
  • 執行階段 VM 的開機磁碟和資料磁碟
Colab Enterprise 筆記本
  • 筆記本檔案和註解

為生成式 AI 微調管道提供 CMEK 支援

下列模型的微調管道提供 CMEK 支援:

  • BERT
  • T5
  • image-generation (GPU)

限制

下列項目不支援 CMEK:

  • AutoML 圖片模型批次預測 (BatchPredictionJob)
  • TPU 調整
  • Vertex AI 內容快取

為資源設定 CMEK

下列各節說明如何在 Cloud Key Management Service 中建立金鑰環和金鑰、授予 Vertex AI 加密者和解密者金鑰權限,以及建立使用 CMEK 的資源。

事前準備

本指南假設您使用兩個不同的 Google Cloud 專案,為 Vertex AI 資料設定 CMEK:

  • 用於管理加密金鑰的專案 (稱為「Cloud KMS 專案」)。
  • 專案:用於存取 Cloud Storage 中的 Vertex AI 資料或輸出內容,以及與您使用案例所需的任何其他 Google Cloud產品互動 (稱為「AI Platform 專案」)。

建議的設定可支援職責分離

或者,您也可以為整個指南使用單一 Google Cloud 專案。如要這麼做,請針對下列所有工作使用相同專案,這些工作會參照 Cloud KMS 專案和 AI Platform 專案。

設定 Cloud KMS 專案

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud KMS API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud KMS API.

    Enable the API

  8. 設定 AI Platform 專案

    1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
    2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Go to project selector

    3. Make sure that billing is enabled for your Google Cloud project.

    4. Enable the Vertex AI API.

      Enable the API

    5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Go to project selector

    6. Make sure that billing is enabled for your Google Cloud project.

    7. Enable the Vertex AI API.

      Enable the API

    8. 設定 Google Cloud CLI

      本指南中的部分步驟需要使用 gcloud CLI,其他步驟則可選擇使用。

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      建立金鑰環和金鑰

      請按照 Cloud KMS 指南建立對稱金鑰,建立金鑰環和金鑰。建立金鑰環時,請指定支援 Vertex AI 作業的區域做為金鑰環的位置。只有在資源和金鑰使用相同區域時,Vertex AI 訓練才支援 CMEK。您不得為金鑰環指定雙區域、多區域或全域位置。

      請務必在 Cloud KMS 專案中建立金鑰環和金鑰。

      授予 Vertex AI 權限

      如要為資源使用 CMEK,您必須授予 Vertex AI 權限,允許其使用您的金鑰加密及解密資料。Vertex AI 會使用 Google 管理的服務代理程式,透過您的資源執行作業。這個服務帳戶的電子郵件地址格式如下:

      service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
      

      如要找出 AI Platform 專案的適當服務帳戶,請前往 Google Cloud 主控台的「IAM」IAM頁面,然後找出符合下列電子郵件地址格式的成員,並以 AI Platform 專案的專案編號取代 AI_PLATFORM_PROJECT_NUMBER 變數。服務帳戶的名稱也是 Vertex AI Service Agent

      前往「IAM」頁面

      記下這個服務帳戶的電子郵件地址,並在後續步驟中使用,授予該帳戶使用金鑰加密及解密資料的權限。您可以使用 Google Cloud 控制台或 Google Cloud CLI 授予權限:

      Google Cloud 控制台

      1. 在 Google Cloud 控制台中,按一下「安全性」,然後選取「金鑰管理」。系統會將您帶往「Cryptographic Keys」(加密編譯金鑰) 頁面,並選取您的 Cloud KMS 專案。

        前往「Cryptographic Keys」(加密編譯金鑰) 頁面

      2. 按一下您在本指南前一節中建立的金鑰環名稱,前往「金鑰環詳細資料」頁面。

      3. 找出您在本指南前一節中建立的金鑰,然後勾選對應的核取方塊。如果標示金鑰名稱的資訊面板尚未開啟,請按一下「顯示資訊面板」

      4. 在資訊面板中,按一下「新增成員」,開啟「將成員新增至『KEY_NAME』」對話方塊。在這個對話方塊中,請執行下列操作:

        1. 在「New members」(新增成員) 方塊中,輸入您在上一個部分中記下的服務帳戶電子郵件地址: service-AI_PLATFORM_PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
        2. 在「Select a role」(選取角色) 下拉式清單中,依序點選「Cloud KMS」和「Cloud KMS CryptoKey Encrypter/Decrypter」(Cloud KMS 加密編譯金鑰加密者/解密者) 角色。

        3. 按一下 [儲存]

      gcloud

      執行下列指令:

      gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring=KEY_RING_NAME \
        --location=REGION \
        --project=KMS_PROJECT_ID \
        --member=serviceAccount:service-AI_PLATFORM_PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com \
        --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      請將下列預留位置替換為實際值:

      • KEY_NAME:您在本指南前一節中建立的金鑰名稱。
      • KEY_RING_NAME:您在本指南的前一個章節中建立的金鑰環。
      • REGION:您建立金鑰環的地區。
      • KMS_PROJECT_ID:Cloud KMS 專案的 ID。
      • AI_PLATFORM_PROJECT_NUMBER:AI Platform 專案的專案編號,您在上一個部分中已記下這個編號,因為這是服務帳戶電子郵件地址的一部分。

      使用 KMS 金鑰建立資源

      建立新的支援 CMEK 的資源時,您可以將金鑰指定為建立參數之一。

      控制台

      Google Cloud 控制台的 Vertex AI 專區中建立新的支援 CMEK 的資源時,您可以在一般或進階選項專區中選取金鑰:

      選取資源區段的加密金鑰

      REST 和指令列

      建立支援的資源時,請在要求中加入 encryptionSpec 物件,並將 encryptionSpec.kmsKeyName 欄位設為指向金鑰資源。

      舉例來說,建立 dataset 資源時,您會在要求主體中指定金鑰:

       {
         "displayName": DATASET_NAME,
         "metadataSchemaUri": METADATA_URI,
         "encryptionSpec": {
           "kmsKeyName": "projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME"
         }
       }
      

      Java

      建立支援的資源時,請將 EncryptionSpec 設為指向金鑰資源。詳情請參閱 Java 適用的 Vertex AI 用戶端程式庫說明文件。

      Node.js

      建立支援的資源時,請將 encryptionSpec 參數設為指向金鑰資源。詳情請參閱 Vertex AI Node.js 用戶端程式庫說明文件。

      Python

      建立支援的資源時,請將 encryption_spec 參數設為指向金鑰資源。詳情請參閱 Cloud AI Platform 適用的 Python 用戶端說明文件。

      後續步驟