はじめに
Azure Databricks はワークスペース作成時に以下 2 つのネットワーク設定を選択できます。
- Security Cluster Connectivity (SCC)
- VNet Injection
今回はそれぞれの設定について説明します。
Databricks アーキテクチャーの前提知識
Azure Databricks はコントロール プレーンとデータ プレーンから構成されます。
コントロール プレーンにはバックエンド サービスが含まれます。ユーザーがワークスペースに UI アクセスする際はコントロール プレーンにリクエストが送信されます。また、REST API やデータ プレーンからのリクエストに従ってクラスター作成などを行います。
その一方でデータ プレーンではデータが実際に処理され、クラスター ノード VM や Databricks File System (DBFS) で使用するストレージなどが含まれます。
Security Cluster Connectivity (SCC)
Secure Cluster Connectivity (SCC) はセキュリティを強化するための設定となります。データ プレーンのクラスター ノード VM にはデフォルトでパブリック IP が付与されており、これを利用しインターネットに接続しますが、SCC を有効化すると VM にパブリック IP が付与されなくなります。
VNet Injection
VNet Injection は、自分で作成した VNet にデータ プレーンの VM をデプロイするための設定です。
Azure Storage などに Private Endpoint を経由してアクセスしたい場合に必要となります。
Databricks ワークスペース作成時に VNet Injection を有効化する際、複数の設定項目があります。それぞれについて説明していきます。
1. サブネット
VNet には Databricks ワークスペース専用の 2 つのサブネットを含める必要があります。パブリック サブネットは、クラスター ノードのホスト VM の IP のためのものです。プライベート サブネットは、ノードにデプロイされる Databricks ランタイム コンテナー の IP のためのものです。但し、SCC が有効化されていると両方がプライベート サブネットになります。
各サブネットは事前に作成する必要がなく、サブネット名や CIDR 範囲を入力しておけば自動で作成されます。
2. パブリック アクセス
コントロール プレーンへのパブリック アクセスを許可するかどうかの設定です。無効の場合には、プライベート エンドポイント経由での接続が必要となります。
3. NSG ルール
1 で指定したサブネットに自動で付与される NSG のアウトバウンドに、データ プレーンからコントロール プレーンにパブリック アクセスするためのルールを追加するかどうかの設定です。
4. プライベート エンドポイント
Databricks には 2 つのサブリソースのプライベート エンドポイントが存在します。これらはワークスペース作成後も追加できますが、ワークスペース作成時の画面で追加できるものは databricks_ui_api
に限ります。
サブリソース名 | 用途 | FQDN |
---|---|---|
databricks_ui_api |
Databricks コントロール プレーンへの接続 | adb-XXXXXXXXXXXX.XX.azuredatabricks.net |
browser_authentication |
Azure AD の SSO ログインのコールバック (プライベート エンドポイント経由でワークスペースにブラウザ接続するときのみ発生) | <region>.pl-auth.azuredatabricks.net |
データ プレーンからインターネットへの接続方式
SCC と VNet Injection の有無によってデータ プレーンからインターネットに接続するときの方式が異なります。これらについて説明していきます。
SCC 無効 + VNet Injection 無効
VM に付与された Public IP を用いてインターネットにアクセスします。クラスターを停止すると VM および Public IP は削除されるため、IP 固定化は保証されません。
SCC 有効 + VNet Injection 無効
自動で作成された NAT Gateway を用いてインターネットにアクセスします。NAT Gateway のパブリック IP で外部アクセスすることになるため、アクセス元 IP が固定となります。
SCC 無効 + VNet Injection 有効
VM に付与された Public IP を用いてインターネットにアクセスします。SCC 無効 + VNet Injection 無効のとき同様、クラスターを停止すると VM および Public IP は削除されるため、IP 固定化は保証されません。
SCC 有効 + VNet Injection 有効
デフォルトでは Azure 既定の SNAT でインターネットにアクセスします。
VM がデプロイされている Azure リージョンで使用されるグローバル IP アドレスのうち、未使用なものがランダムに割り当てられます。そのため、VM を再起動するとIP アドレスは変動する可能性があります。
IP を固定化したい場合には Load Balancer、NAT Gateway、Firewall などを利用することが推奨されます。
データ プレーンおよびユーザーからコントロール プレーンへの接続方式
データ プレーンおよびユーザーからコントロール プレーンへ接続する際の方式を説明します。
なお、SCC の設定に関わらず、データ プレーンからコントロール プレーンへの接続は公共インターネットを経由せず Microsoft のバックボーン ネットワークを経由するため、VNet Injection の有無にだけ着目して説明します。
VNet Injection 無効
データ プレーンおよびユーザーからコントロール プレーンにパブリック アクセスします。
VNet Injection 有効
パブリック アクセスと NSG ルールの設定によって構成が変わります。全ての組み合わせについて説明します。
パブリック アクセス有効 + NSG ルール有効
データ プレーンおよびユーザーからコントロール プレーンにパブリック アクセスします。
パブリック アクセス有効 + NSG ルール無効
データ プレーンからコントロール プレーンにパブリック アクセスするための NSG ルールが存在しないため、プライベート エンドポイントが必要になります。
パブリック アクセス無効 + NSG ルール有効
この組み合わせは設定不可です。
パブリック アクセス無効 + NSG ルール無効
データ プレーンおよびユーザーから プライベート エンドポイントを経由してコントロール プレーンにアクセスします。
databricks_ui_api
のプライベート エンドポイントを経由してワークスペースにブラウザ アクセスするときのみ、<region>.pl-auth.azuredatabricks.net
への通信が発生します。このエンドポイントにパブリック アクセスしてもよいですが、下図では browser_authentication
のプライベート エンドポイント経由でアクセスしています。
おわりに
Azure Databricks ワークスペース作成時に選択できる 2 つのネットワーク設定について説明しました。
Databricks コントロール プレーンへのパブリック アクセスを許可している場合でも、IP アクセス リストの機能を使用すればアクセス元の IP アドレスで制限をかけることができます。
参考