ワークスペース ストレージ アカウントのファイアウォール サポートを有効にする
各 Azure Databricks ワークスペースには、管理対象リソース グループにワークスペース ストレージ アカウントと呼ばれる Azure ストレージ アカウントが関連付けられています。 ワークスペース ストレージ アカウントには、ワークスペース システム データ (ジョブ出力、システム設定、ログ)、DBFS ルート、場合によってはUnity Catalog ワークスペース カタログが含まれます。 この記事では、ARM (Azure Resource Manager) テンプレートを使用して、承認されたリソースとネットワークからのみワークスペース ストレージ アカウントへのアクセスを制限する方法について説明します。
ワークスペース ストレージ アカウントのファイアウォールサポートとは
既定では、ワークスペース ストレージ アカウントの Azure ストレージ アカウントは、すべてのネットワークからの認証済み接続を受け入れます。 ワークスペース ストレージ アカウントのファイアウォール サポートを有効にすることで、このアクセスを制限できます。 これにより、パブリック ネットワーク アクセスが禁止され、承認されていないネットワークからワークスペース ストレージ アカウントにアクセスできなくなります。 ストレージ アカウントがプライベートであることを保証する Azure ポリシーが組織にある場合は、これを構成することをおすすめします。
ワークスペース ストレージ アカウントのファイアウォールサポートが有効になっている場合、Azure Databricks 外のサービスからのすべてのアクセスは、Private Link で承認済みのプライベート エンドポイントを使用する必要があります。 Azure Databricks は、Azure マネージド ID を使用してストレージに接続するためのアクセス コネクタを作成します。 Azure Databricks サーバーレス コンピューティングからのアクセスには、サービス エンドポイントまたはプライベート エンドポイントのいずれかを使用する必要があります。
要件
ワークスペースで、従来のコンピューティング プレーンからの接続に対して VNet インジェクションを有効にする必要があります。
新しいワークスペースを作成する場合は、「仮想ネットワークの要件」の手順に従って、仮想ネットワークと 2 つのサブネットを作成します。
ワークスペースで、従来のコンピューティング プレーンからの接続に対して安全なクラスター接続 (パブリック IP/NPIP なし) を有効にする必要があります。
ワークスペースは Premium プランに配置されている必要があります。
ストレージ アカウントのプライベート エンドポイント用に個別のサブネットが必要です。 これは、基本的な Azure Databricks 機能の主な 2 つのサブネットに加えて行われます。
サブネットは、ワークスペースと同じ VNet 内、またはワークスペースがアクセスできる別の VNet 内にある必要があります。 最小サイズの
/28
を CIDR 表記で使用します。Microsoft Fabric Power BI サービスで Cloud Fetch を使用している場合は、ワークスペース ストレージ アカウントへのプライベート アクセスに常にゲートウェイを使用するか、Cloud Fetch を無効にする必要があります。 「手順 2 (推奨): Cloud Fetch クライアント VNet のプライベート エンドポイントを構成する」を参照してください。
手順 1: ストレージ アカウントへのプライベート エンドポイントを作成する
ターゲット サブリソースの値 (dfs
と blob
) の VNet インジェクションに使用した VNet からワークスペース ストレージ アカウントへの 2 つのプライベート エンドポイントを作成します。
Azure portal でワークスペースに移動します。
Essentials で、管理対象リソース グループの名前をクリックします。
[リソース] で、
dbstorage
で始まる名前を持つストレージ アカウントの種類のリソースをクリックします。サイドバーで [ネットワーク] をクリックします。
[プライベート エンドポイント接続] をクリックします。
[+ プライベート エンドポイント] をクリックします.
[リソース グループ名] フィールドで、リソース グループを設定します。 これは、ワークスペース ストレージ アカウントが存在する管理対象リソース グループと同じにすることはできません。
[名前] フィールドに、このプライベート エンドポイントの一意の名前を入力します。
- ソース ネットワークごとに作成する最初のプライベート エンドポイントに対して、DFS エンドポイントを作成します。 Databricks では、サフィックス
-dfs-pe
を追加することをおすすめします - ソース ネットワークごとに作成する 2 番目のプライベート エンドポイントに対して、BLOB エンドポイントを作成します。 Databricks では、サフィックス
-blob-pe
を追加することをおすすめします
ネットワーク インターフェイス名フィールドが自動的に設定されます。
- ソース ネットワークごとに作成する最初のプライベート エンドポイントに対して、DFS エンドポイントを作成します。 Databricks では、サフィックス
リージョン フィールドをワークスペースのリージョンに設定します。
次へ をクリックします。
ターゲット サブリソースで、ターゲット リソースの種類をクリックします。
- ソース ネットワークごとに作成する最初のプライベート エンドポイントに対して、これを dfs に設定します。
- ソース ネットワークごとに作成する 2 番目のプライベート エンドポイントに対して、これを BLOB に設定します。
[仮想ネットワーク] フィールドで、VNet を選択します。
[サブネット] フィールドで、ストレージ アカウントのプライベート エンドポイントに対して持っている別のサブネットにサブネットを設定します。
このフィールドにはプライベート エンドポイントのサブネットが自動的に設定される場合がありますが、明示的に設定する必要がある場合があります。 基本的な Azure Databricks ワークスペース機能 (通常は
private-subnet
とpublic-subnet
と呼ばれます) に使用される 2 つのワークスペース サブネットのいずれかを使用することはできません。次へ をクリックします。 [DNS] タブには、以前に選択した適切なサブスクリプションとリソース グループが自動的に設定されます。 必要に応じて変更します。
[次へ] をクリックし、必要に応じてタグを追加します。
[次へ] をクリックし、フィールドを確認します。
Create をクリックしてください。
ワークスペース ストレージ アカウントのファイアウォールのサポートを無効にするには、上記と同じプロセスを使用しますが、パラメーター Storage Account Firewall (テンプレートのstorageAccountFirewall
) を Disabled
に設定し、ワークスペースで Unity Catalog ワークスペース カタログを使用するかどうかに基づいて、Workspace Catalog Enabled
フィールドを true
または false
に設定します。 Azure Databricks のカタログの説明を参照してください。
手順 2 (推奨): Cloud Fetch クライアント VNet のプライベート エンドポイントを構成する
Cloud Fetch は、ODBC と JDBC のメカニズムで、クラウド ストレージを介してデータを並列にフェッチして、データをより高速に BI ツールに取り込みます。 BI ツールから 1 MB を超えるクエリ結果をフェッチしている場合は、Cloud Fetch を使用している可能性があります。
Note
Azure Databricks で Microsoft Fabric Power BI サービスを使用している場合は、この機能によって Fabric Power BI からワークスペース ストレージ アカウントへの直接アクセスがブロックされるため、Cloud Fetch を無効にする必要があります。 あるいは、仮想ネットワーク データ ゲートウェイまたはオンプレミス データ ゲートウェイを構成して、ワークスペース ストレージ アカウントへのプライベート アクセスを許可することもできます。 これは Power BI Desktop には適用されません。 Cloud Fetch を無効にするには、構成 EnableQueryResultDownload=0
を使用します。
Cloud Fetch を使用する場合は、Cloud Fetch クライアントの任意の VNet からワークスペース ストレージ アカウントへのプライベート エンドポイントを作成します。
Cloud Fetch クライアントのソース ネットワークごとに、dfs
と blob
の 2 つの異なる ターゲット サブリソース値を使用する 2 つのプライベート エンドポイントを作成します。 詳細な手順については、「手順 1: ストレージ アカウントへのプライベート エンドポイントを作成する」を参照してください。 これらの手順では、プライベート エンドポイントの作成時に [仮想ネットワーク] フィールドに対して、クラウド フェッチ クライアントごとにソース VNet を指定してください。
手順 3: エンドポイントの承認を確認する
ストレージ アカウントに対するすべてのプライベート エンドポイントを作成したら、それらが承認されているかどうかを確認します。 自動承認される場合もあれば、ストレージ アカウントで承認する必要がある場合もあります。
- Azure portal でワークスペースに移動します。
- Essentials で、管理対象リソース グループの名前をクリックします。
- [リソース] で、
dbstorage
で始まる名前を持つストレージ アカウントの種類のリソースをクリックします。 - サイドバーで [ネットワーク] をクリックします。
- [プライベート エンドポイント接続] をクリックします。
- 接続状態を確認して「承認済み」と表示されていることを確認するか、接続状態を選択して [承認] をクリックします。
手順 4: サーバーレス コンピューティング接続を承認する
ネットワーク接続構成 (NCC) をワークスペースにアタッチすることで、サーバーレス コンピューティングがワークスペース ストレージ アカウントに接続することを承認する必要があります。 NCC がワークスペースにアタッチされると、ネットワーク ルールはワークスペース ストレージ アカウントの Azure ストレージ アカウントに自動的に追加されます。 構成手順については、「サーバーレス コンピューティングのアクセス用にファイアウォールを構成する」を参照してください。
プライベート エンドポイントを使用して Azure Databricks サーバーレス コンピューティングからのアクセスを有効にする場合は、Azure Databricks アカウント チームにお問い合わせください。
手順 5: 必要な ARM テンプレートをデプロイする
この手順では、ARM テンプレートを使用して Azure Databricks ワークスペースを管理します。 Terraform を使用してワークスペースを更新または作成することもできます。 「azurerm_databricks_workspace Terraform プロバイダー」を参照してください。
Azure portal で、
Deploy a custom template
を検索して選択します。[エディターで独自のテンプレートをビルド] をクリックします。
ワークスペース ストレージ アカウントのファイアウォールサポート用の ARM テンプレートから ARM テンプレートをコピーし、エディターに貼り付けます。
[保存] をクリックします。
フィールドを確認および編集します。 サブスクリプション、リージョン、ワークスペース名、サブネット名、既存の VNet のリソース ID など、ワークスペースの作成に使用したのと同じパラメーターを使用します。
フィールドの説明については、ARM テンプレート フィールドを参照してください。
[確認と作成] をクリックして、[作成] をクリックします。
Note
プライベート エンドポイントを必要とせずにサーバーレス コンピューティング リソースをサポートするために、ワークスペース ストレージ アカウントのパブリック ネットワーク アクセスは、選択された仮想ネットワークとIPアドレスから有効に設定され、無効には設定されません。 ワークスペース ストレージ アカウントは管理対象リソース グループ内にあり、ストレージ ファイアウォールは、ワークスペースにサーバーレス接続用のネットワーク接続構成 (NCC) を追加する場合にのみ更新できます。 プライベート エンドポイントを使用して Azure Databricks サーバーレス コンピューティングからのアクセスを有効にする場合は、Azure Databricks アカウント チームにお問い合わせください。