顧客管理の暗号鍵(CMEK)

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

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

このガイドでは、CMEK を Vertex AI リソースに使用するメリットと 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 を使用してデータを暗号化するには、別途構成が必要になります。次に例を示します。

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

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

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

生成 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. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Cloud KMS API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. Cloud KMS API を有効にします。

    API を有効にする

AI Platform プロジェクトを設定する

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Vertex AI API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. Vertex AI API を有効にします。

    API を有効にする

Google Cloud CLI を設定する

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

Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

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 クライアントのドキュメントをご覧ください。

次のステップ