Databricksサーバレスのエグレスコントロールによるサーバレスネットワーク接続の管理

こちらのリリースです。

https://docs.databricks.com/en/release-notes/product/2024/december.html#manage-serverless-outbound-network-connections-with-serverless-egress-control

**サーバレスエグレスコントロールによるサーバレスの外向きネットワーク接続の管理**

> サーバレスエグレスコントロールによって、指定されたインターネットの接続先に対する外向きアクセスを制限することができます。[サーバレス エグレス コントロールとは](https://docs.databricks.com/ja/security/network/serverless-network-security/network-policies.html)をご覧ください。

この機能は、こちらの別のリリースとも関係しています。

https://docs.databricks.com/en/release-notes/product/2024/december.html#network-access-events-system-table-is-now-available-public-preview

**ネットワークアクセスイベントシステムテーブルが利用可能に(パブリックプレビュー)**

> Databricksシステムテーブルにネットワークアクセステーブルが追加されました。このテーブルは、あなたのアカウントでインターネットへのアクセスが拒否された際のイベントを記録します。このテーブルにアクセスするには、管理者が`access`システムスキーマへのアクセスを有効化する必要があります。[ネットワークアクセスイベント システムテーブル リファレンス](https://docs.databricks.com/ja/admin/system-tables/outbound-network.html)をご覧ください。

つまり、エグレスコントロールによってアクセスが拒否された際に、そのイベントがネットワークアクセスイベントシステムテーブルに記録されることになります。これによって、コントロールが適切に動作しているかどうかを確認、監視できるようになります。

カタログにアクセスすると、`system.access.outbound_network`が表示されます。アクセスできない場合には、有効化されているか、適切な権限があるかを確認してください。

![Screenshot 2024-12-12 at 15.18.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/569d667f-4979-b7b2-1021-4460218c9421.png)

# ネットワークポリシーによるサーバレスコンピュートのインターネット接続の制御

ここでは、ノートブック用のサーバレスで確認します。この時点ではインターネットにアクセスできます。

![Screenshot 2024-12-12 at 15.19.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d058ef45-8159-9294-baba-d1a7633e534e.png)

それでは、ネットワークポリシーでエグレス接続を制御してみます。[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインし、**クラウドリソース > ネットワーク**にアクセスし、**ネットワークポリシー**を確認します。フルアクセスになっています。

![Screenshot 2024-12-12 at 15.20.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/fca817ae-8c42-e1cf-2d95-3c1a8be7d590.png)

![Screenshot 2024-12-12 at 15.22.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8d950af2-0966-54c6-5636-19b4ec5cdfe4.png)

これを、**特定の宛先へのアクセス制限**に変更します。例外のアクセス先や、対象製品を限定することができますが、ここではデフォルトのままにしておきます。デフォルトでは、サーバレスSQLウェアハウスとモデルサービングは拒否イベントのログは記録しますが、アクセスは許可します。それ以外の製品ではすべてのインターネットをアクセスを拒否します。

![Screenshot 2024-12-12 at 15.23.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/a2ab682c-66e6-ec20-fcef-33faebe3fc7b.png)
![Screenshot 2024-12-12 at 15.25.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/4f3ebd6b-9322-620c-6faf-473721084e9b.png)

設定が反映されるまで数分待ってから、再度ノートブックを実行すると今度はアクセスが拒否されます。このようにして、サーバレスコンピュートからのインターネットアクセスをコントロールすることができます。

![Screenshot 2024-12-12 at 15.26.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/7b258432-859f-e573-2245-7937cef691e9.png)

:::note
**注意**
この機能は**サーバレス**用です。従来のクラシッククラスターからのアクセスコントロールには、[PrivateLink構成](https://docs.databricks.com/ja/security/network/classic/privatelink.html)を使用してください。
:::

# ネットワークアクセスイベント システムテーブルによるイベントの監視

そして、このようにしてポリシーを適用している場合、適切にアクセスがガード(拒否)されているのか、アクセス可能にすべきサイトへのアクセスをブロックしていないかを確認することが重要となります。そこで、[ネットワークアクセスイベント システムテーブル](https://docs.databricks.com/ja/admin/system-tables/outbound-network.html)の出番です。

テーブルに`system.access.outbound_network`では、アクセス拒否されたイベントを確認できます。

![Screenshot 2024-12-12 at 15.33.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/288cc6ef-d11e-4d60-b9e6-66c0addb7a72.png)

以下のようなクエリーで集計することも可能です。

```sql
SELECT
    destination_type, destination,
    COUNT(*) AS destination_count
FROM
    system.access.outbound_network
GROUP BY
    ALL;
```
![Screenshot 2024-12-12 at 15.34.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/de3bfaf1-0e6c-9a55-d08c-79626033cae8.png)

ご活用ください！

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)