VPC Service Controls を使用する
このページでは、VPC Service Controls を使用してサービス境界内に Colab Enterprise ノートブックを設定する方法について説明します。
概要
VPC Service Controls は、 Google Cloud の機能で、データ漏洩を防ぐための境界を設定できます。
VPC Service Controls は、Identity and Access Management(IAM)によって提供される保護とは独立した、Google Cloud サービスに対する防御を強化します。
サービス境界内で Colab Enterprise を使用する場合、ランタイムはサービス境界の影響を受けます。したがって、他の Google API やサービスとやり取りするノートブック コードを実行するには、それらのサービスをサービス境界に追加する必要があります。
VPC Service Controls の詳細については、VPC Service Controls の概要をご覧ください。
既知の制限事項
Colab Enterprise では、Dataform を使用してノートブックを保存します。
Dataform で VPC Service Controls を使用する方法については、Dataform 用に VPC Service Controls を構成するをご覧ください。
Colab Enterprise UI には、 Google Cloud コンソールからのみアクセスできます。Google Cloud コンソールの VPC Service Controls の制限については、Google Cloud コンソールの制限事項をご覧ください。
サービス境界で Vertex AI サービスにアクセスする必要がある場合は、Colab Enterprise を使用した VPC Service Controls の制限をご覧ください。
必要なロール
Colab Enterprise で VPC Service Controls を使用するために必要な権限がユーザー アカウントに付与されるように、プロジェクトに対する次の IAM ロールをユーザー アカウントに付与するよう管理者に依頼してください。
-
Access Context Manager 編集者 (
roles/accesscontextmanager.policyEditor
) -
Colab Enterprise ユーザー (
roles/aiplatform.colabEnterpriseUser
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をユーザー アカウントに付与することもできます。
VPC Service Controls の権限の詳細については、IAM を使用したアクセス制御をご覧ください。
サービス境界を作成する
VPC Service Controls を使用してサービス境界を作成します。このサービス境界によって、指定したサービスの Google 管理リソースが保護されます。サービス境界を作成するときに、次のことを行います。
サービス境界にプロジェクトを追加するときに、Colab Enterprise ノートブックを含むプロジェクトを追加するか、このプロジェクトにノートブックを作成します。
サービス境界にサービスを追加するときに、次のものを追加します。
- Vertex AI API(
aiplatform.googleapis.com
) - Dataform API(
dataform.googleapis.com
)
- Vertex AI API(
必要なプロジェクトやサービスを追加せずにサービス境界を作成した場合は、サービス境界を管理するを参照して、サービス境界を更新する方法を確認してください。
Colab Enterprise UI へのアクセスを許可する
Colab Enterprise UI(colab-embedded.cloud.google.com
)はインターネット経由でのみアクセス可能なため、Colab Enterprise UI はサービス境界外として扱われます。サービス境界を適用すると、保護したサービスの Google Cloud コンソール インターフェースが部分的または完全にアクセス不能になることがあります。たとえば、境界で Colab Enterprise を保護すると、 Google Cloud コンソールの Colab Enterprise インターフェースにアクセスできなくなります。
Google Cloud コンソールから保護されたリソースへのアクセスを許可するには、保護された API で Google Cloud コンソールを使用するユーザーのマシンを含むパブリック IP 範囲のアクセスレベルを作成する必要があります。たとえば、プライベート ネットワークの NAT ゲートウェイのパブリック IP 範囲をアクセスレベルに追加し、そのアクセスレベルをサービス境界に割り当てることができます。
Google Cloud コンソールの境界へのアクセスを一連の特定ユーザーのみに制限する場合は、アクセスレベルにそのユーザーを追加することもできます。その場合、指定したユーザーだけがGoogle Cloud コンソールにアクセスできます。
VPC のアクセス可能なサービスを設定する(省略可)
境界で VPC のアクセス可能なサービスを有効にすると、境界内のネットワーク エンドポイントからのアクセスは、指定した一連のサービスに制限されます。
境界内のアクセスを特定の一連のサービスのみに限定する方法については、VPC のアクセス可能なサービスをご覧ください。
VPC ネットワークで限定公開の Google アクセスを使用する(省略可)
限定公開の Google アクセスは、プライベート IP アドレスを使用して Google Cloud API とサービスにアクセスする VPC ネットワーク、またはオンプレミス ネットワークのホストへのプライベート接続を提供します。VPC Service Controls サービス境界をこれらのネットワークのホストに拡張して、保護されたリソースへのアクセスを制御できます。VPC ネットワーク内のホストは、プライベート IP アドレスのみを持ち(パブリック IP アドレスは不可)、限定公開の Google アクセスが有効なサブネット内に配置されている必要があります。詳細については、オンプレミス ネットワークからのプライベート接続をご覧ください。
VPC ネットワークで限定公開の Google アクセスを使用できるようにするには、いくつかの DNS レコードを構成する必要があります。
Cloud DNS を使用して DNS エントリを構成する
Colab Enterprise ランタイムは、VPC ネットワークがデフォルトで処理しない複数のドメインを使用します。それらのドメインに送信されたリクエストを VPC ネットワークが正しく処理するには、Cloud DNS を使用して、DNS レコードを追加します。VPC ルートの詳細については、ルートをご覧ください。
このセクションでは、ドメインのマネージド ゾーンを作成し、リクエストを転送する DNS エントリを追加して、トランザクションを実行する方法について説明します。*.aiplatform.googleapis.com
を使用してステージングするためにリクエストを処理する必要のある複数のドメインごとに、これらの手順を繰り返します。
Cloud Shell または Google Cloud CLI がインストールされている環境で、次の gcloud CLI コマンドを入力します。
-
VPC ネットワークで処理する必要があるいずれかのドメインの限定公開マネージド ゾーンを作成するには:
gcloud dns managed-zones create ZONE_NAME \ --visibility=private \ --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \ --dns-name=DNS_NAME. \ --description="Description of your managed zone"
次のように置き換えます。
-
ZONE_NAME
: 作成するゾーンの名前。ドメインごとに別のゾーンを使用する必要があります。このゾーン名は、以降の手順でも使用します。 -
PROJECT_ID
: VPC ネットワークを含むプロジェクトの ID。 -
NETWORK_NAME
: 前に作成した VPC ネットワークの名前。 -
DNS_NAME
: ドメイン名の*.
より後の部分。たとえば、*.aiplatform.googleapis.com
の DNS 名はaiplatform.googleapis.com
です。
-
-
トランザクションを開始します。
gcloud dns record-sets transaction start --zone=ZONE_NAME
-
次の DNS A レコードを追加します。これにより、Google の制限された IP アドレスにトラフィックが再ルーティングされます。
gcloud dns record-sets transaction add \ --name=DNS_NAME. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300
-
追加した A レコードを指すように、次の DNS CNAME レコードを追加します。これにより、ドメインに一致するすべてのトラフィックが、前の手順で一覧表示された IP アドレスにリダイレクトされます。
gcloud dns record-sets transaction add \ --name=\*.DNS_NAME. \ --type=CNAME DNS_NAME. \ --zone=ZONE_NAME \ --ttl=300
-
トランザクションを実行します。
gcloud dns record-sets transaction execute --zone=ZONE_NAME
-
次の各ドメインについて、上記の手順を繰り返します。繰り返しごとに、ZONE_NAME と DNS_NAME はそのドメインの適切な値に変更します。PROJECT_ID と NETWORK_NAME は、毎回同じものを使用します。
*.aiplatform.googleapis.com
については、これらの手順はすでに完了しています。*.aiplatform.googleapis.com
*.aiplatform-notebook.googleusercontent.com
*.aiplatform-notebook.cloud.google.com
プライベート接続の構成の詳細については、Google API とサービスへのプライベート接続を設定するをご覧ください。
上り(内向き)ルールを使用して、サービス境界の外部からのコンテキストアウェア アクセスを許可する
クライアント属性に基づいて、境界によって制限されたリソースへのコンテキストアウェア アクセスを許可できます。ID タイプ(サービス アカウントまたはユーザー)、ID、デバイスデータ、ネットワーク送信元(IP アドレスまたは VPC ネットワーク)などのクライアント属性を指定できます。
たとえば、IPv4 と IPv6 アドレスの範囲に基づいて境界内のリソースへのインターネット アクセスを許可するように上り(内向き)ルールを設定できます。上り(内向き)ルールを使用してコンテキストアウェア アクセスを設定する方法については、コンテキストアウェア アクセスをご覧ください。
上り(内向き)ルールと下り(外向き)ルールを使用して安全なデータ交換を構成する
プロジェクトは 1 つのサービス境界にのみ含めることができます。境界を越えた通信を許可するには、上り(内向き)ルールと下り(外向き)ルールを設定します。たとえば、複数の境界のプロジェクトが別の境界でログを共有できるように上り(内向き)ルールと下り(外向き)ルールを指定できます。安全なデータ交換のユースケースの詳細については、安全なデータ交換をご覧ください。
次のステップ
VPC Service Controls の詳細を確認する。
Colab Enterprise ランタイムの詳細を確認する。