顧客管理VPCの設定

重要

この機能を使用するには、お客様のアカウントがプレミアムプランである必要があります。

概要

デフォルトでは、Databricks RuntimeクラスターなどのDatabricksワークスペースの従来のコンピュートリソースは、Google Cloud 仮想プライベートクラウド(VPC)ネットワーク内のGKEクラスター内に作成されます。Databricksは、このVPCをGoogle Cloudアカウントに作成して構成します。

または、Google Cloudアカウントで作成した既存の顧客管理VPCにDatabricksワークスペースを作成することもできます。顧客管理VPCを使用すると、ネットワーク構成をより詳細に制御し、組織が必要とする特定のクラウドセキュリティおよびガバナンス標準に準拠できます。任意のタイプの接続でPrivate Service Connectを使用するようにワークスペースを設定するには、ワークスペースで顧客管理VPCを使用する必要があります。

カスタマーマネージドVPCは、次のような場合に適しています。

  • PaaSプロバイダーが自分のGoogle Cloud アカウントにVPCを作成できないようにするセキュリティポリシー。

  • 新しいVPCを作成するための承認プロセスがあり、VPCが内部の情報セキュリティチームまたはクラウドエンジニアリングチームによって十分に文書化された方法で設定および保護されている場合。

カスタマーマネージドVPCのメリットは次のとおりです。

  • 権限レベルを下げる: 自分のGoogle Cloud アカウントをより詳細に管理できます。Databricksには、デフォルトのDatabricksマネージド VPCに必要な数のアクセス許可は必要ありません。必要なアクセス許可が制限されていると、プラットフォームスタックでDatabricksを使用するための承認を簡単に取得できます。「顧客管理VPCの権限レベルが低い」を参照してください。

  • 統合VPC: 複数のDatabricksワークスペースを構成して、単一のコンピュートプレーンVPCを共有します。これは請求やインスタンスの管理に役立ちます。

顧客管理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範囲。サイズ設定に関する推奨事項と計算については、「新しいワークスペースのサブネットサイズを計算する」を参照してください。

/29から/9までの範囲。

サブネットのリージョン

サブネットのリージョン

サブネットのリージョンは、Databricksがワークスペースを実行するためにGKEクラスターをプロビジョニングするためのワークスペースのリージョンと一致する必要があります。

GKEポッドのセカンダリ範囲

ワークスペースのGKEクラスターポッドを割り当てるVPCのIP範囲。

/21から/9までの範囲。

GKEサービスのセカンダリ範囲

ワークスペースのGKEクラスターサービスを割り当てるVPCのIP範囲。

/27から/16までの範囲。

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のオペレーションを実行します。

所有者 (roles/owner)、もしくは (b) 編集者 (roles/editor) とプロジェクトIAM管理者 (roles/resourcemanager.projectIamAdmin) の両方。

ネットワーク構成を作成する

閲覧者 (roles/viewer)

ネットワーク設定を削除する

なし

Databrickワークスペースを作成する

VPC やワークスペースが存在する GCP プロジェクトの所有者 (roles/owner)。 詳細については、「 必要なアクセス許可」を参照してください。

ワークスペースを削除する

所有者 (roles/owner)、もしくは (b) 編集者 (editor/owner) とプロジェクトIAM管理者 (roles/resourcemanager.projectIamAdmin) の両方。

