チームのプロジェクトを設定する

このページでは、Vertex AI を扱うチーム向けにプロジェクトを設定する方法の例を示します。このページでは、IAM を使用した Vertex AI のアクセス制御アクセス管理に関連するコンセプトで説明されているポリシー、ロール、権限、プリンシパルなどの Identity and Access Management(IAM)のコンセプトにすでに精通されていることを前提としています。

これらの例は、一般的な使用を目的としています。チーム固有のニーズを考慮し、それに応じてプロジェクトの設定を調整してください。

概要

Vertex AI は、IAM を使用してリソースへのアクセスを管理します。リソースのアクセス制御を計画する際は、次の点を考慮してください。

  • プロジェクト レベルまたはリソースレベルでアクセスを管理できます。 プロジェクト レベルのアクセスは、そのプロジェクト内のすべてのリソースに適用されます。特定のリソースへのアクセスは、そのリソースにのみ適用されます。

  • アクセス権を付与するには、プリンシパルに IAM ロールを割り当てます。事前定義ロールを使用すると、アクセスの設定が容易になりますが、カスタムロールを使用することをおすすめします。カスタムロールは作成できるため、必要な権限のみにアクセスを制限できます。

アクセス制御の詳細については、IAM を使用した Vertex AI のアクセス制御をご覧ください。

データと Vertex AI リソースへの共有アクセス権を持つ単一プロジェクト

この例では、データと Vertex AI リソースを含む単一のプロジェクトをチームで共有しています。

チームのデータ、コンテナ、その他の Vertex AI リソースがプロジェクトのすべてのユーザーで共有される場合は、このようにプロジェクトを設定できます。

プロジェクトの IAM 許可ポリシーは次のようになります。

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:USER1_EMAIL_ADDRESS",
        "user:USER2_EMAIL_ADDRESS"
      ]
    },
    {
      "role": "roles/storage.admin",
      "members": [
        "user:USER1_EMAIL_ADDRESS",
        "user:USER2_EMAIL_ADDRESS"
      ]
    },
    {
      "role": "roles/aiplatform.serviceAgent",
      "members": [
        "user:service-PROJECT_NUMBER@gcp-sa-aiplatform-cc.iam.gserviceaccount.com"
      ]
    }
  ]
}

このようにプロジェクトを設定すると、チームが協力してモデルのトレーニング、コードのデバッグ、モデルのデプロイ、エンドポイントのモニタリングを簡単に行うことができます。すべてのユーザーに同じリソースが表示され、同じデータでトレーニングできます。Vertex AI リソースは単一のプロジェクト内で動作するため、プロジェクト外のリソースへのアクセス権を付与する必要はありません。割り当てはチーム全体で共有されます。

チームのプロジェクトのアクセス制御を設定するには、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

データと Vertex AI リソースを分離する

この例では、チームのデータは Vertex AI リソースとは分離したプロジェクトにあります。

次のような場合は、この方法でプロジェクトを設定できます。

  • チームのデータは、Vertex AI リソースと同じプロジェクトに移行するのが困難。

  • チームのデータにアクセスできるユーザーを詳細に制御する必要がある。

このような場合は、データ用と Vertex AI リソース用のプロジェクトを作成することをおすすめします。チームのデベロッパーは、Vertex AI リソースを含むプロジェクトを共有します。Vertex AI リソースを使用して、他のプロジェクトに保存されているデータにアクセスして処理します。データ管理者は、サービス エージェントまたはカスタム サービス アカウントを介して Vertex AI リソースへのアクセス権を付与します。

たとえば、デフォルトの Vertex AI サービス エージェントに、次のような許可ポリシーを使用して Cloud Storage バケットへのアクセス権を付与できます。

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/storage.objectViewer",
      "members": [
        "user:service-PROJECT_NUMBER@gcp-sa-aiplatform-cc.iam.gserviceaccount.com",
        "user:service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com"
      ]
    }
  ]
}

可能であれば、Vertex AI リソースを作成するときにリソース ID として使用するサービス アカウントを指定し、そのサービス アカウントを使用してアクセス制御を管理します。これにより、特定のリソースにデータへのアクセス権を付与し、権限を長期にわたって管理することが容易になります。

たとえば、次のようなポリシーを使用して、サービス アカウントに BigQuery へのアクセス権を付与できます。

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/bigquery.user",
      "members": [
        "user:SERVICE_ACCOUNT_NAME@PROJECT_NUMBER.iam.gserviceaccount.com"
      ]
    }
  ]
}

サービス アカウントのアクセス制御を設定するには、サービス アカウントに対するアクセス権の管理をご覧ください。

Vertex AI リソースを含むプロジェクトで、管理者は指定したサービス アカウントにサービス アカウント ユーザーロール(roles/iam.serviceAccountUser)を付与することで、ユーザーにデータへのアクセス権を付与できます。

信頼性の低いコードを別のプロジェクトに分離する

モデル、予測コンテナ、トレーニング コンテナはコードです。信頼度の低いコードを機密性の高いモデルやデータから分離することが重要です。エンドポイントとトレーニング ステージを独自のプロジェクトにデプロイし、権限が非常に制限された専用のサービス アカウントを使用します。そして、VPC Service Controls を使用して分離し、このようなコンテナとモデルに付与されたアクセス権の影響を軽減します。

次のステップ