1.概要

皆さん、こんにちは。
データの保護を考える上で必要な項目として、Databricksワークスペース内でプライベートリンクを展開することが挙げられます。
プライベートリンクを展開しないと、Databricksワークスペース上のデータをインターネット経由で送信する場合にデータ漏洩のリスクが高まるからです。
以上のことから、Microsoftのネットワークバックボーン内でDatabricksワークスペースのデータ通信を行うために、プライベートリンクの利用が推奨されます。

また、Vnetインジェクションの利点の一つは、既存のファイアウォールを活用して、Azure Databricksワークスペースのデータの出入りを制御できることです。
これにより、DatabricksワークスペースとAzureファイアウォールを統合することができます。

DatabricksワークスペースとAzureファイアウォールを統合する手順は以下の通りです。
①Azure Databricksワークスペースの入出力トラフィックがファイアウォールによってフィルタリングされるように、ルーティングテーブルを作成し割り当てます。
②ファイアウォール側で、Azure Databricksワークスペースに必要なトラフィックを制限するためのルールを追加します。
③Azure Databricksワークスペースのコントロールプレーンの接続がファイアウォールによって制限されないように、ルーティングテーブルを作成し割り当てます。

以上が、DatabricksワークスペースとAzureファイアウォールを統合するための手順です。

 

2.システム図

3.Databricksワークスペースを作成します

3.1. 前提条件

・ユーザーのロールが所有者であること
・DatabricksワークスペースがPremiumレベルであること。
・Azure DatabricksワークスペースでVnetインジェクションを実施できること。

本書では、以下のDatabricksワークスペースのサブネットを使用します。

・dtbrick-public-sn: 10.3.2.0/25
・dtbrick-private-sn: 10.3.2.128/25
・private-link-sn: 10.3.3.0/27

3.2.UDRを作成します

 

Databricksワークスペースのデプロイ時に、コントロールプレンへの接続が必要なので、UDRとファイアウォールのルールを優先で作成します。

ファイアウォールではなく、インターネット経由での接続は以下の通りです。

・Control plane

・Webapp

・SCC relay (Secure Cluster Connectivityが有効場合)

・External infrastructure

上記サービスのIP Addressは以下リンクにあります。各リージョンに別IP Addressがあるので、注意してください。

https://learn.microsoft.com/en-us/azure/databricks/resources/supported-regions#–control-plane-nat-webapp-and-extended-infrastructure-ip-addresses-and-domains

記事にCentral USリージョンを選択します。

3.3.ファイアウォールにルールを追加します。

・Metastore はMysqlであり、ワークスペースのメタデータを保存するように使用されます。そこで、IPアドレスを使う場合は、ポート3306を開く必要があります。

・Artifact Blob Storage のFQDN

・Log Blob Storage はストレージアカウントであり、クラスタのログを保存するように使用されます。

・Event Hub endpoint はログを配布するように使用されます。これは、基本的にKafkaなので、IPアドレスを使う場合は、ポート9093を開く必要があります。

・Azure Databricks ワークスペースのFQDN

インターネットへの必要な接続もあります。

・Databricksのサービス。例えば:account console

・Ubuntu Package

・Ubuntu Snap Package

・Python package

Databricksワークスペースにログインするために、Auzre ADアカウントが必要です。さらに、Auzre ADのSSOサービスURLを追加する必要があります。

参考リンク:https://learn.microsoft.com/en-us/azure/azure-portal/azure-portal-safelist-urls?tabs=public-cloud

URLリストは以下です

login.microsoftonline.com
*.aadcdn.msftauth.net
*.aadcdn.msftauthimages.net
*.aadcdn.msauthimages.net
*.logincdn.msftauth.net
*.login.live.com
*.msauth.net
*.aadcdn.microsoftonline-p.com
*.microsoftonline-p.com

 

3.4.ワークスペースを作成する

注意:
Premiumレベルを選択します。

ネットワーク設定
・「Secure cluster connectivityによるAzure Databricks ワークスペースのデプロイ(パブリックIPなし)」を有効にします。
・「自分の仮想ネットワーク(VNet)にAzure Databricks ワークスペースをデプロイします」を有効にします。
・「公開ネットワークアクセスが許可する」を無効にします。

他の設定は既定通りに設定します。

Databricksワークスペースのデプロイが成功した後、Databricks のDBFS root Storage IPをUDRに追加します。

「databricks-<databrick_name>-<random_id>」リソースグループに移動します。本書では、Databircksの名が「demo-dtbricks-fw」なので、対象のリソースグループ名を「databricks-rg-demo-dtbricks-fw-<random-id>」にします。

以下二つDomain nameのIP Addressを探します。

<storage-account-name>.blob.core.windows.net

<storage-account-name>.dfs.core.windows.net