ステップ1: VPCを作成して設定する

  1. GoogleがスタンドアロンVPCと呼ぶものを作成するか、共有VPCを作成するかを決めます。共有VPCでは、VPCに1つのGoogle Cloud プロジェクトを指定し、ワークスペースごとに個別のプロジェクトを指定できます。Databricksはワークスペースプロジェクトを使用して、ワークスペースのストレージリソースとコンピュートリソースを作成します。プロジェクトの要件を参照してください。

    • 各ワークスペースのコンピュートリソースおよびストレージリソースと同じプロジェクトをVPCに使用するには、スタンドアロンのVPCを作成します。

    • それ以外の場合は、共有VPCを作成します。

  2. ネットワークの要件に従ってVPCを作成します。

    • スタンドアロンVPCを作成するにはGoogle CloudコンソールまたはGoogle CLIのいずれかを使用します。Google CLIを使用して、Databricksワークスペースに十分なIP範囲を持つスタンドアロンVPCを作成するには、以下のコマンドを実行します。<region>を、Databricksワークスペースを作成する予定のGoogle Cloudリージョンに置き換えます。<vpc-name>を新しいVPC名に置き換えます。<subnet-name>を新しいサブネット名に置き換えます。<project-id>をスタンドアロンVPCのプロジェクトIDに置き換えます。

      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範囲はpodsvcという名前になっています。これらの名前は、後の設定ステップに関連します。

    • 共有VPCを作成するには

      1. Googleの記事「共有VPCの概要」を参照してください。

      2. Googleの記事「共有VPCでのクラスターのセットアップ」の指示に従ってください。ホストプロジェクトはVPCのプロジェクトです。サービスプロジェクトは、Databricksが各ワークスペースのコンピュートリソースとストレージリソースに使用するプロジェクトです。このページでは、共有VPCの設定、テスト用のGKEテストクラスターの共有VPCへの作成、テストクラスターの削除の手順を説明します。

  3. この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) になります。サービスアカウントは、作成者として自動的にロールを継承するわけではないことに注意してください。プロジェクトのサービスアカウントにロールを追加する必要があります。

次の手順で、プロジェクトのプリンシパルの役割を確認もしくは更新します。

  1. Google Cloud コンソールのプロジェクトIAMページに移動します。

  2. 必要に応じて、ページ上部のプロジェクトピッカーから、VPCのプロジェクトに合わせてプロジェクトを変更します。

  3. プリンシパルがすでにこのプロジェクトでロールを持っている場合は、このページでそのロールを見つけて、役割列でその役割を確認できます。

  4. 次の手順で、このプロジェクトのプリンシパルに新しいロールを追加します。

    1. IAMページ上部にある追加をクリックします。

    2. プリンシパルフィールドに、更新するエンティティのメールアドレスを入力します。

    3. ロールの選択フィールドをクリックします。必須として記載されている必要なロールを選択します。「ロールの要件」を参照してください。所有者、閲覧者、編集者のロールについては、基本カテゴリーのピッカーにあります。

      注:

      顧客管理VPCを使用してワークスペースを作成するには、ネットワーク設定とワークスペースの両方を作成するためのロールが必要です。今すぐ両方のオペレーションにロールを追加してください。

    4. 他のロールを追加するには、他のロールの追加をクリックし、「プロジェクトのプリンシパルのロールを確認もしくは更新する」で説明したステップを繰り返します。

    5. [保存]をクリックします。

  5. Google Cloud 共有VPCを使用して、コンピュートリソースやストレージなどのワークスペースリソースに異なるGoogle Cloud プロジェクトを許可する場合は、ワークスペースのプロジェクトでプリンシパルのロールを確認もしくは追加する必要もあります。このセクションのステップを繰り返しますが、VPCのプロジェクトではなくワークスペースのプロジェクトを使用します。

ステップ3: ネットワーク構成オブジェクトを作成するDatabricksを使用してネットワークを登録する

ネットワーク (VPC) を新しいDatabricksネットワーク設定オブジェクトとして登録します。

  1. アカウントコンソールに移動します。

  2. 左側のナビゲーションで、クラウドリソース クラウドリソースをクリックします。

  3. [ネットワーク構成の追加]をクリックします。

  4. 別のWebブラウザウィンドウで、Google Cloud コンソールを開きます。

  5. VPCに移動します。

  6. サブネット名をクリックします。Google Cloud コンソールは、サブネットの詳細とフォームに必要なその他の情報を含むページを表示します。

  7. ネットワーク設定を追加フォームに情報をコピーします。

    1. 最初のフィールドに、ネットワーク構成の判読可能な名前を入力します。

    2. VPC名、サブネット名、サブネットのリージョンに正しい値を入力します。

    3. GKEポッドとサービスのセカンダリIP範囲を入力します。前の例を使用してgcloud CLIコマンドでスタンドアロンVPCを作成した場合、これらのセカンダリIP範囲はpodsvcという名前になります。

    4. 追加をクリックします。

ステップ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

  • プロトコルとポート: すべて許可