顧客管理の暗号鍵(CMEK)

Google Cloud では、デフォルトで、Google が管理する暗号鍵を使用して、自動的に保存されているデータを暗号化します。データを保護する鍵について特定のコンプライアンスや規制の要件がある場合は、リソースで顧客管理の暗号鍵(CMEK)を使用できます。

Vertex AI リソースで CMEK を使用する具体的なメリットについては、このガイドの以降のセクションをご覧ください。CMEK 全般についての詳細は、Cloud Key Management Service のドキュメントをご覧ください。

このガイドでは、CMEK を Vertex AI リソースに使用するメリットと CMEK を使用するためのトレーニング ジョブの構成方法について説明します。

Colab Enterprise で CMEK を使用する方法については、Colab Enterprise の CMEK ページをご覧ください。

Vertex AI リソースの CMEK

このセクションでは、ジョブ用に CMEK を構成する前に理解する必要がある Vertex AI リソースの基本事項について説明します。

CMEK のメリット

一般に、CMEK は、データの暗号化に使用する鍵を完全に制御する必要がある場合によく利用されます。CMEK を使用すると、Cloud KMS 内で鍵を管理できます。たとえば、Cloud KMS API を使用して、鍵のローテーションや無効化を行うことが可能です。CMEK の一般的な用途や使用する理由などの詳細については、Cloud KMS のドキュメントをご覧ください。