ルートテーブルにIPアドレスを追加します。

 

3.5.Private linkを作成します。

基準構成では少なくとも2つプライベートリンクが必要です。

・ browser-auth private link: Azure Active Directory SSOサービス 経由でアカウントを認証します。

・ ui-api private link: トランジットVnetからメインワークスペースのコントロールプレンのウェブへ接続します。または、データプレンからメインワークスペースコントロールプレンへ接続します。

動作は以下の通りです。

システムの動作フローは以下のようになります。

Client VMのウェブブラウザでDatabricksワークスペースのURLへアクセスする → DatabricksワークスペースのコントロールプレンはAzure AD SSOのコールバックURLを呼び出す → ユーザー認証が成功したら、アクセストーケンを取得する → アクセストーケンでコントロールプレンのウェブにアクセスする → コントロールプレンウェブでデータプレンのクラスタをコントロールする

 

 

3.5.1. ui-apiプライベートリンクを作成します。

注意:該当のワークスペースを選択して、対象サブリソースにdatabricks_ui_apiを選択します。

 

 

3.5.2. browser_authenticationのプライベートリンクを作成します。

Azure AD SSOサービスのコールバック専用のDatabricksワークスペースを別途作成し、そのワークスペースに対してプライベートエンドポイントを作成する事を推奨します(※)。

※ブラウザー認証プライベート エンドポイントはDatabricksのリージョン毎で共有される仕様で、プライベートエンドポイントをホストするワークスペースが削除された場合に依存する他のワークスペースのWeb認証が中断されてしまうため

参考リンク:https://learn.microsoft.com/ja-jp/azure/databricks/administration-guide/cloud-configurations/azure/private-link-standard#–step-4-create-a-private-endpoint-to-support-sso-required-for-ui-access

プライベート Web 認証ワークスペースが何かに使用されることはありません。たとえば、ジョブやその他のワークロードの実行には使用しません。

以下の通りで2つのサブネットを作成します。

・web-auth-public-subnet:  10.5.1.0/24

・web-auth-private-subnet: 10.5.2.0/24

ネットワークの設定は以下の通りです。

browser_authenticationプライベートリンクをデプロイします。

 

注意:該当のワークスペースを選択して、対象サブリソースでbrowser_authenticationを選択します。

ワークスペースのデプロイが成功した場合は、DNSゾーンに以下のDNSレコードが登録されます。

3.5.3. DNSプライベートゾーンを更新する

オンプレミスネットワークからプライベートリンクが使用できるように、オンプレミスのDNSサーバーにプライベートリンクのDNSレコードを追加します。

オンプレミスとしてAzure仮想ネットワークを追加したので、オンプレミスのVnetにDNSプライベートゾーンをリンクさせます。

データプレンからプライベートリンクが使用できるように、データプレンVnetにDNSゾーンをリンクさせます。

メインワークスペースへのアクセスができるかを確認します。

メインワークスペースへのアクセス禁止を確認します。

Client PCからDatabricksワークスペースへのアクセスできることを確認します。

クラスタの接続ができることを確認します。

データにアクセスできることを確認します。

 

 

5.まとめ

Firewallの設定とUDRの設定について、以下の通りまとめます。

UDRに以下IPアドレスを追加する。

リージョンの該当IPアドレスは以下のリンクをご参照ください。

https://learn.microsoft.com/en-us/azure/databricks/resources/supported-regions#–control-plane-nat-webapp-and-extended-infrastructure-ip-addresses-and-domains

 

source アドレスプレフィックス ネクストホップの種類
default SCC リレー IP (SCC が有効の場合) Internet
default Webapp IP Internet
default DBFSルートストレージIP Internet
default 拡張インフラストラクチャIP Internet

Firewallにdatabricks URLの許可を追加する

source 宛先
* メタストアFQDN
* ログBlobストレージFQDN
* アーティファクトBlobストレージFQDN
* イベントハブFQDN
* *.azuredatabricks.net

他のURLが必要例えば:

source 宛先
* *.ubuntu.com
* *.snapcraft.io
* pypi.org, pypi.python.org

FirewallにAzure portal authentication URLの許可を追加します。

login.microsoftonline.com
*.aadcdn.msftauth.net
*.aadcdn.msftauthimages.net
*.aadcdn.msauthimages.net
*.logincdn.msftauth.net
*.login.live.com
*.msauth.net
*.aadcdn.microsoftonline-p.com
*.microsoftonline-p.com

 

今回の記事が少しでも皆さんの新しい知識や業務のご参考になれば幸いです。

日商エレクトロニクスでは、Azure Databricksの環境構築パッケージを用意しています。
Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたら
是非お問い合わせください!

Azure Databricks連載記事のまとめはこちら

お問い合わせはこちら


この記事を読んだ方へのオススメコンテンツはこちら