Enterprise Cloud Service Public Preview on AWS - Enterprise Security 編についてまとめて和訳してみた②-1

##はじめに
今回は、2020年6月12日に Vinay Wagh 氏と Abhinav Garg 氏によって投稿されました「 Enterprise Cloud Service Public Preview on AWS 」で紹介されている Enterprise Security の1つである「 Customer-managed VPC 」に関する内容を翻訳し、まとめてみました。

本記事のリンクは下記参照。
■リンク
 ・[Customer-managed VPC](https://docs.databricks.com/administration-guide/cloud-configurations/aws/customer-managed-vpc.html?_ga=2.204516822.738069964.1597114401-249388490.1574239857)
・[Enterprise Cloud Service Public Preview on AWS](https://databricks.com/jp/blog/2020/06/12/enterprise-cloud-service-public-preview-on-aws.html)


##エンタープライズセキュリティ
今回の AWS 上での Databricks のエンタープライズクラウドサービスにおけるエンタープライズセキュリティの主な内容は以下の4つです。
今回は、この5つの内の「②顧客管理VPC」の VPC の構成について、紹介したいと思います。

■エンタープライズセキュリティ
①Data Lake の真のポテンシャルを妨げないセキュリティ
②顧客管理VPC
③セキュアなクラスター接続
④Notebook の為の顧客管理キー
⑤IAM 証明パススルー

##顧客管理VPC
###概要
ワークスペースクラスタは Databricks がユーザの AWS アカウント内に作成、および構成する単一の AWS VPC（仮想プライベートクラウド）内に作成されます。ユーザは顧客管理 VPC と呼ばれる VPC を、 Databricks ワークスペースに作成でき、インフラストラクチャの制御、ユーザの所属する組織が求めるクラウドセキュリティとガバナンススタンダードに準拠することができます。

顧客管理 VPC は、以下の様な場合に最適なソリューションです。

- PaaS プロバイダが AWS アカウント上に VPC を作成できないよう、情報セキュリティポリシが存在
- 社内の情報セキュリティチームやクラウドエンジニアリングチームによって、十分に文書化された方法で VPC を構成し、セキュリティを確保した上で新しいVPCを作成する承認プロセスが存在

以下のメリットが挙げられます。

- 低い特権レベル
 - 自分のAWSアカウントをより制御可能
 - クロスアカウント IAM ロール役割を介して多くの権限をDatabricksに付与する必要はありません。たとえば、VPCを作成するためのアクセス許可は必要ありません。この制限された権限のセットにより、プラットフォームスタックでDatabricksを使用するための承認を簡単に得ることができます。

- 簡素化されたネットワーク操作
 - ネットワークスペースの使用効率が向上
 - オプションで、CIDR/16 と比較して、ワークスペースの小さいサブネットを構成
 - 他のソリューションで必要になる可能性のある複雑な VPC ピアリング構成は不要

- VPCの統合
 - 複数のDatabricksワークスペースで単一のデータプレーンVPCを共有可能

- 発信接続の制限
 - データプレーンは Databricks ランタイムワーカからの発信接続を制限しない
 - お客様が管理する VPC を使用するよう構成されているワークスペースの場合、下りファイアウォールまたはプロキシアプライアンスを使用して、送信トラフィックを許可された内部、外部データソースのリストに制限可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321349/822fa9f1-643b-474f-b85b-fcd03f4b958a.png)

###自分の VPC を利用するためのワークスペースの構成
VPC にワークスペースを構築するには、以下を実行する必要があります。

1. VPC 要件に従い VPC を作成
2. マルチワークスペースAPIを使用してワークスペースを作成するときに、VPC ネットワーク構成を Databricks に登録
3. カスタマ管理 VPC を構成する（オプション）を参照

登録時に、VPC ID、サブネットID、セキュリティグループIDを提供する必要があります。

###VPC の要件
Databricks ワークスペースをホストするには、以下の項目の要件を満たす必要があります。

####VPC のサイジング
1つの AWS アカウントで、1つの VPC を複数のワークスペースと共有できますが、ワークスペース間でサブネット、セキュリティグループの再利用はできません。それに応じて VPC とサブネットのサイズの設定が必要となります。
Databricks はノードごとに管理トラフィック用と Apache Spark アプリケーション用に2つの IP アドレスを割り当てます。
各サブネットのインスタンスの総数は、使用可能な IP アドレスの数の半分に相当します。
####DNS
VPC で DNS ホスト名と DNS 解決が有効になっている必要があります

####サブネット
Databricks は、ワークスペースごとに最低2つのサブネットにアクセスできる必要があります。
各サブネットは異なるアベイラビリティーゾーンにおき、ネットワーク構成の作成 API 呼び出しでは、アベイラビリティーゾーンごとに複数の Databricks ワークスペースサブネットの指定はできません。
ネットワーク設定の一部として、アベイラビリティーゾーンごとに複数のサブネットを設定できますが、Databricks ワークスペースのアベイラビリティーゾーンごとに1つのサブネットしか選択できません。
各サブネットは/17と/25 の間にネットマスクを持っている必要があります。

####セキュアなクラスタ接続のための追加要件
Databricks ワークスペースにセキュアクラスタ接続（パブリック IP または NPIP と呼ばれる）を使用する場合：

- サブネットはプライベートであること
- サブネットは、NAT ゲートウェイとインターネットゲートウェイ、またはその他の同様の顧客管理アプライアンスインフラストラクチャを使用して、パブリックネットワークへのアウトバウンドアクセスができること
- NAT ゲートウェイは、クワッドゼロ（0.0.0.0.0/0）トラフィックをインターネットゲートウェイ、または他の顧客管理アプライアンスインフラストラクチャにルーティングする独自のサブネットにセットアップすること

####サブネットルートテーブル
ワークスペースのサブネットルートテーブルは、適切なネットワークデバイスをターゲットとするクワッドゼロ（0.0.0.0.0/0）のトラフィックが必要です。

- 安全なクラスタ接続の場合：クワッドゼロトラフィックは NAT ゲートウェイをターゲットにすること
- 安全なクラスタ接続がないワークスペースの場合：クワッドゼロのトラフィックは、インターネットゲートウェイを直接ターゲットにすること

####セキュリティグループ
Databricksは、少なくとも1つの AWS セキュリティグループにアクセスでき、5つ以下のセキュリティグループにアクセスできる必要があります。新しいセキュリティグループを作成せずとも既存のセキュリティグループを再利用することができます。

セキュリティグループは以下の設定が必要です。

- 出口（アウトバウンド）：全て許可
- 入口（インバウンド）：全てのワークスペースに下記のルールが必要（これらは個別のルールでも、1つのルールに結合することも可能）
 - トラフィックソースが同じセキュリティグループを使用する場合、全ポートで TCP を許可
 - トラフィックソースが同じセキュリティグループを使用する場合、全ポートで UDP を許可

安全なクラスター接続を使用していない場合でも、下記の設定は必要です。

- ポート22および5557で Databricks コントロールプレーン IP アドレスからのすべての TCP を許可
 - ワークスペースデータプレーン（VPC）リージョンus-west-2とus-west-1：
     - 52.27.216.188/32：コントロールプレーン NAT インスタンス
     - 52.35.116.98/32：レガシー NAT インスタンス
     - 52.88.31.94/32：レガシー NAT インスタンス
 - ワークスペースデータプレーン（VPC）リージョンus-east-1：
     - 54.156.226.103/32：コントロールプレーンNATインスタンス
   - ワークスペースデータプレーン（VPC）リージョンus-east-2：
     - 18.221.200.169/32：コントロールプレーンNATインスタンス

####サブネットレベルのネットワーク ACL
サブネットレベルのネットワーク ACL は、トラフィックへの入出力を拒否しないでください。Databricks は、ワークスペース作成中に次のルールを検証します。

- 0.0.0.0/0 ソースからは全て許可
- 0.0.0.0/0 へ全て許可

####ファイアウォールアプライアンスインフラストラクチャ（セキュアなクラスタ接続限定）
セキュアなクラスタ接続を使用している場合は、イグレスファイアウォール、またはプロキシアプライアンスを使用してほとんどのトラフィックをブロックする必要がありますが、Databricks が接続する必要のある URL は許可する必要があります。

- ファイアウォール、またはプロキシアプライアンスが Databricks ワークスペース VPC と同じ VPC にある場合は、トラフィックをルーティングし、次の接続を許可するように設定
- ファイアウォール、またはプロキシアプライアンスが別の VPC またはオンプレミスネットワークにある場合、最初に 0.0.0.0.0/0 をその VPC またはネットワークにルーティングし、プロキシアプライアンスが以下の接続を許可するように設定

許可する設定内容：

- Databricks Webアプリケーション
- Databricks セキュアクラスター接続（SCC）リレー
- AWS S3 グローバルURL
- AWS S3 リージョンURL（任意で設定）
- AWS STS グローバルURL
- AWS STS リージョナルURL
- AWS Kinesis リージョナルURL
- テーブルメタストア RDS リージョナルURL（データプレーンリージョン別）


##おわりに
Customer-managed VPC に関する内容の翻訳は以上です。
詳細な内容については、本記事をご参照ください。