AutoML またはカスタム トレーニング ジョブを実行する場合、Vertex AI によって管理される 1 つ以上の仮想マシン(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 をご覧ください。

他の Google Cloud プロダクトで CMEK を使用する

CMEK を Vertex AI リソース用に構成しても、Vertex AI と一緒に使用する他の Google Cloud プロダクト用の CMEK は自動的には構成されません。他の Google Cloud プロダクトで CMEK を使用してデータを暗号化するには、別途構成が必要になります。次に例を示します。

  • Cloud Storage: カスタム トレーニングを行うと、Vertex AI は通常 Cloud Storage からデータを読み込みます。Python トレーニング アプリケーションとトレーニング用ビルド済みコンテナを使用すると、Vertex AI によって Cloud Storage バケットからもコードが読み込まれます。また、一部のトレーニング ジョブでは、その出力の一部として、トレーニング済みモデルのアーティファクト(TensorFlow SaveModel ディレクトリなど)が Cloud Storage バケットにエクスポートされます。

    Cloud Storage のデータを CMEK で暗号化するには、顧客管理の暗号鍵の使用に関する Cloud Storage ガイドをご覧ください。暗号鍵を、Vertex AI で使用する Cloud Storage バケットのデフォルト鍵として設定することも、特定のオブジェクトを暗号化するために使用することもできます。

    Cloud Storage での CMEK の使用方法の詳細については、こちらをご覧ください。

  • Artifact Registry: トレーニングにカスタム コンテナを使用する場合、Artifact Registry からコンテナ イメージを読み込むように Vertex AI を構成できます。

    コンテナ イメージが CMEK で暗号化されるようにするには、CMEK の Artifact Registry ガイドをご覧ください。

  • Cloud Logging: トレーニング ジョブを実行すると、Vertex AI トレーニングはログを Logging に保存します。CMEK を使用してこれらのログを暗号化するには、Cloud Logging の CMEK を構成するをご覧ください。

現在の CMEK がサポートするリソース

CMEK でカバーされる現在の Vertex AI リソースは次のとおりです。プレビュー機能の CMEK サポートもプレビュー ステータスです。

リソース 暗号化されたマテリアル ドキュメントのリンク
データセット
  • DataItemsAnnotations でユーザーがインポートしたすべてのデータ(テキスト コンテンツや動画など)。
  • ユーザーが作成したコンテンツ(AnnotationSpecsColumnSpecs など)
モデル
  • アップロードされたモデルファイル。
  • トレーニング済みモデルの評価結果。
エンドポイント
  • エンドポイントでモデルをデプロイするために使用されるすべてのモデルファイル。これにはメモリ内データは含まれませんが、鍵が無効になっている場合、モデルは自動的にデプロイ解除されます。
CustomJob
  • オペレーションの実行に使用する VM のコードのコピー。
  • コードによって読み込まれるデータ。
  • コードによってローカル ディスクに保存されるすべての一時データ。
HyperparameterTuningJob
  • オペレーションの実行に使用する VM のコードのコピー。
  • コードによって読み込まれるデータ。
  • コードによってローカル ディスクに保存されるすべての一時データ。
TrainingPipeline
  • オペレーションの実行に使用する VM のコードのコピー。
  • コードによって読み込まれるデータ。
  • コードによってローカル ディスクに保存されるすべての一時データ。
  • AutoML でトレーニングされたモデル。
BatchPredictionJob(AutoML 画像 batchPrediction を除く)
  • バッチ予測ジョブを進めるために使用される一時ファイル(モデルファイル、ログ、VM ディスクなど)。
  • BatchPrediction の書き込まれた結果が、ユーザーが指定した宛先に格納されている場合は、デフォルト値の暗号化構成に従います。それ以外の場合は、CMEK で暗号化されます。
ModelDeploymentMonitoringJob
  • モデルのデプロイのモニタリング ジョブを処理するジョブで使用される一時ファイル(トレーニング データセット ファイル、ログ、VM ディスクなど)。
  • モニタリングで異常を検出するために使用されるデータ。
  • キーが無効になっている場合、モデルのデプロイのモニタリング ジョブは一時停止されます。
PipelineJob
  • パイプライン ジョブとそのすべてのサブリソース。
MetadataStore
  • メタデータ ストアのすべてのコンテンツ。
TensorBoard
  • アップロードされた TensorBoard ログのすべてのデータ(スカラー、ヒストグラム、グラフの定義、画像、テキスト)。
Featurestore
  • featurestore と featurestore のすべてのコンテンツ。
Index
  • ベクトル検索インデックスに使用されるすべてのデータファイルは、Cloud Storage、Pub/Sub、内部ストレージに保存されます。Index と IndexEndpoint は同じキーで作成する必要があります。
IndexEndpoint
  • ベクトル検索インデックスに使用されるすべてのデータファイルは、Cloud Storage、Pub/Sub、内部ストレージに保存されます。Index と IndexEndpoint は同じキーで作成する必要があります。
Colab Enterprise ランタイム
  • ランタイムの VM のブートディスクとデータディスク

生成 AI チューニング パイプラインの CMEK サポート

次のモデルのチューニング パイプラインで CMEK サポートが提供されます。

  • text-bison for PaLM 2(GPU)
  • BERT
  • T5
  • image-generation (GPU)

制限事項

次の機能には CMEK サポートが提供されません。

  • AutoML 画像モデルのバッチ予測(BatchPredictionJob
  • TPU のチューニング

リソースに CMEK を構成する

以降のセクションでは、Cloud Key Management Service でキーリングと鍵を作成する方法、鍵の Vertex AI の暗号化と復号の権限を付与する方法、CMEK を使用するリソースを作成する方法について説明します。

始める前に

このガイドでは、Vertex AI データ用の CMEK を構成するため、2 つの独立した Google Cloud プロジェクトを使用することを前提としています。

  • 暗号鍵を管理するためのプロジェクト(「Cloud KMS プロジェクト」)。
  • Vertex AI のデータまたは Cloud Storage の出力にアクセスし、用途に応じて他の Google Cloud プロダクトとやり取りを行うためのプロジェクト(「AI Platform プロジェクト」)。

このおすすめの設定は、職掌分散をサポートしています。

あるいは、このガイド全体で 1 つの 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

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

Google Cloud CLI を設定する

このガイドの一部の手順では gcloud CLI は必須となり、それ以外の手順ではオプションの手段になります。

Install the Google Cloud CLI, then initialize it by running the following command:

gcloud init

キーリングと鍵を作成する

対称鍵の作成に関する 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 Console の [IAM] ページに移動し、AI_PLATFORM_PROJECT_NUMBER 変数を置き換えて、AI Platform プロジェクトのプロジェクト番号を使用してこのメールアドレス形式と一致するメンバーを見つます。このサービス アカウントは、Vertex AI Service Agent という名前でもあります。

[IAM] ページに移動

このサービス アカウントのメールアドレスをメモします。これを以降の手順で使用し、鍵を使用したデータの暗号化と復号を行う権限を付与します。権限を付与するには、Google Cloud コンソールまたは Google Cloud CLI を使用します。

Google Cloud コンソール

  1. Google Cloud コンソールで [セキュリティ] をクリックし、[鍵管理] を選択します。[暗号鍵] ページが表示されたら、Cloud KMS プロジェクトを選択します。

    [暗号鍵] ページに移動

  2. このガイドの前のセクションで作成したキーリングの名前をクリックして [キーリングの詳細] ページに移動します。

  3. このガイドの前のセクションで作成した鍵のチェックボックスをオンにします。鍵の名前が付いた情報パネルがまだ開いていない場合は、[情報パネルを表示] をクリックします。

  4. 情報パネルで、[メンバーを追加] をクリックして、[KEY_NAME」にメンバーを追加します] ダイアログを開きます。このダイアログで、次の操作を行います。

    1. [新しいメンバー] ボックスに、前のセクションでメモしたサービス アカウントのメールアドレス(service-AI_PLATFORM_PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com)を入力します。
    2. [ロールを選択] プルダウン リストで [Cloud KMS] をクリックし、続いて [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 でサポートされているリソースを作成する場合、作成パラメータの 1 つとして鍵を指定できます。

Console

Google Cloud Console の 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 パラメータで鍵リソースを指すように設定します。詳細については、Node.js 用 Vertex AI クライアント ライブラリのドキュメントをご覧ください。

Python

サポートされているリソースを作成する場合は、encryption_spec パラメータで鍵リソースを指すように設定します。詳しくは、Cloud AI Platform 用 Python クライアントのドキュメントをご覧ください。

次のステップ