【実験】Azure Databricksに管理された Vnetからプライベートエンドポイントに接続する

## はじめに

Databrikcs に管理されたVnetを利用することは、Vnet管理不要というメリットがあるが、この場合、ファイアウォールの背後のストレージにアクセスするためのサービスエンドポイントや、プライベートエンドポイントの設置といったことができません。

![](https://camo.qiitausercontent.com/d6bc0138768f48df01a63f2d1453cedc48da10a7/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3238313831392f61373165623133382d333733652d643737342d313338652d6538326363336130653961342e706e67)

引用：https://qiita.com/ryoma-nagata/items/66c48dd2a86956c0d00d

## ねらい

このような構成をすることでアクセスさせます。ネットワークの素人なので雰囲気です

![2023-03-03-14-47-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/8a60a4fc-c863-ec06-8328-9c38dbb48331.png)



## 手順

### 準備

以下を用意しておきます。

- Azure Databricks 
- Azure Data Lake Storage Gen 2 ※パブリックアクセス無効

![2023-03-03-14-50-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/e0e80458-1f22-2ca4-ad14-e5629f147a85.png)



### 1. ネットワークを構成する

1. [仮想ネットワークのピアリング](https://learn.microsoft.com/ja-jp/azure/databricks/administration-guide/cloud-configurations/azure/vnet-peering)に従って、構成します。


![2023-03-03-14-52-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/d022f4a2-11c7-3002-c0de-cd27089196fc.png)


![2023-03-03-14-51-42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/e4614e54-ea57-a636-ffdf-68b01c3dbbcb.png)



2.接続したvnet にプライベートエンドポイントを作成します。

参考：https://learn.microsoft.com/ja-jp/azure/storage/common/storage-private-endpoints#creating-a-private-endpoint


![2023-03-03-14-53-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/2f4452ed-c723-b351-0d4c-3cbae0ac707e.png)


3.プライベートDNSゾーンをリンクしていることを確認します。

![2023-03-03-14-53-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/318cfb77-9497-38ec-f7b1-7e015d5b7311.png)


また、DNSゾーンではデータレイクを示すAレコードの登録を確認します


![2023-03-03-14-54-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/5ea8e0f1-9505-3112-5f77-13a8993a617a.png)


4.Private DNS Resolver を作成します。

![2023-03-03-14-56-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c4fb61d8-fec8-f517-dade-6f7fc81f2c26.png)


5.受信エンドポイントを作成してIPを確認しておきます。

![2023-03-03-14-56-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c482140f-4b41-153a-b395-a463d3d97518.png)


### 2. Databricksのクラスター初期化スクリプトを構成し、アクセスを確認する

1. 適当なクラスターを作成し、アカウントキーを使用したアクセスを試してみます。

![2023-03-03-14-57-47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/6c00462f-ced0-42c3-577c-5aa3ea2ac163.png)


```python:pyspark

key = 'アカウントキー情報'

spark.conf.set("fs.azure.account.key.<ストレージ名>.dfs.core.windows.net",key)

dbutils.fs.ls("abfss://<コンテナ名>@<ストレージ名>.dfs.core.windows.net/")

```


アクセスはブロックされ、プライベートエンドポイントで名前解決ができていないことがわかります。

![2023-03-03-15-08-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/e59641e1-6b96-84ff-26a7-eae933f22cb9.png)



2.管理コンソールで Global Init scripts で **+追加**

![2023-03-03-15-10-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/989fb86a-1063-3f0a-fbe0-8a7c4e653711.png)


3.名前とコードを入力し **Enable** を確認して **Add** をクリック

```bash: dns setting

#!/bin/bash
mv /etc/resolv.conf /etc/resolv.conf.orig
echo nameserver <受信エンドポイントのIP> | sudo tee --append /etc/resolv.conf

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/179836e6-2952-f6dd-0451-ef55671f9b2a.png)

参考：https://learn.microsoft.com/ja-jp/azure/databricks/clusters/init-scripts

4.クラスターを再起動し、再度実行を確認します。

アクセスできました。

![2023-03-03-15-18-40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/8932d140-7a7f-10f4-9a0c-a7f6e21f8e88.png)


## 注意・課題

SQL ウェアハウスのDNS設定は現在不可能です