Vertex AI で VPC Service Controls を使用する

VPC Service Controls を使用することで、Vertex AI からのデータ漏洩のリスクを軽減できます。VPC Service Controls を使用して、指定したリソースとデータを保護するサービス境界を作成します。たとえば、VPC Service Controls を使用して Vertex AI を保護する場合、次のアーティファクトはサービス境界を離れることはできません。

  • AutoML モデルまたはカスタムモデルのトレーニング データ
  • 作成したモデル
  • Neural Architecture Search を使用して検索したモデル
  • オンライン予測のリクエスト
  • バッチ予測リクエストの結果
  • Gemini モデル

Google API へのアクセスの制御

オンプレミスとマルチクラウドから Vertex AI にアクセスするで説明されているように、Vertex AI API には、パブリック インターネット、Google API 用の Private Service Connect、限定公開の Google アクセスなど、さまざまなアクセス オプションが含まれています。

公開アクセス

デフォルトでは、これらの公開 API はインターネットからアクセスできますが、使用するには IAM 権限が必要です。Private Service Connect や限定公開の Google アクセスなどの機能は、ハイブリッド ネットワーク アーキテクチャを介したプライベート通信を容易にしますが、Vertex AI API への一般公開インターネット アクセスを排除するものではありません。

API アクセスをきめ細かく制御し、一般公開されているインターネットへの露出を明示的に制限するには、VPC Service Controls の実装が不可欠です。このセキュリティ レイヤにより、管理者はアクセス ポリシーを定義して適用し、組織の要件を満たすように Google API へのパブリック接続または限定公開接続を個別に有効にできます。

プライベート アクセス

パブリック Google API を限定公開のアクセスに制限する必要がある組織は、VPC Service Controls を Private Service Connect Google API(VPC Service Controls バンドル)または限定公開の Google アクセスと組み合わせて使用できます。ハイブリッド ネットワーキングと Google Cloud 内にデプロイする場合、どちらのオプションでも、オンプレミスから Google API への限定公開アクセスが有効になります。ただし、Private Service Connect では、カスタム IP アドレスと DNS エンドポイント名を柔軟に定義することもできます。

ベスト プラクティスとして、Private Service Connect Google API または限定公開の Google アクセスで制限付き仮想 IP(VIP)を使用すると、Google Cloud サービスへのリクエストにプライベート ネットワーク ルートが提供されます。リクエストがインターネットに公開されることはありません。制限付き VIP は、オンプレミス ネットワークと VPC ネットワークを考慮する必要がある、VPC Service Controls で保護できるすべての API をサポートしています。いくつかの例を次に示します。

プライベート サービス アクセスによる API アクセスの制御

プライベート サービス アクセスでデプロイされた次の Vertex AI API は、VPC Service Controls で保護された環境に実装する場合に、追加のネットワーキング構成が必要です。

  • ベクトル検索(インデックス クエリ)
  • カスタム トレーニング(データプレーン)
  • Vertex AI Pipelines
  • プライベート オンライン予測エンドポイント

たとえば、Vertex AI Pipelines は Google マネージド(プロデューサー)サービスで、単一テナント プロジェクトと VPC ネットワークにデプロイされ、コンシューマの要件に基づいてサポートされているサービスをスケーリングできます。プロデューサー ネットワークとコンシューマ ネットワーク間の通信は、プロデューサー ネットワークを経由するインターネット下り(外向き)を除き、VPC ネットワーク ピアリングで確立されます。

プロデューサー ネットワークには、Google API への無制限のアクセスに加えて、インターネット下り(外向き)を許可するデフォルト ルートがあります。制限付き VIP をサポートするようにプロデューサー ネットワークを更新するには、ピアリング用の VPC Service Controls を有効にする必要があります。これにより、サービス ネットワーキング プロデューサー ネットワークにデプロイされたすべてのサポートされているサービスに対して次のアクションが実行されます。

  • IPv4 デフォルト ルート(宛先 0.0.0.0/0、ネクストホップ デフォルト インターネット ゲートウェイ)を削除します。
  • Cloud DNS マネージド限定公開ゾーンを作成し、サービス プロデューサー VPC ネットワークに対してこれらのゾーンを承認します。ゾーンには、googleapis.compkg.devgcr.io など、VPC Service Controls と互換性のある Google API とサービスに必要なドメインまたはホスト名が含まれます。
  • ゾーン内のレコードデータは、すべてのホスト名を 199.36.153.4199.36.153.5199.36.153.6199.36.153.7 に解決します。

既存の Google マネージド サービスに影響を与えることなくプロデューサー ネットワークからデフォルト ルートを削除する別の方法として、Cloud Interconnect を介した HA VPN を使用する方法があります。手順は次のとおりです。

  1. HA VPN に加えて、サービス VPC ネットワークをコンシューマ VPC ネットワークにデプロイします。
  2. Google マネージド サービスをサービス VPC ネットワークにデプロイします。
  3. ピアリングの VPC Service Controls を有効にします。
  4. マネージド サービスにオンプレミスへの到達性が必要な場合は、Cloud Router から限定公開サービス アクセス サブネットをカスタム ルート アドバタイズとしてアドバタイズします。
  5. カスタムルートをエクスポート オプションを使用して、Service Networking VPC ネットワーク ピアリングを更新します。

サービス境界の作成

