1.はじめに

皆さんこんにちは。
ビッグデータ処理フレームワークでセキュリティは非常に重要です。
なかでもファイアウォールはセキュリティを確保するために最も優れた選択肢です。
ただ、システムが1か月に数回しかデータ分析を行わない場合、Azure Firewallを導入するのは非効率です。
そこで今回は、NSG(Network Security Group)とプライベートリンクを使用してDatabricksワークスペースを保護する方法を紹介します。NSGにより、中小規模のシステムにおいてもコストを節約しつつ、データのセキュリティを確保することができます。Databricksワークスペースのサブネットには特定のNSGが用意されています。この指定されたNSGにルールを追加することで、データプレーンの入出力トラフィックを制御することができます。

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. Databricksワークスペースを作成する

注意:
DatabricksワークスペースのレベルはPremiumです。

ネットワーク設定

・Secure Cluster Connectivityを設定します。

・Vnetインジェクションを設定します。

・公開ネットワークアクセスを許可しません。

3.3. Private linkを作成します。

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

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

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

動作は以下の通りです。

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

3.3.1. ui-api プライベートリンクを作成する

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

3.3.2. Azure Active Directory SSOのプライベートエンドポイントを作成します

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.3.3. DNSプライベートゾーンを更新する

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

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

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

4.NSG規則を追加します。

Databricksワークスペースのデプロイが成功した時に、パブリックサブネットとプライベートサブネットの両方が同じ NSG を共有します。

NSGで不要な入出力トラフィックが制御できます。本書では、インターネットへのアウトバウンドをブロックします。


メインワークスペースを確認します。
パブリックからワークスペースへアクセスできないことが確認できます。

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

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

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

インターネットアウトバウンドが拒否されたので、インターネット経由でのPythonライブラリがインストールできません。

インターネットアウトバウンドを禁止したので、Client PCからインストールファイルをアップロードして、Python packageをインストールします。


5.まとめ

プライベートリンクを利用して、インターネットへのアウトバウンド通信を遮断し、データ プレーンの入出力トラフィックを常に Microsoft ネットワークバックボーン内に維持します。また、NSGを使用してデータプレーンの出入トラフィックを管理することができます。NSGを導入することでシステムコストを削減できますが、NSGの規則がIPアドレスに基づいているため、大規模なシステムの管理は難しい面もあります。

 

今回の記事が少しでもDatabricksを知るきっかけや、業務のご参考になれば幸いです。

日商エレクトロニクスでは、Azure Databricksの環境構築パッケージを用意しています。

Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたらぜひお問い合わせください!

・Azure Databricks連載シリーズはこちら

お問い合わせはこちら


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