カスタムコードを実行して予測に対応する際、選択したサービス アカウントを使用するように、AI Platform Prediction を構成できます。具体的には、次のいずれかを行う際に、カスタム サービス アカウントを指定できます。
- カスタム コンテナを使用するモデル バージョンを作成する。
- カスタム予測ルーチンを使用するモデル バージョンを作成する。
カスタム サービス アカウントを使用すると、AI Platform Prediction によってデフォルトで使用されるサービス アカウントに対して過剰に広範な権限を付与せずに、カスタム サービス コードでアクセスできる Google Cloud リソースをカスタマイズできます。
このガイドでは、他の Google Cloud リソースにアクセスするために AI Platform Prediction リソースに必要な権限を中心に説明します。AI Platform Prediction リソース自体にアクセスするために必要な権限については、アクセス制御をご覧ください。
サービス エージェントについて
デフォルトでは、AI Platform Prediction はサービス エージェントを使用して、カスタム コンテナを使用しないモデル バージョンからオンライン予測を提供します。このサービス エージェントは、次の形式のメールアドレスにより識別されます。
service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com
PROJECT_NUMBER は、Google Cloud プロジェクトのプロジェクト番号で置き換えます。
Google Cloud コンソールまたは Google Cloud CLI を使用して、プロジェクトに対応するサービス アカウントを見つけます。
Google Cloud コンソール
Google Cloud コンソールの [IAM] ページに移動し、[IAM] を選択して、このセクションで前述したメールアドレス形式に一致するプリンシパルを見つけます。このサービス アカウントは、Google Cloud ML Engine Service Agent
という名前でもあります。
gcloud
gcloud CLI を初期化したシェル環境で次のコマンドを実行します。
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 にあるサービス エージェントのメールアドレスです。
このサービス エージェントには、ほとんどのモデル バージョンに適した権限があります。たとえば、同じ Google Cloud プロジェクト内の Cloud Storage バケットからの読み取りなどが可能です。
カスタム権限ルーチンの実行に追加の権限が必要な場合は、このサービス アカウントに Identity and Access Management(IAM)のロールを割り当てることができます。たとえば、他の Google Cloud プロジェクトの Cloud Storage バケットに対するアクセス権を付与できます。
カスタム コンテナで使用されるデフォルトのサービス アカウント
モデル バージョンがカスタム コンテナを使用している場合、デフォルトでは、AI Platform サービス エージェントを使用してコンテナが実行されることはありません。代わりに、AI Platform Prediction が管理するサービス アカウントを使用して実行されます。このサービス アカウントには、AIP_STORAGE_URI
環境変数に保存された URI で AI Platform Prediction が使用できるモデル アーティファクトの読み取り権限があります。
カスタム コンテナ内でデフォルトで使用される、このサービス アカウントの権限は、カスタマイズできません。カスタム コンテナで使用可能な権限をカスタマイズする場合は、以下のセクションをお読みになり、モデル バージョンと一緒にカスタム サービス アカウントを使用してください。
カスタム サービス アカウントの使用
特定のモデル バージョンに対して Google Cloud 権限を付与または制限する場合は、サービス エージェントの代わりにカスタム サービス アカウントを使用します。
これを行うには、まずカスタム サービス アカウントを設定します。次に、モデル バージョンの作成時にカスタム サービス アカウントを指定します。
カスタム サービス アカウントを設定する
カスタム サービス アカウントを設定する方法は、次のとおりです。
実行する際に必要な権限を予測サービスのコードに付与するために、新しいサービス アカウントに IAM ロールを付与します。
ユーザー管理のサービス アカウントがモデル バージョンとは異なるプロジェクトにある場合、モデル バージョンに接続できるように、ユーザー管理サービス アカウントを構成します。
プロジェクトの AI Platform のサービス エージェントに、新しいカスタム サービス アカウントのサービス アカウント管理者ロール(
roles/iam.serviceAccountAdmin
)を付与します。この操作を行うには、gcloud CLI を使用して次のコマンドを実行します。gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.serviceAccountAdmin \ --member=serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT \ CUSTOM_SERVICE_ACCOUNT
このコマンドで、プレースホルダを次のように置き換えます。
GOOGLE_MANAGED_SERVICE_ACCOUNT: プロジェクトの
Google Cloud ML Engine Service Agent
のメールアドレス。このメールアドレスを探す方法については、このガイドの前のセクションをご覧ください。CUSTOM_SERVICE_ACCOUNT: このセクションの前のステップで作成した新しいユーザーが管理するサービス アカウントのメールアドレス。
モデル バージョンのカスタム サービス アカウントを指定する
予測サービスのコードにカスタム サービス アカウントへのアクセス権を与えるには、モデル バージョンの作成時に serviceAccount
フィールドを指定します。そのモデル バージョンを取り消すには、カスタム コンテナかカスタム予測ルーチンのいずれかを使用する必要があります。
gcloud CLI を使用してモデル バージョンを作成する場合は、gcloud beta
コンポーネントで --service-account
フラグを使用できます。次に例を示します。
gcloud beta ai-platform versions create VERSION \
--service-account CUSTOM_SERVICE_ACCOUNT \
...
次のように置き換えます。
- VERSION: モデル バージョンの名前。
- CUSTOM_SERVICE_ACCOUNT: このガイドの前のセクションで設定したユーザー管理のサービス アカウントのメールアドレス。
- ...: モデル バージョンの追加オプション。
次のステップ
カスタム コンテナを使用するモデル バージョンを作成する方法を確認する。
カスタム予測ルーチンを使用するモデル バージョンを作成する方法を学習する。
サービス アカウントについて、さらに学習する。