サービス境界の作成の概要については、VPC Service Controls のドキュメントでサービス境界の作成をご覧ください。

境界への制限付きサービスの追加

サービス境界を確立する際は、セキュリティのベスト プラクティスとして、制限付きのすべてのサービスを含めることをおすすめします。この包括的なアプローチにより、潜在的な脆弱性と不正アクセスを最小限に抑えることができます。ただし、組織に Vertex AI とその相互接続された API の保護に重点を置いた特定の要件がある場合があります。このような場合は、オペレーションに不可欠な特定の Vertex AI API のみを選択して含めることができます。

サービス境界に組み込むことができる Vertex AI API には、次のようなものがあります。

  • Vertex AI API は、次のサービスと機能をサポートしています。
    • バッチ予測
    • データセット
    • Vertex AI Feature Store(Bigtable オンライン サービング)
    • Vertex AI Feature Store(最適化されたオンライン サービング)
    • Vertex AI の生成 AI(Gemini)
    • Vertex AI Model Registry
    • オンライン予測
    • ベクトル検索(インデックスの作成)
    • ベクトル検索(インデックス クエリ)
    • カスタム トレーニング(コントロール プレーン)
    • カスタム トレーニング(データプレーン)
    • Vertex AI Pipelines
    • プライベート オンライン予測エンドポイント
    • Colab Enterprise
  • Notebooks API は、次のサービスをサポートしています。
    • Vertex AI Workbench

生成 AI チューニング パイプラインに対する VPC Service Controls のサポート

VPC Service Controls は、次のモデルのチューニング パイプラインでサポートされています。

  • text-bison for PaLM 2
  • BERT
  • T5
  • textembedding-gecko ファミリーのモデル。

Vertex AI Pipelines での VPC Service Controls の使用

サービス境界は、Vertex AI からインターネット上のサードパーティの API やサービスへのアクセスをブロックします。Vertex AI Pipelines で使用するために Google Cloud パイプライン コンポーネントを使用している場合、または独自のカスタム パイプライン コンポーネントを作成している場合パブリック Python パッケージ インデックス(PyPI)レジストリから PyPI 依存関係をインストールすることはできません。代わりに、次のいずれかを行う必要があります。

カスタム コンテナを使用する

本番環境ソフトウェアのベスト プラクティスとして、コンポーネント作成者はコンテナ化された Python コンポーネントを使用し、依存関係をコンテナ イメージにビルドする必要があります。これにより、パイプラインの実行中にライブ インストールが不要になります。Kubeflow Pipelines SDK には、Python コードをコンテナ化する方法が用意されています。詳細については、コンテナ化された Python コンポーネントをご覧ください。

Artifact Registry リポジトリからパッケージをインストールする

または、プロジェクトに Artifact Registry リポジトリを作成し、Python パッケージをそこに保存し、このセクションで説明するように、そこからインストールするように Vertex AI 環境を構成することもできます。詳細については、Python パッケージを管理するをご覧ください。

ロールと権限を構成する

  1. Vertex AI 環境のサービス アカウントには、iam.serviceAccountUser ロールが必要です。

  2. プロジェクトのネットワーク内のリポジトリからカスタム PyPI パッケージをインストールし、このリポジトリにパブリック IP アドレスがない場合:

    1. このリポジトリにアクセスするための権限を環境のサービス アカウントに割り当てます。

    2. このリポジトリへの接続性が、プロジェクトで構成されていることを確認します。

リポジトリを作成する

  1. プロジェクトに VPC モードで Artifact Registry リポジトリを作成します。
  2. 必要な Python パッケージをリポジトリに保存します。

リポジトリからインストールするように Vertex AI 環境を構成する

1 つ以上の Artifact Registry リポジトリからカスタム PyPI パッケージをインストールするには、@dsl.component に対して次のような呼び出しを行います。

@dsl.component(packages_to_install=["tensorflow"],
pip_index_urls=['http://myprivaterepo.com/simple', 'http://pypi.org/simple'],)
def hello_world(text: str) -> str:
    import my_package
    import tensorflow

    return my_package.hello_world(text)

制限事項

VPC Service Controls を使用する場合は、次の制限が適用されます。

  • データをラベル付けする場合は、ラベラーの IP アドレスをアクセスレベルに追加する必要があります。
  • Google Cloud Pipeline コンポーネントの場合、コンポーネントは、すべての要件についてベースイメージをチェックするコンテナを起動します。KFP パッケージと packages_to_install 引数で指定されているパッケージは、コンテナの要件です。指定された要件がベースイメージ(指定済みまたはカスタム)にまだ存在しない場合、コンポーネントは Python Package Index(PyPI)から要件をダウンロードしようとします。サービス境界は、Vertex AI からインターネット上のサードパーティの API やサービスへのアクセスをブロックするため、ダウンロードは Connection to pypi.org timed out で失敗します。このエラーを回避する方法については、Vertex AI Pipelines で VPC Service Controls を使用するをご覧ください。
  • Vertex AI Workbench のカスタム カーネルで VPC Service Controls を使用する場合は、*.notebooks.googleusercontent.com のリクエストを 199.36.153.4/30(restricted.googleapis.com)ではなく、サブネット 199.36.153.8/30(private.googleapis.com)に送信するように DNS ピアリングを構成する必要があります。

次のステップ