Google Cloud では、デフォルトで、Google が管理する暗号鍵を使用して、自動的に保存されているデータを暗号化します。データを保護する鍵に関連する具体的なコンプライアンス要件や規制要件がある場合は、顧客管理の暗号鍵(CMEK)をトレーニング ジョブに使用できます。
AI Platform Training で CMEK を使用する具体的なメリットについては、このガイドの以降のセクションをご覧ください。CMEK 全般についての詳細は、Cloud Key Management Service のドキュメントをご覧ください。
このガイドでは、CMEK を AI Platform Training に使用するメリットと CMEK を使用するためのトレーニング ジョブの構成方法について説明します。
AI Platform Training の CMEK について
このセクションでは、トレーニング ジョブ用に CMEK を構成する前に理解する必要がある AI Platform Training の基本事項について説明します。
CMEK のメリット
一般に、CMEK は、データの暗号化に使用する鍵を完全に制御する必要がある場合によく利用されます。CMEK を使用すると、Cloud KMS 内で鍵を管理できます。たとえば、Cloud KMS API を使用して、鍵のローテーションや無効化を行うことが可能です。CMEK の一般的な用途や使用する理由などの詳細については、Cloud KMS のドキュメントをご覧ください。
トレーニング ジョブを実行すると、AI Platform Training によって管理される 1 つ以上の仮想マシン(VM)インスタンスでコードが実行されます。AI Platform Training で CMEK を有効にすると、Google が管理する鍵ではなく、指定した鍵が VM のブートディスクのデータの暗号化に使用されます。CMEK 鍵により、次の種類のデータが暗号化されます。
- VM 上のトレーニング コードのコピー。
- トレーニング コードによって読み込まれるデータ。
- トレーニング コードによってローカル ディスクに保存されるすべての一時データ。
CMEK 鍵は、ジョブの名前やリージョンなど、トレーニング ジョブに関連付けられているメタデータは暗号化しません。トレーニング ジョブに関連付けられたメタデータは、常に Google のデフォルトの暗号化メカニズムを使用して暗号化されます。
他の Google Cloud プロダクトで CMEK を使用する
CMEK を AI Platform Training 用に構成しても、AI Platform Training と一緒に使用する他の Google Cloud プロダクト用の CMEK は自動的には構成されません。他の Google Cloud プロダクトで CMEK を使用してデータを暗号化するには、別途構成が必要になります。例:
Cloud Storage: 非カスタム コンテナのジョブを実行すると、AI Platform Training はトレーニング アプリケーションを Cloud Storage バケットから読み込みます。さらに、ほとんどのトレーニング ジョブでは、その出力の一部として、トレーニング済みモデルのアーティファクト(TensorFlow SaveModel ディレクトリなど)が Cloud Storage バケットにエクスポートされます。
Cloud Storage のデータを CMEK で暗号化するには、顧客管理の暗号鍵の使用に関する Cloud Storage ガイドをご覧ください。暗号鍵は、AI Platform Training で使用する Cloud Storage バケットのデフォルト鍵として設定することや、特定のオブジェクトの暗号化に使用できます。
Cloud Storage での CMEK の使用方法の詳細については、こちらをご覧ください。
Container Registry: カスタム コンテナのジョブを実行すると、AI Platform Training により Container Registry からコンテナ イメージが読み込まれます。
コンテナ イメージが CMEK で暗号化されるようにするには、顧客管理の暗号鍵の使用に関する Container Registry ガイドをご覧ください。
Cloud Logging: トレーニング ジョブを実行すると、AI Platform Training はログを Logging に保存します。このログは CMEK で暗号化されません。ただし、ログルーターを使用する場合は、ログルーターが作成する特定の一時ファイルに対して CMEK を構成できます。
制限事項
次のような場合は、AI Platform Training で CMEK を使用できません。
- TPU を使用するトレーニング ジョブでは CMEK を使用できません。
- 2017 年以前に AI Platform Training と Prediction API の使用を開始した場合、CMEK でトレーニング ジョブを送信すると、互換性のない以前の認証メカニズムを示すエラーが発生することがあります。この場合は、新しい Google Cloud プロジェクトを作成するか、別のプロジェクトを選択して AI Platform Training ジョブを実行します。
トレーニング ジョブ用に CMEK を構成する
以降のセクションでは、Cloud Key Management Service でキーリングと鍵を作成し、鍵に対する AI Platform Training の暗号化と復号の権限を付与して、CMEK を使用するトレーニング ジョブを作成します。
始める前に
このガイドでは、トレーニング用の CMEK を構成するため、2 つの独立した Google Cloud プロジェクトを使用することを前提としています。
- 暗号鍵を管理するためのプロジェクト(「Cloud KMS プロジェクト」)。
- AI Platform Training へのアクセス、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 AI Platform Training & Prediction 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 AI Platform Training & Prediction API.
Google Cloud CLI の設定
このガイドの一部の手順では gcloud CLI は必須となり、それ以外の手順ではオプションの手段になります。Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
キーリングと鍵の作成
対称鍵の作成に関する Cloud KMS ガイドに従って、キーリングと鍵を作成します。キーリングを作成する際、AI Platform Training をサポートするリージョンをキーリングのロケーションとして指定します。AI Platform Training では、トレーニング ジョブと鍵が同じリージョンを使用する場合にのみ CMEK がサポートされます。デュアル リージョン、マルチ リージョン、グローバル ロケーションをキーリングに指定することはできません。
キーリングと鍵は Cloud KMS プロジェクトで作成します。
AI Platform Training 権限の付与
トレーニング ジョブに CMEK を使用するには、鍵を使用してデータの暗号化や復号を行う権限を AI Platform Training に付与する必要があります。AI Platform Training では、サービス エージェントを使用してトレーニング ジョブを実行します。このサービス エージェントは、次の形式のメールアドレスにより識別されます。
service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com
AI Platform プロジェクトに適切なサービス エージェントを見つけるには、Google Cloud コンソールの [IAM] ページに移動します。AI_PLATFORM_PROJECT_NUMBER 変数を置き換えて、AI Platform プロジェクトのプロジェクト番号を使用してこのメールアドレス形式と一致するメンバーを見つます。このサービス エージェントは、Google Cloud ML Engine Service Agent
という名前でもあります。
このサービス エージェントのメールアドレスをメモします。これを以降の手順で使用し、鍵を使用したデータの暗号化と復号を行う権限を付与します。権限を付与するには、Google Cloud コンソールまたは Google Cloud CLI を使用します。
Google Cloud コンソール
Google Cloud コンソールで [暗号鍵] ページに移動し、Cloud KMS プロジェクトを選択します。
このガイドの前のセクションで作成したキーリングの名前をクリックして [キーリングの詳細] ページに移動します。
このガイドの前のセクションで作成した鍵のチェックボックスをオンにします。鍵の名前が付いた情報パネルがまだ開いていない場合は、[情報パネルを表示] をクリックします。
情報パネルで、[
メンバーを追加] をクリックして、[「KEY_NAME」にメンバーを追加します] ダイアログを開きます。このダイアログで、次の操作を行います。- [新しいメンバー] ボックスに、前のセクションでメモしたサービス アカウントのメールアドレス(
service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.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@cloud-ml.google.com.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 プロジェクトのプロジェクト番号。
CMEK を使用したトレーニング ジョブの作成
これまでのセクションで、AI Platform Training に CMEK 鍵を使用してデータを暗号化および復号する権限を付与しました。次は、この鍵を使用して一時データを暗号化するトレーニング ジョブを作成します。トレーニング ジョブを作成する際は、ジョブの trainingInput
フィールドに encryptionConfig
フィールドを指定します。
次の例では、gcloud CLI を使用してこの処理を行います。現在、Google Cloud コンソールでは CMEK を使用したトレーニング ジョブを作成できません。
この例では、trainer
という名前のディレクトリに、task
というモジュール名で、トレーニング アプリケーションが置かれていると想定しています。
次の内容を含む
config.yaml
構成ファイルを作成します。trainingInput: encryptionConfig: kmsKeyName: projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
構成ファイルの、各プレースホルダは次のように置き換えます。
- KMS_PROJECT_ID: Cloud KMS プロジェクトの ID。
- KEY_RING_NAME: キーリングの名前。
- KEY_NAME: キーの名前。
トレーニング ジョブを作成するには、次のコマンドを実行します。
gcloud ai-platform jobs submit training JOB_ID \ --config=config.yaml \ --job-dir=JOB_DIR \ --module-name=trainer.task \ --package-path=trainer \ --python-version=3.7 \ --region=REGION \ --runtime-version=2.11 \ --scale-tier=basic
このコマンドで、プレースホルダは次のように置き換えます。
- JOB_ID: ジョブに付ける名前。
JOB_DIR: トレーニング アプリケーションがアップロードされる Cloud Storage ディレクトリへのパス。出力の保存など、トレーニング中でも、トレーニング ジョブによるこのディレクトリの使用が可能です。便宜上、AI Platform プロジェクトの Cloud Storage バケット内のディレクトリを選択します。
REGION: キーリングを作成したリージョンと、トレーニング ジョブを作成する予定のリージョン。
正常な場合は、次の出力が表示されます。
Job [JOB_ID] submitted successfully. Your job is still active. You may view the status of your job with the command $ gcloud ai-platform jobs describe JOB_ID or continue streaming the logs with the command $ gcloud ai-platform jobs stream-logs JOB_ID jobId: JOB_ID state: QUEUED
以上でトレーニング ジョブをモニタリングできるようになりました。
region
や encryptionConfig
フィールド以外にも、ニーズに合わせてトレーニング ジョブの構成をカスタマイズできます。トレーニングにカスタム コンテナを使用することも可能です。
次のステップ
- Google Cloud の CMEK についてさらに理解を深める。
- 他の Google Cloud プロダクトで CMEK を使用する方法を確認する。
- CMEK 以外の選択肢を構成する方法については、トレーニング ジョブの実行に関するガイドをご覧ください。