カスタム サービス アカウントを使用したトレーニング

AI Platform Training は、トレーニング アプリケーションを実行するときに任意のサービス アカウントを使用するように構成できます。カスタム サービス アカウントを使用すると、AI Platform Training でデフォルトで使用するサービス アカウントに過剰な権限を付与しなくても、トレーニング コードでアクセスできる Google Cloud リソースをカスタマイズできます。さらに、カスタム サービス アカウントを使用して、追加の Google Cloud サービス(Secret Manager など)へのアクセス権をコードに付与できます。

Google が管理するサービス アカウントについて

デフォルトでは、AI Platform Training では Google が管理するサービス アカウントを使用してトレーニング ジョブを実行します。このサービス アカウントは、次の形式のメールアドレスにより識別されます。

service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

PROJECT_NUMBER は、Google Cloud プロジェクトのプロジェクト番号に置き換えられます。

Google Cloud Console または gcloud コマンドライン ツールを使用して、AI Platform プロジェクトに対応するサービス アカウントを見つけます。

Cloud Console

Cloud Console の [IAM] ページに移動し、このセクションで前述したメールアドレス形式と一致するメンバーを見つけます。このサービス アカウントは、Google Cloud ML Engine Service Agent という名前でもあります。

[IAM] ページに移動

gcloud

gcloud ツールを初期化したシェル環境で次のコマンドを実行します。

gcloud projects get-iam-policy PROJECT_ID \
  --flatten="bindings[].members" \
  --format="table(bindings.members)" \
  --filter="bindings.role:roles/ml.serviceAgent" \
  | grep serviceAccount:

PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

このコマンドは、次を出力します。

serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT

GOOGLE_MANAGED_SERVICE_ACCOUNT は、プロジェクトの AI Platform Training の Google が管理するサービス アカウントのメールアドレスです。

この Google が管理するサービス アカウントには、ほとんどのトレーニング ジョブの実行に適した権限があります。たとえば、同じ Google Cloud プロジェクト内の Cloud Storage バケットに対して読み書きが可能です。

トレーニング アプリケーションを追加の権限で実行する必要がある場合は、このサービス アカウントに Identity and Access Management の追加のロールを割り当てることが可能です。たとえば、他の Google Cloud プロジェクトの Cloud Storage バケットに対するアクセス権を付与できます。

カスタム サービス アカウントの使用

特定のトレーニング ジョブに対する Google Cloud の権限を付与または制限する場合は、Google が管理するサービス アカウントの代わりにカスタム サービス アカウントを使用して、トレーニング アプリケーションを実行します。

これを行うには、まずカスタム サービス アカウントを設定します。次に、トレーニング ジョブを作成するときにカスタム サービス アカウントを指定します。

カスタム サービス アカウントを設定する

トレーニング ジョブの実行に使用できるカスタム サービス アカウントを設定するには、次の操作を行います。

  1. ユーザーが管理するサービス アカウントを作成します。

  2. 新しいサービス アカウントに IAM ロールを付与することで、実行するために必要な権限をトレーニング アプリケーションに付与します。

  3. プロジェクトの AI Platform Training の Google が管理するサービス アカウントに、新しいカスタム サービス アカウントに対する roles/iam.serviceAccountAdmin ロールを付与します。これを行うには、gcloud ツールを使用して次のコマンドを実行します。

    gcloud iam service-accounts add-iam-policy-binding \
      --role=roles/iam.serviceAccountAdmin \
      --member=serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT \
      CUSTOM_SERVICE_ACCOUNT
    

    このコマンドで、プレースホルダは次のように置き換えます。

トレーニング ジョブ用のカスタム サービス アカウントを指定する

トレーニング アプリケーションを実行するときにカスタム サービス アカウントを使用するように AI Platform Training を構成するには、トレーニング ジョブの作成時に trainingInput.serviceAccount フィールドを指定します。

gcloud ツールを使用してトレーニング ジョブを作成する場合は、config.yaml ファイルを使用してこのフィールドを指定する必要があります。例:

trainingInput:
  serviceAccount: CUSTOM_SERVICE_ACCOUNT

CUSTOM_SERVICE_ACCOUNT は、このガイドの前のセクションで設定したユーザーが管理するサービス アカウントのメールアドレスに置き換えます。

次のステップ