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 サポートもプレビュー ステータスです。
リソース | 暗号化されたマテリアル | ドキュメントのリンク |
---|---|---|
データセット |
|
|
モデル |
|
|
エンドポイント |
|
|
CustomJob |
|
|
HyperparameterTuningJob |
|
|
TrainingPipeline |
|
|
BatchPredictionJob(AutoML 画像 batchPrediction を除く) |
|
|
ModelDeploymentMonitoringJob |
|
|
PipelineJob |
|
|
MetadataStore |
|
|
TensorBoard |
|
|
Featurestore |
|
|
Index |
|
|
IndexEndpoint |
|
|
Colab Enterprise ランタイム |
|
生成 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 プロジェクトを設定する
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud KMS API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud KMS API.
AI Platform プロジェクトを設定する
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI 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
という名前でもあります。
このサービス アカウントのメールアドレスをメモします。これを以降の手順で使用し、鍵を使用したデータの暗号化と復号を行う権限を付与します。権限を付与するには、Google Cloud コンソールまたは Google Cloud CLI を使用します。
Google Cloud コンソール
Google Cloud コンソールで [セキュリティ] をクリックし、[鍵管理] を選択します。[暗号鍵] ページが表示されたら、Cloud KMS プロジェクトを選択します。
このガイドの前のセクションで作成したキーリングの名前をクリックして [キーリングの詳細] ページに移動します。
このガイドの前のセクションで作成した鍵のチェックボックスをオンにします。鍵の名前が付いた情報パネルがまだ開いていない場合は、[情報パネルを表示] をクリックします。
情報パネルで、[
メンバーを追加] をクリックして、[「KEY_NAME」にメンバーを追加します] ダイアログを開きます。このダイアログで、次の操作を行います。- [新しいメンバー] ボックスに、前のセクションでメモしたサービス アカウントのメールアドレス(
service-AI_PLATFORM_PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
)を入力します。 [ロールを選択] プルダウン リストで [Cloud KMS] をクリックし、続いて [Cloud KMS 暗号鍵の暗号化 / 復号] ロールを選択します。
[保存] をクリックします。
- [新しいメンバー] ボックスに、前のセクションでメモしたサービス アカウントのメールアドレス(
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 クライアントのドキュメントをご覧ください。
次のステップ
- Google Cloud の CMEK についてさらに理解を深める。
- 他の Google Cloud プロダクトで CMEK を使用する方法を確認する。