このページでは、Identity and Access Management(IAM)を使用して Vertex AI リソースへのアクセスを管理する方法について説明します。Vertex AI Workbench インスタンスへのアクセスを管理するには、Vertex AI Workbench インスタンスのアクセス制御をご覧ください。
概要
Vertex AI は、IAM を使用してリソースへのアクセスを管理します。リソースのアクセス制御を計画する際は、次の点を考慮してください。
プロジェクト レベルまたはリソースレベルでアクセスを管理できます。 プロジェクト レベルのアクセスは、そのプロジェクト内のすべてのリソースに適用されます。特定のリソースへのアクセスは、そのリソースにのみ適用されます。プロジェクト レベルのアクセスとリソースレベルのアクセスをご覧ください。
アクセス権を付与するには、プリンシパルに IAM ロールを割り当てます。事前定義ロールを使用するとアクセスの設定が容易になりますが、カスタムロールを使用することをおすすめします。カスタムロールを作成することで、必要な権限のみにアクセスを制限できます。IAM ロールをご覧ください。
IAM ロール
Vertex AI で使用できる IAM ロールには次のような種類があります。
カスタムロールを使用すると、特定の権限セットを選択し、それらの権限を持つ独自のロールを作成して、組織内のユーザーに付与できます。
事前定義ロールを使用すると、Vertex AI のリソースに関連する一連の権限をプロジェクト レベルで付与できます。
基本ロール(オーナー、編集者、閲覧者)は、Vertex AI のリソースに対するアクセス制御をプロジェクト レベルで付与します。すべての Google Cloud サービスに共通のロールです。
Vertex AI のプロジェクトで、これらのロールを追加、更新または削除する方法については、アクセス権の付与、変更、取り消しに関するドキュメントをご覧ください。
カスタムロール
カスタムロールを使用すると、特定の権限セットを選択し、それらの権限を持つ独自のロールを作成して、組織内のユーザーに付与できます。詳細については、IAM カスタムロールについてをご覧ください。
カスタムロールを使用して最小権限の権限を付与する
事前定義ロールには、必要以上の権限が含まれていることがよくあります。カスタムロールを作成して、プリンシパルに必要な特定の権限のみを付与できます。
たとえば、aiplatform.endpoints.predict
権限を持つカスタムロールを作成し、エンドポイントのサービス アカウントにロールを割り当てることができます。これにより、サービス アカウントに予測用のエンドポイントを呼び出す権限が付与されますが、エンドポイントを制御する権限は付与されません。
Vertex AI の事前定義ロール
Role | Permissions |
---|---|
Vertex AI Administrator( Grants full access to all resources in Vertex AI |
|
Colab Enterprise Admin( Admin role of using colab enterprise. |
|
Colab Enterprise User( User role of using colab enterprise. |
|
Vertex AI Feature Store EntityType owner( Provides full access to all permissions for a particular entity type resource. Lowest-level resources where you can grant this role:
|
|
Vertex AI Platform Express Admin Beta( Grants admin access to Vertex AI Express |
|
Vertex AI Platform Express User Beta( Grants user access to Vertex AI Express |
|
Vertex AI Feature Store Admin( Grants full access to all resources in Vertex AI Feature Store Lowest-level resources where you can grant this role:
|
|
Vertex AI Feature Store Data Viewer( This role provides permissions to read Feature data. Lowest-level resources where you can grant this role:
|
|
Vertex AI Feature Store Data Writer( This role provides permissions to read and write Feature data. Lowest-level resources where you can grant this role:
|
|
Vertex AI Feature Store Instance Creator( Administrator of Featurestore resources, but not the child resources under Featurestores. Lowest-level resources where you can grant this role:
|
|
Vertex AI Feature Store Resource Viewer( Viewer of all resources in Vertex AI Feature Store but cannot make changes. Lowest-level resources where you can grant this role:
|
|
Vertex AI Feature Store User Beta( Deprecated. Use featurestoreAdmin instead. |
|
Vertex AI Migration Service User( Grants access to use migration service in Vertex AI |
|
Notebook Executor User Beta( Grants users full access to schedules and notebook execution jobs. |
|
Notebook Runtime Admin( Grants full access to all runtime templates and runtimes in Notebook Service. |
|
Notebook Runtime User( Grants users permissions to create runtime resources using a runtime template and manage the runtime resources they created. |
|
Vertex AI Tensorboard Web App User Beta( Grants access to the Vertex AI TensorBoard web app. |
|
Vertex AI User( Grants access to use all resource in Vertex AI |
|
Vertex AI Viewer( Grants access to view all resource in Vertex AI |
|
基本ロール
従来の Google Cloud 基本ロールは、すべての Google Cloud サービスで共通です。オーナー、編集者、閲覧者のロールがあります。
プロジェクト レベルのアクセスとリソースレベルのアクセス
プロジェクト レベルまたはリソースレベルでアクセスを管理できます。フォルダレベルまたは組織レベルでアクセスを管理できる場合もあります。
ほとんどの Vertex AI リソースでは、プロジェクト、フォルダ、組織でのみアクセスを制御できます。個々のリソースへのアクセスは、エンドポイントや featurestore などの特定のリソースタイプに対してのみ付与できます。
ユーザーは、アクセスできるすべてのリソースの管理を共有します。たとえば、ユーザーがモデルを登録すると、プロジェクト内の他のすべての承認済みユーザーがモデルへのアクセスやモデルの変更、削除をできるようになります。
プロジェクト レベルでリソースへのアクセス権を付与するには、プリンシパル(ユーザー、グループ、またはサービス アカウント)に 1 つ以上のロールを割り当てます。
リソースレベルでアクセス権を付与できる Vertex AI リソースの場合は、そのリソースに IAM ポリシーを設定します。このポリシーでは、どのプリンシパルをどのロールに割り当てるかを定義します。
リソースレベルでポリシーを設定しても、プロジェクト レベルのポリシーには影響しません。リソースは祖先からすべてのポリシーを継承します。この 2 つのレベルを使用して、権限をカスタマイズできます。たとえば、ユーザーにプロジェクト レベルで読み取り権限を付与し、プロジェクト内のすべてのリソースを読み取るようにした後、リソースごとに(リソースレベルで)書き込み権限を付与できます。
Vertex AI の事前定義ロールとリソースがすべてリソースレベルのポリシーをサポートしているわけではありません。どのリソースでどのロールを使用できるかを確認するには、事前定義ロールの表をご覧ください。
サポートされているリソース
Vertex AI は、Vertex AI Feature Store の featurestore リソースとエンティティ タイプのリソースをサポートしています。詳細については、Vertex AI Feature Store リソースへのアクセスを制御するをご覧ください。
リソースへのアクセス権の付与または取り消しを行った後、これらの変更が反映されるまでに時間がかかります。詳細については、アクセス権変更の伝播をご覧ください。
リソース、サービス アカウント、サービス エージェント
Vertex AI サービスは、トレーニング データを読み取るトレーニング ジョブの実行や、モデルの重みを読み取る ML モデルのサービングなど、アクションを行う長時間実行リソースを管理することがよくあります。このようなスタンドアロン リソースには、アクションを実行する際の独自のリソース ID があります。この ID は、リソースを作成したプリンシパルの ID とは異なります。リソース ID がアクセスできるデータや他のリソースの範囲は、リソースを作成したプリンシパルの権限ではなく、リソース ID に付与された権限によって定義されます。
デフォルトでは、Vertex AI リソースは、Vertex AI によって管理されるサービス アカウントをリソース ID として使用します。こうしたサービス アカウントは Vertex AI サービス エージェントと呼ばれ、リソースが作成されたプロジェクトに関連付けられます。特定の Vertex AI 権限を持つユーザーは、Vertex AI サービス エージェントを使用するリソースを作成できます。一部のサービスでは、リソースに関連付けるサービス アカウントを指定でき、リソースはそのサービス アカウントを使用して他のリソースとサービスにアクセスします。サービス アカウントの詳細については、サービス アカウントをご覧ください。
Vertex AI は、呼び出される API に応じて異なるサービス エージェントを使用します。各サービス エージェントには、関連付けられているプロジェクトに対する特定の IAM 権限があります。この権限は、リソース ID がアクションを実行するために使用されます。権限には、プロジェクト内のすべての Cloud Storage リソースと BigQuery データへの読み取り専用アクセスが含まれます。
サービス アカウント
サービス アカウントは、ユーザーではなく、アプリケーションや仮想マシン(VM)インスタンスで使用される特別なアカウントです。サービス アカウントを作成して権限を割り当てることで、リソースまたはアプリケーションに特定の権限を付与できます。
サービス アカウントを使用して、カスタム トレーニング コンテナの権限またはカスタム トレーニング モデルのオンライン予測を提供するコンテナの権限をカスタマイズする方法については、カスタム サービス アカウントを使用するをご覧ください。
サービス アカウントはメールアドレスで識別されます。
サービス エージェント
サービス エージェントは自動的に提供されます。これにより、サービスがユーザーに代わってリソースにアクセスできるようになります。
サービス エージェントが作成されると、サービス エージェントにプロジェクトの事前定義ロールが付与されます。次の表に、Vertex AI サービス エージェント、そのメールアドレス、それぞれのロールを示します。
名前 | 用途 | メールアドレス | ロール |
---|---|---|---|
Vertex AI サービス エージェント | Vertex AI の機能 | service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com |
roles/aiplatform.serviceAgent |
Vertex AI Custom Code サービス エージェント |
カスタム トレーニング コード Ray on Vertex AI アプリケーション コード |
service-PROJECT_NUMBER@gcp-sa-aiplatform-cc.iam.gserviceaccount.com |
roles/aiplatform.customCodeServiceAgent |
Vertex AI Extension サービス エージェント | Vertex の拡張機能 | service-PROJECT_NUMBER@gcp-sa-vertex-ex.iam.gserviceaccount.com |
roles/aiplatform.extensionServiceAgent |
Cloud AI Platform Notebooks サービス アカウント | Vertex AI Workbench の機能 | service-PROJECT_NUMBER@gcp-sa-notebooks.iam.gserviceaccount.com |
roles/notebooks.serviceAgent |
Vertex AI Custom Code サービス エージェントは、カスタム トレーニング コードでトレーニング済みのモデルをトレーニングした場合にのみ作成されます。
サービス エージェントのロールと権限
Vertex AI サービス エージェントに付与されている次のロールと権限をご覧ください。
ロール | 権限 |
---|---|
Vertex AI サービス エージェント( 動作に必要となる権限を Vertex AI に付与します。 |
|
Vertex AI Custom Code サービス エージェント( Vertex AI Custom Code に適切な権限を付与します。 |
|
AI Platform Notebooks サービス エージェント( ノートブックのサービス エージェントでユーザー プロジェクトのノートブック インスタンスを管理するためのアクセス権を付与します。 |
|
Vertex AI サービス エージェントに他のリソースへのアクセス権を付与する
場合によっては、Vertex AI サービス エージェントに追加のロールを付与する必要があります。たとえば、Vertex AI が別のプロジェクトの Cloud Storage バケットにアクセスする必要がある場合は、サービス エージェントに 1 つ以上の追加のロールを付与する必要があります。
BigQuery のロールの追加要件
次の表に、BigQuery で別のプロジェクトのテーブルまたはビュー、あるいは外部データソースを使用するテーブルやビューを使用する場合に、Vertex AI サービス エージェントに追加する必要があるロールについて説明します。
ホーム プロジェクトとは、Vertex AI のデータセットまたはモデルが配置されているプロジェクトを指します。外部プロジェクトは、別のプロジェクトを指します。
テーブルタイプ | テーブル プロジェクト | データソース プロジェクト | 追加が必要なロール |
---|---|---|---|
ネイティブの BigQuery テーブル | ホーム プロジェクト | なし | なし |
ネイティブの BigQuery テーブル | 別のプロジェクト | なし | BigQuery Data Viewer (別のプロジェクト)。詳細。 |
BigQuery ビュー | ホーム プロジェクト | なし | なし |
BigQuery ビュー | 別のプロジェクト | なし | BigQuery Data Viewer (別のプロジェクト)。詳細。 |
Bigtable でサポートされる外部 BigQuery データソース | ホーム プロジェクト | ホーム プロジェクト | ホーム プロジェクトの Bigtable Reader 。詳細 |
Bigtable でサポートされる外部 BigQuery データソース | ホーム プロジェクト | 別のプロジェクト | Bigtable Reader (別のプロジェクト)。詳細。 |
Bigtable でサポートされる外部 BigQuery データソース | 別のプロジェクト | 別のプロジェクト | 別のプロジェクトの BigQuery Reader と Bigtable Reader 。詳細。 |
Cloud Storage でサポートされる外部 BigQuery データソース | ホーム プロジェクト | ホーム プロジェクト | なし |
Cloud Storage でサポートされる外部 BigQuery データソース | ホーム プロジェクト | 別のプロジェクト | Storage Object Viewer (別のプロジェクト)。詳細。 |
Cloud Storage でサポートされる外部 BigQuery データソース | 別のプロジェクト | 別のプロジェクト | 別のプロジェクトの Storage Object Viewer と BigQuery Data Viewer 。詳細。 |
Google スプレッドシートでサポートされる外部 BigQuery データソース | ホーム プロジェクト | なし | スプレッドシート ファイルを Vertex AI のサービス アカウントと共有します。詳細 |
Google スプレッドシートでサポートされる外部 BigQuery データソース | 別のプロジェクト | なし | 別のプロジェクトの BigQuery Reader 。スプレッドシート ファイルを Vertex AI サービス アカウントと共有します。 |
Cloud Storage のロールの追加要件
別のプロジェクトの Cloud Storage バケットのデータにアクセスする場合は、そのプロジェクトの Vertex AI に Storage > Storage Object Viewer
ロールを付与する必要があります。詳細。
Cloud Storage バケットを使用してインポート オペレーションのためにローカル コンピュータからデータを受信し、バケットが Google Cloud プロジェクトとは異なるプロジェクトにある場合は、そのプロジェクトの Vertex AI に Storage > Storage Object Creator
ロールを付与する必要があります。詳細。
ホーム プロジェクトのリソースに Vertex AI へのアクセス権を付与する
ホーム プロジェクトの Vertex AI のサービス エージェントに追加のロールを付与するには:
ホーム プロジェクトの Google Cloud コンソールの IAM ページに移動します。
[Google 提供のロール付与を含みます] チェックボックスをオンにします。
権限を付与するサービス エージェントを選択し、 鉛筆アイコンをクリックします。
Principal:@gcp-sa-aiplatform-cc.iam.gserviceaccount.com でフィルタして、Vertex AI サービス エージェントを確認できます。
サービス アカウントに必要なロールを付与し、変更を保存します。
別のプロジェクトのリソースに Vertex AI へのアクセス権を付与する
別のプロジェクトのデータソースや宛先を使用する場合は、Vertex AI サービス アカウントにそのプロジェクトの権限を付与する必要があります。Vertex AI サービス アカウントは、最初の非同期ジョブ(エンドポイントの作成など)の開始後に作成されます。また、こちらの手順を行い、gcloud CLI を使用して Vertex AI サービス アカウントを明示的に作成することもできます。この gcloud コマンドは、デフォルトのサービス アカウントとカスタムコードのサービス アカウントの両方を作成しますが、レスポンスではデフォルトのサービス アカウントのみが返されます。
別のプロジェクトの Vertex AI に権限を追加するには:
Google Cloud コンソールで、ホーム プロジェクト(Vertex AI を使用しているプロジェクト)の [IAM] ページに移動します。
[Google 提供のロール付与を含みます] チェックボックスをオンにします。
権限を付与するサービス エージェントを決定し、そのメールアドレス([プリンシパル] の下にリストされている)をコピーします。
Principal:@gcp-sa-aiplatform-cc.iam.gserviceaccount.com でフィルタして、Vertex AI サービス エージェントを確認できます。
プロジェクトを、権限を付与する必要があるプロジェクトに変更します。
[追加] をクリックし、[新しいプリンシパル] にメールアドレスを入力します。
必要なロールをすべて追加し、[保存] をクリックします。
Google スプレッドシートへのアクセスを提供する
Google スプレッドシートでサポートされる BigQuery 外部データソースを使用する場合は、スプレッドシートを Vertex AI サービス アカウントと共有する必要があります。Vertex AI サービス アカウントは、最初の非同期ジョブ(エンドポイントの作成など)の開始後に作成されます。また、こちらの手順を行い、gcloud CLI を使用して Vertex AI サービス アカウントを明示的に作成することもできます。
Vertex AI にスプレッドシート ファイルへのアクセスを許可するには:
Google Cloud コンソールの IAM ページに移動します。
Vertex AI Service Agent
という名前のサービス アカウントを見つけて、そのメールアドレス([プリンシパル] の下にリストされている)をコピーします。スプレッドシート ファイルを開いてそのアドレスと共有します。
次のステップ
- IAM の詳細について学習する。
- 特定の IAM 権限とサポートされるオペレーションについて学習する。
- チーム用にプロジェクトを設定する際に推奨される方法について、チームのプロジェクトを設定するを参照する。
- Vertex AI の概要を確認する。