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 エンドポイント名を柔軟に定義することもできます。
ベスト プラクティスとして、制限付き仮想 IP(VIP)と Private Service Connect Google API または限定公開の Google アクセスを使用して、 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.com
、pkg.dev
、gcr.io
、および VPC Service Controls と互換性のある Google API とサービスに必要なその他のドメインまたはホスト名が含まれます。 - ゾーンのレコードデータは、すべてのホスト名を
199.36.153.4
、199.36.153.5
、199.36.153.6
、199.36.153.7
に解決します。
既存の Google マネージド サービスに影響を与えることなく、プロデューサー ネットワークからデフォルト ルートを削除する別の方法は、次の手順で構成される Cloud Interconnect を介した HA VPN を使用することです。
- HA VPN とともにサービス VPC ネットワークをコンシューマー VPC ネットワークにデプロイします。
- サービス VPC ネットワークに Google マネージド サービスをデプロイします。
- ピアリングの VPC Service Controls を有効にします。
- マネージド サービスでオンプレミスへの到達可能性が必要な場合は、Cloud Router からプライベート サービス アクセス サブネットをカスタム ルート アドバタイズとしてアドバタイズします。
- カスタムルートをエクスポート オプションを使用して、サービス ネットワーキング 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
- Vertex AI Agent Engine
- 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 コンポーネントを使用し、依存関係をコンテナ イメージにビルドする必要があります。これにより、パイプラインの実行中にライブ インストールを行う必要がなくなります。その方法の 1 つは次のとおりです。
Kubeflow Pipelines SDK とその他のパッケージがプリインストールされた独自のコンテナ イメージを構築します。たとえば、イメージのベースレイヤとして
us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-17:latest
を使用し、コンテナのビルド時にパッケージをインストールする追加レイヤを追加できます。コンポーネント定義コードを更新して、
base_image
パスとinstall_kfp_package
フラグをFalse
に設定します。このフラグは、Kubeflow Pipelines SDK パッケージがイメージにすでにインストールされているため、KFP コンパイラがpip install kfp
コマンドをコンテナのコマンドラインに挿入しないように指示します。次に例を示します。@component( base_image='gcr.io/deeplearning-platform-release/tf-cpu.2-17', install_kfp_package=False, ) def my_component(...): ...
Artifact Registry リポジトリからパッケージをインストールする
または、このセクションで説明するように、プロジェクトに Artifact Registry リポジトリを作成し、そこに Python パッケージを保存して、そこからインストールするように Vertex AI 環境を構成することもできます。詳細については、Python パッケージを管理するをご覧ください。
ロールと権限を構成する
Vertex AI 環境のサービス アカウントには、
iam.serviceAccountUser
ロールが必要です。プロジェクトのネットワーク内のリポジトリからカスタム PyPI パッケージをインストールし、このリポジトリにパブリック IP アドレスがない場合:
このリポジトリにアクセスするための権限を環境のサービス アカウントに割り当てます。
このリポジトリへの接続性が、プロジェクトで構成されていることを確認します。
リポジトリを作成する
- プロジェクトに VPC モードの Artifact Registry リポジトリを作成します。
- 必要な 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 パイプライン コンポーネントの場合、コンポーネントは、すべての要件についてベースイメージをチェックするコンテナを起動します。KFP パッケージと
packages_to_install
引数で指定されているパッケージは、コンテナの要件です。指定された要件がベースイメージ(Google 提供のイメージまたはカスタム イメージ)にまだ存在しない場合、コンポーネントは 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 ピアリングを構成する必要があります。 - Vertex AI Inference で VPC Service Controls を使用する場合は、プロジェクトをサービス境界に追加した後にエンドポイントを作成する必要があります。サービス境界に含まれていないプロジェクトでエンドポイントが作成され、その後そのプロジェクトがサービス境界に追加された場合、そのエンドポイントにモデルをデプロイしようとすると失敗します。エンドポイントが共有パブリック エンドポイントの場合、エンドポイントにリクエストを送信しても失敗します。同様に、エンドポイントがサービス境界の一部であるプロジェクトで作成され、その後プロジェクトが削除された場合、モデルをエンドポイントにデプロイしようとすると失敗します。
次のステップ
- VPC Service Controls: 共有 VPC でクラウド プロジェクトをセグメント化する方法の動画をご覧ください。
- VPC Service Controls でドライラン モードを使用する方法の動画をご覧ください。
- VPC Service Controls: プライベート IP のサポートによるきめ細かいアクセス制御の作成の動画をご覧ください。
- VPC Service Controls の詳細を確認する。
- VPC Service Controls に必要なロールの詳細を確認する。
- VPC Service Controls の問題のトラブルシューティングについて確認する。