顧客管理VPCの構成
この機能を使用するには、お客様のアカウントがプレミアムプランである必要があります。
概要
デフォルトでは、Databricks RuntimeクラスターなどのDatabricksワークスペースの従来のコンピュートリソースは、Google Cloud 仮想プライベートクラウド(VPC)ネットワーク内のGKEクラスター内に作成されます。Databricksは、このVPCをGoogle Cloudアカウントに作成して構成します。
または、Google Cloud アカウントで作成した既存の 顧客管理Databricks にVPC ワークスペースを作成することもできます。顧客管理VPC を使用すると、ネットワーク構成をより詳細に制御して、組織が必要とする可能性のある特定のクラウド セキュリティおよびガバナンス標準に準拠できます。 任意の種類の接続で Private サービス Connect を使用するようにワークスペースを構成するには、ワークスペースで顧客管理VPCを使用する必要があります。
カスタマーマネージドVPCは、次のような場合に適しています。
- PaaSプロバイダーが自分のGoogle Cloud アカウントにVPCを作成できないようにするセキュリティポリシー。
- 新しいVPCを作成するための承認プロセスがあり、VPCが内部の情報セキュリティチームまたはクラウドエンジニアリングチームによって十分に文書化された方法で設定および保護されている場合。
カスタマーマネージドVPCのメリットは次のとおりです。
- 権限レベルを下げる : 自分の Google Cloud アカウントをより詳細に制御できます。 Databricks には、デフォルトの Databricks マネージド VPC に必要な権限ほど多くの権限は必要ありません。 必要な権限が制限されていると、プラットフォームスタックで Databricks を使用するための承認を簡単に得ることができます。 「 顧客管理 VPC の権限レベルを下げる」を参照してください。
- 統合VPC : 複数のDatabricksワークスペースを構成して、単一のコンピュートプレーンVPCを共有します。これは請求やインスタンスの管理に役立ちます。
顧客管理VPC を使用するには、Databricksアカウント コンソール で ワークスペースを作成するときに指定する必要があります。Databricks マネージド VPC を持つ既存のワークスペースを自分の VPC に移動することはできません。 また、ワークスペースの作成後は、ワークスペースが使用する顧客管理VPC を変更することはできません。
顧客管理VPCの権限レベルが低い
ワークスペースの作成中に、Databricks はサービス アカウントを作成し、Databricks がワークスペースを管理するために必要な アクセス許可を持つ ロールを付与します。
ワークスペースで顧客管理VPCを使用している場合、それほど多くの権限は必要ありません。 Databricks が作成するロールでは、ネットワーク、ルーター、サブネットなどのオブジェクトの作成、更新、削除などの権限が省略されます。 完全な一覧については、「 ワークスペース サービス アカウントに必要なアクセス許可」を参照してください。
必要条件
このトピックの内容:
エグレス要件
ワークスペースの作成の一環として、 Databricks は VPCに GKE クラスターを作成します。 デフォルトとは、これはプライベートGKEクラスターであり、パブリックIPアドレスがないことを意味します。 限定公開 GKE クラスターの場合、指定するサブネットとセカンダリ IP 範囲は、送信公開インターネット トラフィックを許可する必要がありますが、デフォルトでは許可されていません。 下り(外向き)を有効にするには、Google Cloud NAT を追加するか、同様のアプローチを使用します。 「 ステップ 1: VPC を作成して設定する」を参照してください。 IP アクセス リストを設定する場合は、それらのパブリック IP アドレスを許可リストに追加する必要があります。 ワークスペースの IP アクセス リストの構成を参照してください。
代わりに公開 GKE クラスターを選択した場合、コンピュート ノードには公開 IP アドレスがあるため、ワークスペースには 安全なクラスター接続 がありません。
ネットワーク要件
次の表は、CIDR表記を使用したネットワークリソースと属性の要件を示しています。
ネットワークリソースもしくは属性 | 説明 | 有効範囲 |
---|---|---|
サブネット範囲 | ワークスペースの GKE クラスター ノードを割り当てるための VPCの IP 範囲。 サイズ設定に関する推奨事項と計算については、「 新しいワークスペースのサブネット サイズを計算する」を参照してください。 |
|
サブネットのリージョン | サブネットのリージョン | サブネットリージョンは、ワークスペースを実行するためのDatabricks GKE クラスターをプロビジョニング 、ワークスペースの リージョン と一致する必要があります。 |
GKEポッドのセカンダリ範囲 | ワークスペースのGKEクラスターポッドを割り当てるVPCのIP範囲。 |
|
GKEサービスのセカンダリ範囲 | ワークスペースのGKEクラスターサービスを割り当てるVPCのIP範囲。 |
|
1 つの VPC を複数のワークスペースで共有する
1 つの Google Cloud VPC を複数のワークスペースで使用できます。 各ワークスペースのサブネットが重複しないようにする必要があります。 VPC のプロジェクトとは別に、ワークスペースごとに個別の Google Cloud プロジェクトを使用するには、Google が 共有 VPC と呼ぶものを使用します。 詳細については、「 プロジェクトの要件」を参照してください。
プロジェクトの要件
VPCに関連付けられているGoogle Cloud プロジェクトは、ワークスペースのプロジェクトと一致させることができますが、一致させる必要はありません。
Googleが スタンドアロンVPC と呼ぶ標準VPCを使用する場合、Databricksは次の両方に同じGoogle Cloud プロジェクトを使用します。
-
VPCネットワーク
-
Databricksがワークスペースごとに作成するコンピュートとストレージのリソース。コンピュートリソースには、GKEクラスターとそのクラスターノードが含まれます。ストレージリソースには、システムデータとDBFSルート用の2つのGCSバケットが含まれます。
VPCにコンピュートリソースやストレージリソースとは異なるGoogle Cloud プロジェクトを持たせる場合は、スタンドアロンVPCではなく、Googleが 共有VPC と呼ぶものを作成する必要があります。共有VPCを使用すると、複数のプロジェクトのリソースを共通のVPCネットワークに接続し、そのネットワークの内部IPを使用して相互に通信できます。
用語解説
- 共有VPC という用語を、複数のワークスペースがVPCを共有しているかどうかを混同しないでください。スタンドアロンVPCも共有VPCも、単一のDatabricksワークスペースもしくは複数のワークスペースで使用できます。
- 共有VPC は、 クロスプロジェクトネットワーク もしくは XPN と呼ばれます。Databricksドキュメントでは、Googleのドキュメントで最も一般的な用法に従って 共有VPC という用語を使用しています。
次のようなさまざまな理由から、ワークスペースリソースに別のプロジェクトを使用したい場合があります。
- 独自のDatabricksワークスペースを持ち、すべてのワークスペースをホストする単一のVPCを持つ各ビジネスユニットのコスト帰属と予算計算のために、ワークスペースごとに課金メタデータを分離したい。
- 各プロジェクトの権限を目的ごとに制限したい。たとえば、各ワークスペースのコンピュートリソースとストレージリソースに使用するプロジェクトには、VPCを作成する権限は不要など。
- 組織では、Google Cloud アプリケーションに、このアプローチが必要になる場合がある。
Googleが ホストプロジェクト と呼んでいるものは、VPCのプロジェクトです。Googleが サービスプロジェクト と呼ぶものは、Databricksが各ワークスペースのコンピュートリソースとストレージリソースに使用するプロジェクトです。
ロールの要件
オペレーションを実行する プリンシパル は、オペレーションごとに特定の必要なロールを持つ必要があります。
プロジェクトで特定のロールが必要となるプリンシパルは、オペレーションの実行方法によって異なります。
- アカウントコンソールを使用する場合、プリンシパルは管理者ユーザーアカウントです。
- アカウント APIを使用するには、プリンシパルが OIDC 認証のメイン サービス アカウント (SA-2) です。サービスアカウントは、その作成者であるあなたから自動的にロールを継承するわけではないことに注意してください。 プロジェクトのサービスアカウントの役割を追加する必要があります。
スタンドアロン VPC アカウントの場合、VPC とデプロイされたリソースの両方に対して 1 つの Google Cloud プロジェクトがあります。 VPCがGoogleが共有VPCと呼んでいる場合、それはVPC各ワークスペースのコンピュートおよびストレージリソースに使用されるプロジェクトとは別のプロジェクトを持っていることを意味します。共有 VPC の場合、オペレーションを実行するエンティティ (ユーザーまたはサービスアカウント) は、VPC のプロジェクトとワークスペースのプロジェクト の両方で 特定のロールを持っている必要があります。 詳細については、次の表を参照してください。 共有 VPC の詳細については、「 プロジェクト要件」を参照してください。
顧客管理VPCを使用してワークスペースを作成するには、ネットワーク設定とワークスペースの両方を作成するためのロールが必要です。 次の表は、ワークスペースがプロビジョニングされる GCP プロジェクトと VPC が存在する GCP プロジェクト (このプロジェクトがワークスペース プロジェクトと異なる場合) でワークスペース作成者に付与する必要があるロールを示しています。
オペレーション | VPC やワークスペースが存在する GCP プロジェクトで必要なロール |
---|---|
以下のすべての顧客管理VPCのオペレーションを実行します。 | 所有者 ( |
ネットワーク構成を作成する | 閲覧者 ( |
ネットワーク設定を削除する | なし |
Databrickワークスペースを作成する | VPC やワークスペースが存在する GCP プロジェクトの所有者 ( |
ワークスペースを削除する | 所有者 ( |
ステップ 1: VPC を作成してセットアップする
-
Google がスタンドアロン VPC と呼ぶものを作成するか、共有 VPC と呼ぶものを作成するかを決定します。 共有 VPC では、VPC に 1 つの Google Cloud プロジェクトを指定し、ワークスペースごとに個別のプロジェクトを指定できます。 Databricks は、ワークスペース プロジェクトを使用して、ワークスペースのストレージとコンピュート リソースを作成します。 「プロジェクトの要件」を参照してください。
- 各ワークスペースのコンピュートリソースおよびストレージリソースと同じプロジェクトをVPCに使用するには、スタンドアロンのVPCを作成します。
- それ以外の場合は、共有VPCを作成します。
-
ネットワーク要件に従って VPC を作成します。
-
スタンドアロン VPC を作成するには 、 Google Cloud コンソール または Google CLI を使用します。 Google CLI を使用して、Databricks ワークスペースに十分な IP 範囲を持つスタンドアロン VPC を作成するには、次のコマンドを実行します。
<region>
を、Databricks ワークスペースを作成する予定の Google Cloud リージョンに置き換えます。<vpc-name>
を新しい VPC 名に置き換えます。<subnet-name>
を新しいサブネット名に置き換えます。<project-id>
をスタンドアロン VPC のプロジェクト ID に置き換えます。Bash
gcloud config set project <project-id>
gcloud compute networks create <vpc-name> --subnet-mode=custom
gcloud compute networks subnets create <subnet-name> \
--network=<vpc-name> --range=10.0.0.0/16 --region=<region> \
--secondary-range pod=10.1.0.0/16,svc=10.2.0.0/20この例では、セカンダリIP範囲は
pod
とsvc
という名前になっています。これらの名前は、後の設定ステップに関連します。 -
共有VPCを作成するには
- Googleの記事「共有VPCの概要」を参照してください。
- Googleの記事「共有VPCでのクラスターのセットアップ」の指示に従ってください。 ホストプロジェクト はVPCのプロジェクトです。 サービスプロジェクト は、Databricksが各ワークスペースのコンピュートリソースとストレージリソースに使用するプロジェクトです。このページでは、共有VPCの設定、テスト用のGKEテストクラスターの共有VPCへの作成、テストクラスターの削除の手順を説明します。
-
-
このVPC内の任意のワークスペースにプライベートGKEクラスターを使用する場合 (ワークスペース作成時のデフォルト設定)、コンピュートリソースノードにはパブリックIPアドレスを持ちません。
ワークスペースの作成中にパブリックGKEクラスターを使用してコンピュートリソースノードのパブリックIPアドレスを作成する場合は、このセクションの次のステップに進んでください。
プライベートGKEクラスターを使用するワークスペースをサポートするには、VPCからパブリックインターネットへのイグレス (アウトバウンド) トラフィックを許可するリソースをVPCに含めて、ワークスペースがDatabricksのコントロールプレーンに接続できるようにする必要があります
エグレスを有効にする簡単な方法は、Google Cloud NAT を追加することです。 Google の記事「Cloud NAT を使用してネットワーク アドレス変換を設定する」の手順に沿って操作します。 このアプローチにより、すべての目的地へのエグレスが可能になります。 エグレスを必要な宛先のみに制限する場合は、今すぐ、または 後で「ファイアウォールを使用してワークスペースのネットワーク エグレスを制限する」の手順を使用して行うことができます。
この手順で Google CLI を使用する場合は、次のコマンドで実行できます。 <vpc-name>
を、前の手順で指定した VPC 名に置き換えます。<nat-name>
を新しい NAT 名に置き換えます。<region>
を、ワークスペース (または同じリージョン内の複数のワークスペース) で使用するリージョン名に置き換えます。
gcloud compute routers create my-router --network=<vpc-name> --region=<region>
gcloud compute routers nats create <nat-name> \
--router=my-router \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--router-region=<region>
その他の例については、Googleの記事「GKEのセットアップ例」を参照してください。
ステップ 2: 管理者ユーザー アカウントのプロジェクトの役割を確認または追加する
操作を実行する プリンシパル には、操作ごとに特定の必要なロールが必要です。 ワークスペースの作成およびその他の関連操作に必要なロールについては、「 ロールの要件 」を参照してください
プロジェクトで特定のロールが必要となるプリンシパルは、オペレーションの実行方法によって異なります。
- アカウントコンソールを使用する場合、プリンシパルは管理者ユーザーアカウントです。
- アカウント APIを使用するには、プリンシパルが OIDC 認証のメイン サービス アカウント (SA-2) です。サービスアカウントは、その作成者であるあなたから自動的にロールを継承するわけではないことに注意してください。 プロジェクトのサービスアカウントの役割を追加する必要があります。
次の手順で、プロジェクトのプリンシパルの役割を確認もしくは更新します。
-
Google Cloud コンソールのプロジェクトIAMページに移動します。
-
必要に応じて、ページ上部のプロジェクトピッカーから、VPCのプロジェクトに合わせてプロジェクトを変更します。
-
プリンシパルがすでにこのプロジェクトでロールを持っている場合は、このページでそのロールを見つけて、 役割 列でその役割を確認できます。
-
次の手順で、このプロジェクトのプリンシパルに新しいロールを追加します。
-
IAMページ上部にある 追加 をクリックします。
-
プリンシパル フィールドに、更新するエンティティのメールアドレスを入力します。
-
[ロールの選択 ] フィールドをクリックします。必須としてリストされている必要なロールを選択します。 「ロールの要件」を参照してください。所有者、閲覧者、編集者の役割については、ピッカーの [基本 ] カテゴリで確認できます。
-
顧客管理VPCを使用してワークスペースを作成するには、ネットワーク設定とワークスペースの両方を作成するための ロール が必要です。 ここで両方の操作の役割を追加します。
-
他のロールを追加するには、 他のロールの追加 をクリックし、「プロジェクトのプリンシパルのロールを確認もしくは更新する」で説明したステップを繰り返します。
-
[ 保存 ]をクリックします。
-
Google Cloud 共有VPCを使用すると、ワークスペース リソースに異なる Google Cloud プロジェクト(コンピュート リソースやストレージなど)を使用できる場合は、ワークスペースのプロジェクトでプリンシパルのロールを確認または追加する必要もあります。このセクションの手順を繰り返しますが、VPC のプロジェクトではなく、ワークスペースのプロジェクトを使用します。
ステップ 3: ネットワークを Databricksで登録する ネットワーク設定オブジェクトを作成します
ネットワーク (VPC) を新しいDatabricksネットワーク設定オブジェクトとして登録します。
- アカウントコンソールに移動します。
- 左側のナビゲーションで [Cloud リソース
] をクリックします。
- [ネットワーク構成の追加] をクリックします。
- 別のWebブラウザウィンドウで、Google Cloud コンソールを開きます。
- VPCに移動します。
- サブネット名をクリックします。Google Cloud コンソールは、サブネットの詳細とフォームに必要なその他の情報を含むページを表示します。
- ネットワーク設定を追加 フォームに情報をコピーします。
- 最初のフィールドに、ネットワーク構成の判読可能な名前を入力します。
- VPC名、サブネット名、サブネットのリージョンに正しい値を入力します。
- GKEポッドとサービスのセカンダリIP範囲を入力します。前の例を使用して
gcloud
CLIコマンドでスタンドアロンVPCを作成した場合、これらのセカンダリIP範囲はpod
とsvc
という名前になります。 - [ 追加 ] をクリックします。
手順 4: ネットワーク構成を参照する Databricks ワークスペースを作成する
ワークスペースを作成するには、アカウントに対する必要な Google の権限( Google アカウント またはサービス アカウント)が必要です。 「必要な権限」を参照してください。
アカウントコンソールを使用してワークスペースを作成するには、「 アカウントコンソールを使用してワークスペースを作成する 」の手順に従って、次のフィールドを設定します。
-
GoogleクラウドプロジェクトID の場合:
- VPC が スタンドアロン VPC の場合は、これを VPC のプロジェクト ID に設定します。 スタンドアロン VPC の場合、これはワークスペースがリソースに使用するプロジェクトでもあります。
- VPC が 共有 VPC の場合は、これをこのワークスペースのリソースのプロジェクト ID に設定します。
-
ネットワークモード で、 顧客管理ネットワーク を選択します。
-
ネットワーク構成 で、ピッカーからネットワーク構成を選択します。
ステップ 5: コンピュートのデプロイを許可するファイアウォールルールを追加する
Databricks がアカウントに GCE コンピュート リソースをデプロイできるようにするために、Databricks はファイアウォール ルールをVPCに自動的に追加しようとします。権限がないために試行が失敗するのを防ぐには、次のファイアウォールルールを VPC に追加する必要があります。 このファイアウォールルールは、VPC 内の Databricks で管理されている VM 間のトラフィックを許可します。 このルールでは、VPC の外部からのイングレスは許可されません。
必要なルールは次のとおりです。
- ルール名 :
databricks-{WORKSPACE_ID}-ingress
- 方向 : Ingress
- 優先度 :1000
- ターゲット :
Network tag: databricks-{WORKSPACE_ID}
- ソースフィルタ :
IPv4 range: primary CIDR range of subnet
- プロトコルとポート : すべて許可