🧱

Azure Databricks の Private Link について調べた

2022/11/14に公開

はじめに

以前 Azure Databricks の閉域構成について記事を書きましたが、2022 年 8 月より Azure Databricks の Private Link がパブリックプレビューになりました。そこで、Azure Databricks の Private Link について情報をまとめました。

https://learn.microsoft.com/ja-jp/azure/databricks/administration-guide/cloud-configurations/azure/private-link

【追記】2023 年 1 月に Azure Databricks の Private Link は一般提供 (GA) が開始されました。
https://learn.microsoft.com/ja-jp/azure/private-link/private-link-overview

Azure Databricks の Private Link

今までと何が変わる?

Azure Databricks の Private Link を有効にしたワークスペースを作成すると、Azure Databricks コントロールプレーンに対して任意の Azure VNet から Private Endpoint 経由で通信することができます。コントロールプレーンとの通信にはユーザーからのものとデータプレーンからのものがあります。前者についてはこれまでパブリックネットワーク経由の通信しかできなかったため、閉域ネットワーク内 (例えばオンプレミスネットワークから Express Route 経由、など) から通信できるようになるのは大きな変更点です。

補足情報

Private Link を使うためにはいくつか必須条件が存在します。

  • Azure Databricks ワークスペースの価格レベルに Premium を選択する必要があります。
  • フロントエンド Private Link / バックエンド Private Link (後述) の組み合わせに関係なく、Private Link を使用するワークスペースは VNet Injection を行う必要があります。 VNet Injection については以前の記事で説明しています。

種類

Azure Databricks の Private Link には 3 種類あります。

1. フロントエンド

ユーザーとコントロールプレーンの間の通信に使われます。有効にするとユーザーは Private Endpoint が存在する VNet から通信できるようになります。各ワークスペースにつき 1 つ作成します。

2. バックエンド

コントロールプレーンとデータプレーンの間の通信に使われます。各ワークスペースにつき 1 つ作成します。フロントエンド Private Link を無効 (パブリックネットワークからの通信が可能で従来通り IP アクセスリストで接続元を制御する) にしてバックエンド Private Link のみ有効にする構成を取ることもできます。なお、バックエンド Private Link を有効にする場合は Secure Cluster Connectivity (NPIP) も合わせて有効にする必要があります。Secure Cluster Connectivity (NPIP) については以前の記事で説明しています。

3. Web 認証

ユーザーがフロントエンド Private Link 経由で Azure Databricks の Web UI を使う場合に必要な特別な Private Link です。各リージョンにつき 1 つ作成します。REST API のみ使う場合 (Web UI を使わない場合) は不要です。

設定方法

基本的にこちらの手順に従えば設定できます。大きく分けるとやることは下記の 3 つです。

  1. ワークスペースの設定
  2. Private Endpoint の作成
  3. Web 認証 Private Endpoint の作成 (リージョンごとに 1 度だけ)

1. ワークスペースの設定

ワークスペースの新規作成時に下記の項目を設定します。これらの項目は後から変更する事ができないため、事前に構成を検討します。

公衆ネットワークアクセスを許可する

ワークスペースに対するパブリック IP アドレスによる通信を許可するかどうかの設定です。有効にしてパブリック IP アドレスによる通信を許可したうえで Private Endpoint 経由の通信も行うハイブリッドフロントエンドの構成を取ることもできます。

必須の NSG ルール

設定の名前から何が起こるかが分かりづらいですが、バックエンド Private Link を有効にしたい場合は Azure Databricks ルールなし、それ以外の場合は全てのルールを選択するものと覚えておきます。この設定により、自動作成されて VNet Injection 先のサブネットに自動適用されるネットワークセキュリティグループ (NSG) の内容が一部変わります。

全てのルールを選択した場合の NSG 】

Azure Databricks ルールなしを選択した場合の NSG では Azure Databricks サービスタグ宛の送信ルールが無くなり、Private Endpoint からしか通信できなくなる】

2. Private Endpoint の作成

取る構成に応じてフロントエンドのみ、バックエンドのみ、もしくはその両方を作成します。Private Endpoint はワークスペース作成時でも、後からでも追加できます。
なお、フロントエンド Private Endpoint はワークスペースの設定に関わらず後から追加が可能ですが、バックエンド Private Endpoint を使用する場合は前述の必須の NSG ルールAzure Databricks ルールなしを選択しておく必要があります。

【ワークスペース作成時】

【後から】

3. Web 認証 Private Endpoint の作成 (リージョンごとに 1 度だけ)

SSO 認証フローをサポートするように DNS を構成するに従って作成します。前述の通りリージョンごとに 1 つだけ作成します。ドキュメントの手順では Web 認証 Private Endpoint 専用のワークスペースを作成することが推奨されていますが、一方で VNet Injection を行う必要もあり最低/26のサブネットを 2 つ割り当てる必要があります。クラスターを配置せず使わないサブネットを VNet ピアリングで共有されているアドレス空間から払い出すのはもったいないので、どの VNet ともピアリングしない専用の VNet を作成して割り当てます。

補足情報

取り得る構成を一覧表でまとめました。ドキュメントでは 2 行目の構成が推奨構成とされています。

シナリオ 公衆ネットワークアクセス 必須 NSG ルール フロント PE バックエンド PE Web 認証 PE (リージョンごとに 1 つ)
PE なし 有効 全てのルール No No No
フロントエンド + バックエンド 無効 Azure Databricks ルールなし Yes Yes Yes
フロントエンド (ハイブリッド) + バックエンド 有効 Azure Databricks ルールなし Yes Yes Yes
フロントエンドのみ 有効 全てのルール Yes No Yes
バックエンドのみ 有効 Azure Databricks ルールなし No Yes No

挙動の確認

実際にフロントエンド + バックエンドの構成を取った場合に、ユーザーから見た挙動を確認してみます。

公衆ネットワークアクセス無効にしたワークスペースにパブリックネットワーク経由で接続しようとすると以下のような画面が表示され、ワークスペースへ入ることができなくなります。

Private Endpoint を作成した VNet にある VM から接続すると、これまでどおりワークスペースへ入ることができます。

ちなみに、上記 VM からの接続であっても、Web 認証 Private Endpoint が未作成の場合下記のような画面が表示されて SSO に失敗します。

補足情報

フロントエンド、バックエンド Private Link を有効にした場合の動作テストの詳細については下記リンク先に記載されています。

おわりに

以上です。🍵

Microsoft (有志)

Discussion