Databricks on AWS - E2 Architecture 概要

この記事は株式会社ナレッジコミュニケーションが運営する Amazon AI by ナレコム Advent Calendar 2020 の 5日目のエントリーです！

# はじめに
AWS 上での Databricks 利用を検討する場合、とりあえず必要十分そうな機能をがそろってる Premium プランで契約、必要に応じて Enterprise プランにアップグレードすればいいかな、と考える方が多いのではないでしょうか？

> [Databricks on AWS pricing](https://databricks.com/jp/product/aws-pricing)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/8a020934-0043-6d95-3370-e05fa4f7d10d.png)

2020年9月に **E2 Architecture** というものがアナウンスされ、2020年11月末に日本リージョンでも GA されました。リソース管理の利便性やセキュリティ要件などに関する複数のオプションが用意されています。

Databricks on AWS を利用する場合、利用者の AWS リソース(= Control Plane) と Databricks の AWS リソース(= Data Plane) を接続する必要があります。E2 Architecture では後者の構成が随分違うようで、例えば Premium プランから E2 プランへのワークスペース移植には以下工程が発生します。**ワークスペースを維持したままの E2 へのアップグレードはできない**ので注意してください。(2020年12月7日現在)

- メタストアの移植 (スクリプトで実装)
- Permission の設定 (ユーザー数が少ないのであればマニュアルで実装)

よって、

- セキュアな環境構築は必須 and/or その必要性はイメージできる
- 最新機能を使いたい or 将来的に使いたい

という方は 最初から E2 プランを選択したほうが良いよ、というのが本項の趣旨です。
以下のウェビナーに分かりやすい概念図があったので整理しておきます。

[Features in the new architecture for the Databricks platform on AWS](https://pages.databricks.com/202009-AMER-WB-DeepdiveintotheNewE2Architecture_04.Live-Registration-page.html)


# これまでの Enterprise プラン
- 作れるワークスペースは1つのみ
    - プロジェクトごとにアクセス制限したい場合は逐一設定する必要
- ユーザー数、ジョブ数、クラスター数などに制限
- InfoSec の制限上、ネットワーク関連で利用制限
- ワークスペースへの IP アクセス制限ができない 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/8710a7b2-9b90-3973-6753-1393197ab836.png)

# E2 Architecture
以下は一部抜粋です。詳細はこちらを参照のほど。

[Databricks architecture overview](https://docs.databricks.com/getting-started/overview.html)

なお 2020年12月7日現在、

- E2 アカウント申請 
- Databricks 社で承認
- ワークスペース構築

の手順で進める必要があるので注意です。

## マルチアカウント
- マスターアカウント作って後はAPIで操作すれば、新しいワークスペースを数分で作れる
    - AWS 側のリソース (クロスアカウントロールやS3バケット) の構築は必要
    - [Create a new workspace using the acount API](https://docs.databricks.com/administration-guide/account-api/new-workspace.html)
- 中央集権的に複数ワークスペースを管理。費用もモニター
    - アカウントAPI でもろもろの情報取得可能
    - GUI での管理コンソールはこれから実装？
- ワークスペースにプレフィックス設定可能
    - プロジェクトごとの管理しやくなった
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/2df71fba-8101-f80a-932f-d598d7ef0ad2.png)


## ネットワーク
- アウトバウンドのみに制限可能
- ネットワーク管理が簡単に
- 情報セキュリティ認証が簡単に

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/5bc06aa0-66f1-5250-aa5b-9dbc4eece063.png)

- コンソールへのIP アクセス制限ができるように
- Databricks 内部からのアタックについてもロギング&トラッキング

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/e1af3c16-42a3-0041-2b9a-0c1c2984af54.png)

- 独自の VPC に Databricks ワークスペースを作成できるように
- Data Plane 側(ユーザー側 AWS リソース) での VPC Peering が簡単に
- 権限付与が細かい粒度で設定可能に

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/26fbfa95-a307-0c84-bfed-af83a1c73269.png)

- 閉域網の構築可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/d184df7f-bde7-b705-137a-935598a70ecb.png)

## 認証
- ワークスペース内オブジェクトへ付与できる権限のバリエーションの増加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/c10480d7-11ec-b57e-aca5-18a43e3350f8.png)


- トークンをいつだれが作ったか、といった情報も管理できるように

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/d1d58d3e-4f1a-a3cd-afae-ea73d07e9cf2.png)

- 一部のオプションのみに制限するような Cluster Policy を JSON で設定可能
- A さんはどんなスペックのクラスタでも作れるけど、B さんは XX DBU 以下のクラスタしか作れない、など

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/1dfa2cd3-9437-02ab-041f-cf2f64ddd3b1.png)

## データ保護
- 透過的な認証組めるようになった

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/22029b78-dae5-39a2-7708-de0639da4e50.png)


- メタストア (Databricks で保持されているメタデータ) の定義に応じてセキュリティレベルを設定可能に

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/41879427-a706-bee4-9624-26ecb744feae.png)

- 顧客管理キーの追加が可能に 
- Notebook などのオブジェクトに対するセキュリティを強化

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/fed86ba0-c2f4-c3a6-cb45-c00377060548.png)

- クラスターに対して、キーや認証の管理が不要に
- クラスタノード間でやり取りされるデータが暗号化
- すべてのノードがプライベートIPのみを持つクラスタを起動可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/35d7b4e1-ee62-bca1-04a8-dc93b266b763.png)

## セキュリティ
- 以下セキュリティポリシーに準拠
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/106bbf2a-5e4e-f56a-9c13-14836c0598fb.png)


# まとめ
E2 Architecture に用意されている機能は使ってくうちに必須要件になってくものが多い印象です。最新機能もここに盛り込まれていくでしょうから最初から E2 プランで進めたほうがよさそうです。