Enable AWS PrivateLink | Databricks on AWS [2022/8/22時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Databricksクイックスタートガイドのコンテンツです。
プレビュー
この機能はパブリックプレビューです。
この記事では、ユーザーとお使いのDatabricksワークスペース間、Databricksワークスペースのインフラストラクチャにおけるデータプレーンのクラスターとコントロールプレーンのコアサービス間で、プライベート接続を有効化するために、どのようにAWS PrivateLinkを活用するのかを説明します。
具体的な設定手順に関しては、以下を参照ください。
- DatabricksにおけるAWS PrivateLinkのフロントエンド接続の設定(実践編)
- [2024年版] DatabricksにおけるAWS PrivateLinkのバックエンド接続の設定(実践編)
重要!
この記事では、Databricksプラットフォームにおけるコンピュートレイヤーであるデータプレーンという単語に言及します。この記事の文脈においてデータプレーンは、お使いのAWSアカウントににおけるクラシックなデータプレーンを指します。一方、サーバーレスSQLウェアハウス(パブリックプレビュー)をサポートするサーバーレスデータプレーンは、DatabricksのAWSアカウントで動作します。詳細は、サーバーレスコンピュートを参照ください。
概要
AWS PrivateLinkを用いることで、公衆ネットワークを経由することなしに、AWS VPCやオンプレミスのネットワークからAWSサービスへのプライベート接続を実現することができます。E2バージョンプラットフォーム上のDatabricksワークスペースでは、以下の2つのタイプのPrivateLink接続をサポートしています。
- フロントエンド(ユーザーからワークスペース): フロントエンドPrivateLink接続によって、ユーザーはVPCインタフェースエンドポイント経由でDatabricksのwebアプリケーション、REST API、Databricks Connect APIに接続することができます。
- バックエンド(データプレーンからコントロールプレーン): 顧客管理VPCのDatabricksランタイムクラスター(データプレーン)は、DatabricksクラウドアカウントにあるDatabricksワークスペースのコアサービス(コントロールプレーン)に接続します。クラスターは2つの目的でコントロールプレーンに接続します:REST APIとセキュアクラスター接続のリレーです。このタイプのPrivateLinkでは、二つの異なるサービスを使用するため、二つの異なるVPCインタフェースエンドポイントが必要となります。
フロントエンド、バックエンドPrivateLink接続の両方を実装することもできますし、どちらか一方のみを実装することもできます。この記事では、どちらか一方、あるいは両方のPrivateLink接続タイプの設定方法を説明します。フロントエンドとバックエンドの接続に対してPrivateLinkの両方を実装した場合には、任意でワークスペースへのプライベート接続を強制することができ、この場合にはDatabricksは公衆ネットワーク経由の接続を拒否します。どちらかの接続タイプを実装しない場合には、この要件を強制することはできません。
PrivateLink接続を有効化するには、Databricks設定オブジェクトを作成し、既存の設定オブジェクトに新たなフィールドを追加する必要があります。
設定オブジェクトを作成し、ワークスペースを作成(更新)するために、本書ではアカウントコンソールやAccount APIの使用方法を説明します。
既存ワークスペースのPrivateLink構成へのアップデートはサポートされていますが、新規のプライベートアクセス設定オブジェクトでワークスペースをアップデートするために、アカウントコンソールやAccount APIを使用することはできません。既存ワークスペースに対してPrivateLink構成をセットアップするには、ネットワーク設定オブジェクトとプライベートアクセス設定オブジェクトを作成し、新たなネットワーク設定オブジェクトとプライベートアクセス設定オブジェクトを用いてワークスペースをアップデートするようにDatabricks担当にコンタクトしてください。
このプレビューリリースでは、PrivateLink構成でのUnity Catalogの利用はサポートされていません。
以下の表では、重要な用語を説明しています。
用語 | 説明 |
---|---|
AWS PrivateLink | 公衆ネットワークを経由せずに、AWS VPCやオンプレミスネットワークからAWSサービスにプライベート接続するためのAWSテクノロジーです。 |
フロントエンドPrivateLink | ユーザーからDatabricksウェブアプリケーション、REST API、Databricks Connect APIに接続するためのPrivateLink接続です。 |
バックエンドPrivateLink | お使いのAWSアカウントのデータプレーンからDatabricksコントロールプレーンに接続するためのPrivateLink接続です。 |
AWS VPCエンドポイントサービス | AWS VPCエンドポイントサービスは、PrivateLinkによって提供されるサービスです。それぞれのDatabricksのコントロールプレーン(多くの場合リージョンあたり一つ)はPrivateLinkのために2つのAWS VPCエンドポイントを公開しています。ワークスペースVPCエンドポイントサービスは、DatabricksフロントエンドPrivateLink接続、REST APIに対するDatabricksバックエンドPrivateLink接続の両方に適用されます。また、セキュアクラスター接続のリレーのために別のVPCエンドポイントサービスを公開します。 |
AWS VPCエンドポイント | AWS VPCインタフェースエンドポイントによって、お使いのVPCとAWS PrivateLinkによって提供されるVPCエンドポイント間のプライベート接続が可能となります。AWS VPCインタフェースエンドポイントを作成し、Account APIを用いてDatabricksに登録する必要があります。VPCエンドポイントを登録することで、VPCエンドポイントを参照するDatabricks固有のオブジェクトを作成します。 |
Databricksネットワーク設定 | 顧客管理VPCに関する重要な情報を記述するDatabricksオブジェクトです。PrivateLink接続(フロントエンド、あるいはバックエンド)を実装した際には、お使いのワークスペースでは顧客管理VPCを使用する必要があります。バックエンドのみをサポートするPrivateLinkにおいては、バックエンド接続のためのVPCエンドポイントを識別するための追加のプロパティが必要となります。 |
Databricksプライベートアクセス設定オブジェクト | ワークスペースのPrivateLink接続を記述するDatabricksオブジェクトです。ワークスペースの作成を行う際に、フロントエンド、バックエンド、あるいは両方を用いる際に、プライベートアクセス設定オブジェクトをワークスペースにアタッチする必要があります。これは、ワークスペースにおけるAWS PrivateLinkの使用法を表現します。公衆ネットワークのアクセスにおけるフロントエンドのAWS PrivateLinkのユースケースの設定をコントロールします。お使いのワークスペースにどのVPCエンドポイントの接続を許可するのかをコントロールします。 |
Databricksワークスペース設定オブジェクト | ワークスペースを記述するDatabricksオブジェクトです。PrivateLinkを有効化するためには、このオブジェクトがDatabricksプライベートアクセス設定オブジェクトを参照する必要があります。バックエンドPrivateLinkにおいては、どの登録VPCエンドポイントを使用するのかを指定する2つの追加フィールドを持つDatabricksネットワーク設定オブジェクトを指定する必要があります。1つはコントロールプレーンのセキュアクラスター接続リレーのためのものであり、もう一つはREST APIにアクセスするためにワークスペースに接続するためのものです。 |
以下の図では、典型的な実装におけるネットワークフローを示しています。
前提条件
Databricksアカウント:
- DatabricksアカウントはE2バージョンプラットフォームである必要があります。
- DatabricksアカウントはEnterprise pricing tierである必要があります。
- DatabricksアカウントIDが必要です。アカウントIDはアカウントコンソールで確認できます。
Databricksワークスペース:
- お使いのワークスペースは、E2バージョンのプラットフォームをサポートしているAWSリージョンにある必要があります。しかし、
us-west-1
リージョンではE2バージョンのプラットフォームであってもPrivateLinkをサポートしていません。 - (フロントエンド接続であったとしても)Databricksワークスペースでは、PrivateLink接続を追加するために顧客管理VPCを使用する必要があります。Databricks管理のVPCにある既存ワークスペースをアップデートすることはできず、顧客管理VPCに切り替える必要があることに注意してください。
- バックエンドのPrivateLink接続を実装する際には、Databricksワークスペースはセキュアクラスター接続を使用している必要がありますが、これはE2バージョンのプラットフォームで作成された新規ワークスペースではデフォルトとなっています。しかし、セキュアクラスター接続を使用していない既存ワークスペースにバックエンドPrivateLinkを追加する際には、Databricks担当にコンタクトいただきガイドを受けてください。
AWSアカウント権限:
- あなたがPrivateLinkを設定するのであれば、Databricksワークスペースを配備し、ワークスペースのための新規VPCエンドポイントを配備するのに必要なAWS権限を持っている必要があります。
ネットワークアーキテクチャ:
- オンプレミスのネットワークからワークスペースに対して、フロントエンドのPrivateLinkを実装する際には、PrivateLinkを設定する前に、Direct ConnectあるいはVPNを用いて当該ネットワークからAWSネットワークに対してプライベート接続を追加する必要があります。
- 他のネットワークオブジェクトのガイドに関しては、ステップ1: AWSネットワークオブジェクトを設定するをご覧ください。
ステップ1: AWSネットワークオブジェクトを設定する
これらのオブジェクトを作成するためにAWSマネジメントコンソールを使用するか、Terraform provider for networksのようなツールを用いてプロセスを自動化することができます。
VPC、サブネット、セキュリティグループを設定するには、以下の手順をふみます。
-
すでにお持ちでなければ、ワークスペース用のVPCをセットアップします。別のワークスペースのVPCを再利用することができますが、ワークスペースごとに別のサブネットを作成する必要があります。それぞれのワークスペースには少なくとも2つのプライベートサブネットが必要となります。
-
VPCの作成方法に関しては、顧客管理VPCをご覧ください。新規ワークスペースを作成するのではなく既存のワークスペースをPrivateLinkにアップデートする際には、対象のワークスペースが顧客管理VPCを使用していることを確認してください。
-
お使いのVPCで、DNSホスト名とDNS解決が有効になっていることを確認してください。
-
サブネットのネットワークACLには以下のポートで
0.0.0.0/0
への双方向の(アウトバウンドとインバウンドの)TCPアクセスを許可するルールが設定されれていることを確認してください。- 443: Databricksのインフラストラクチャ、クラウドデータソース、ライブラリリポジトリ向け
- 3306: メタストア向け
- 6666: PrivateLink向け
- 2443: コンプライアンスセキュリティプロファイルを使用している場合のみ
重要!
ワークスペースでcompliance security profileを使用している場合は、セキュアクラスター接続リレー用のFIPSエンドポイントをサポートするように、ポート2443に対する双方向の(アウトバウンドとインバウンドの)アクセスを許可する必要があります。
-
-
バックエンドPrivateLinkにおいて、
-
追加のVPCサブネットを作成し設定します(オプション):
- バックエンドPrivateLink VPCエンドポイントや他のAWSサービスに対するオプションのVPCエンドポイントなどお使いのVPCエンドポイントに対して、VPCエンドポイントにネットワークが疎通する限り、任意のワークスペースのサブネットの中にVPCエンドポイントを作成することができます。
- ワークスペースのサブネットにアタッチされるルートテーブルとは別のルートテーブルをVPCエンドポイントのサブネットのアタッチします。VPCエンドポイントのサブネットのルートテーブルにはローカルVPCへのデフォルトルートのみが必要となります。
-
追加のセキュリティグループを作成し設定します(必須):
- 通常のワークスペースに必要となるセキュリティグループの設定に加えて、ワークスペースのサブネット、作成している場合には別のVPCエンドポイントのサブネットから
HTTPS/443
とTCP/6666
のアウトバウンドアクセスのみを許可します。この設定によって、ワークスペースによるREST API(ポート443)へのアクセスとセキュアクラスター接続(ポート6666)のアクセスを許可します。これによって、両方の目的においてセキュリティグループの共有が容易になります。
重要!
ワークスペースでcompliance security profileを使用している場合は、セキュアクラスター接続リレー用のFIPSエンドポイントをサポートするように、ポート2443に対する双方向の(アウトバウンドとインバウンドの)アクセスを許可する必要があります。 - 通常のワークスペースに必要となるセキュリティグループの設定に加えて、ワークスペースのサブネット、作成している場合には別のVPCエンドポイントのサブネットから
-
-
フロントエンドPrivateLinkにおいて、
-
トランジットVPCとサブネットに関しては、ユーザー環境から到達可能なAWS VPCとサブネットを使用してください。お使いのAWS Direct ConnectあるいはVPNゲートウェイ接続をターミネートするトランジットVPC、あるいはお使いのトランジットVPCからルーティング可能なものを作成してください。
フロントエンドPrivateLinkとバックエンドPrivateLinkの両方を有効化した場合、ワークスペースのサブネットからVPCエンドポイントにネットワーク到達可能な場合、フロントエンドワークスペース(Webアプリケーション)VPCエンドポイントをバックエンドワークスペース(REST API)VPCエンドポイントと共有することができます。
-
エンドポイントに対して新たにセキュリティグループを作成してください。このセキュリティグループでは、ソースネットワークとエンドポイントサブネット両方に対して、外向きのHTTPS(443ポート)を許可する必要があります。
-
ステップ2: VPCエンドポイントを作成する
バックエンドVPCエンドポイント
バックエンドPrivateLinkにおいては、二つのVPCエンドポイントを作成します。一つがセキュアクラスター接続リレー向けのものです。もう一つが、データプレーンからDatabricks REST APIを呼び出せるようにするためのワークスペース向けのものです。AWSマネジメントコンソールによるVPCエンドポイントの管理に関する一般的なドキュメントについては、Create VPC endpoints in the AWS Management Consoleをご覧ください。AWSマネジメントコンソールページでVPCエンドポイントを作成する際、Enable DNS nameという追加の設定でフィールドを設定することが重要となります。用語が示すように、VPCエンドポイントを参照、編集する際に表示されるEnable Private DNSやEnable Private DNS on this endpointと同じフィールドとなります。
VPCエンドポイントの作成、管理を自動化するためのツールに関しては、AWSのドキュメントCloudFormation: Creating VPC EndpointとAWS CLI: create-vpc-endpointを参照ください。
バックエンドVPCエンドポイントを、同じ顧客管理VPCを使用している複数のワークスペースで共有することができます。バックエンドVPCエンドポイントを共有するかどうかは、お客様の組織におけるAWSアーキテクチャのベストプラクティス、全てのワークロードにおけるスループット要件に依存します。
- ワークスペースで共有することを決定した場合、すべてのワークスペースのサブネットからルーティング可能な別のサブネットにバックエンドVPCエンドポイントを作成する必要があります。ガイドに関しては、Databricks担当にお問合せください。
- また、ワークスペースが同じ顧客管理VPCを利用している限り、複数のDatabricksアカウントのワークスペースでVPCエンドポイントを共有することができます。この場合、VPCエンドポイントをそれぞれのDatabricksアカウントに登録する必要があります。
以下の手順ではAWSマネジメントコンソールを使用します。Terraform provider for VPC endpointsを用いることで、このステップを自動化することも可能です。
AWSマネジメントコンソールでバックエンドVPCエンドポイントを作成するには:
- AWSマネジメントコンソールのVPCエンドポイントセクションに移動します。
- アカウント名ピッカーの隣にある右上のリージョンピッカーを用いて、ワークスペースで使用しているリージョンとマッチしていることを確認してください。必要に応じて、リージョンピッカーでリージョンを変更してください。
- VPCエンドポイントを作成します。
-
Create Endpointをクリックします。
-
リージョンとVPCエンドポイント目的を表現するようなエンドポイント名を指定します。
databricks-us-west-2-workspace-vpce
のようにリージョンとworkspace
という単語を含めることをお勧めします。 -
Service CategoryでOther endpoint servicesを選択します。
-
サービス名フィールドにサービス名を貼り付けます。お使いのリージョンにおける2つのリージョナルサービス名を取得するにはリージョナルエンドポイントのリファレンスを使用してください。
最初に作成するVPCエンドポイントのために、ワークスペース(REST API)用のリージョナルサービス名をコピーしておきます。
-
Verify serviceをクリックします。ページでService name verifiedという緑のボックスが表示されることを確認します。「Service name could not be verified」というエラーに遭遇した場合には、お使いのVPC、サブネット、新規のVPCエンドポイントのリージョンが揃っていることを確認してください。
-
VPCフィールドであなたのVPCを選択します。お使いのワークスペースのVPCを選択します。
-
Subnetsセクションでは、お使いのDatabricksワークスペースのサブネットを正確に選択します。関連する内容に関しては、ステップ1: AWSネットワークオブジェクトを設定するをご覧ください。
-
Security groupsセクションでは、ステップ1: AWSネットワークオブジェクトを設定するで作成したバックエンドコネクション用に作成したセキュリティグループを選択します。
-
Additional settingsセクションをクリックして展開します。
-
エンドポイントのEnable DNS nameフィールドが有効化されていることを確認します。用語が示すように、VPCエンドポイントを参照、編集する際に表示されるEnable Private DNSやEnable Private DNS on this endpointと同じフィールドとなります。
-
Create endpointをクリックします。
-
セキュアクラスター接続リレーに対するリージョナルサービス名をリージョナルエンドポイントのリファレンスから取得し、上の手順を繰り返します。リージョンとVPCエンドポイント目的を表現するようなエンドポイント名を指定します。databricks-us-west-2-scc-vpce
のようにリージョンとscc
という単語を含めることをお勧めします。
フロントエンドVPCエンドポイント
フロントエンドエンドポイントは通常、ユーザーがWebアプリケーションアクセスする際のソースとなるトランジットVPCからスタートし、多くの場合トランジットVPCはオンプレミスのネットワークに接続されています。これは通常はワークスペースのデータプレーンVPCとは別のVPCとなります。Databricks VPCエンドポイントサービスは、フォロンとエンド接続とバックエンドREST API接続に対して同じ共有サービスですが、通常の実装においては、2つの異なるVPCから接続されるので、それぞれのVPCから接続される別のAWS VPCエンドポイントが必要となります。
複数のDatabricksアカウントをお持ちの場合、Databricksアカウント横断でフロントエンドVPCエンドポイントを共有することができます。それぞれの適切なDatabricksアカウントにエンドポイントを登録してください。
以下の手順ではAWSマネジメントコンソールを使用します。Terraform provider for VPC endpointsを用いることで、このステップを自動化することも可能です。
AWSマネジメントコンソールでフロントエンドVPCエンドポイントを作成するには:
- AWSマネジメントコンソールのVPCエンドポイントセクションに移動します。
- アカウント名ピッカーの隣にある右上のリージョンピッカーを用いて、トランジットVPCリージョンとマッチしていることを確認してください。場合によってはワークスペースのリージョンと異なることがあります。必要に応じて、リージョンピッカーでリージョンを変更してください。
- VPCエンドポイントを作成します。
- Create Endpointをクリックします。
- リージョンとVPCエンドポイント目的を表現するようなエンドポイント名を指定します。
databricks-us-west-2-workspace-vpce
のようにリージョンとworkspace
という単語を含めることをお勧めします。 - Service CategoryでOther endpoint servicesを選択します。
- サービス名フィールドにサービス名を貼り付けます。お使いのリージョンにおける2つのリージョナルサービス名を取得するにはリージョナルエンドポイントのリファレンスを使用してください。Workspace (including REST API) とラベル付けされているものをコピーしてください。
- Verify serviceをクリックします。ページでService name verifiedという緑のボックスが表示されることを確認します。「Service name could not be verified」というエラーに遭遇した場合には、お使いのVPC、サブネット、新規のVPCエンドポイントのリージョンが揃っていることを確認してください。
- VPCフィールドでトランジットVPCを選択します。
- Subnetsセクションではサブネットを選択します。関連する内容に関しては、ステップ1: AWSネットワークオブジェクトを設定するをご覧ください。
- Security groupsセクションでは、ステップ1: AWSネットワークオブジェクトを設定するで作成したフロントエンドコネクション用に作成したセキュリティグループを選択します。
- Create endpointをクリックします。
リージョナルエンドポイントのリファレンス
お使いのリージョンのVPCエンドポイントサービスのドメインを決定するために、以下の表をお使いください。当該リージョンの任意のアベイラビリティゾーンを使用することができます。
リージョンごとの行において、Workspace (including REST API) とあるエンドポイントサービスは、フロントエンド接続(webアプリケーション、REST APIのためのユーザー、ワークスペース間の接続)とバックエンド接続(REST APIに対する接続)の両方で使われます。フロントエンドとバックエンド接続の両方を実装する際には、両方のユースケースで同じワークスペースVPCエンドポイントサービスを使用します。
注意
- ネットワーク設定を作成する際にアカウントコンソールを使用している場合には、UIではREST API向けVPCエンドポイントとしてワークスペースのVPCエンドポイントを参照してください。
- 全てのリージョンに関しては原文を参照ください。
リージョン | これらのVPCエンドポイントサービスに対してVPCエンドポイントを作成します |
---|---|
ap-northeast-1 | Workspace (including REST API): com.amazonaws.vpce.ap-northeast-1.vpce-svc-02691fd610d24fd64 Secure cluster connectivity relay: com.amazonaws.vpce.ap-northeast-1.vpce-svc-02aa633bda3edbec0 |
ステップ3: PrivateLinkオブジェクトを登録し、ワークスペースにアタッチする
このステップを実行するには2つの方法があります。
アカウントコンソールを使用
VPCエンドポイントを登録し、その他必要なワークスペースのリソースを作成、登録し、最後にPrivateLink構成のワークスペースを作成するためにアカウントコンソールを使用することができます。
アカウントコンソールでは、PrivateLink構成に必要な幾つかのタイプのオブジェクトが必要となります。
- VPCエンドポイントの登録(フロントエンド、バックエンド、両方で必要): AWSマネジメントコンソールでVPCエンドポイントを作成した後(以前のステップをご覧ください)に、DatabricksでVPCエンドポイント登録を作成するためにこれらを登録します。VPCエンドポイント向けのアカウントコンソールページを参照ください。
- ネットワーク設定(バックエンドVPCエンドポイントで必要): ネットワーク設定は、顧客管理VPCに関する情報を表現します、。また、2つのバックエンドPrivateLinkの設定フィールドが含まれています。これら2つのフィールドをネットワーク設定オブジェクトに追加します。これらは、AWSで作成した2つのバックエンドVPCエンドポイントをを参照する必要があります。ネットワーク設定向けのアカウントコンソールページを参照ください。既存のネットワーク設定があり、PrivateLinkのフィールドを追加したい場合は、新規にネットワーク設定を作成する必要があります。
- プライベートアクセス設定(フロントエンド、バックエンド、両方で必要): ワークスペースのプライベートアクセス設定オブジェクトは、AWS PrivateLinkに関する幾つかの設定をカプセル化します。一つのワークスペース向けに新規にプライベートアクセス設定オブジェクトを作成するか、同じAWSリージョンにある複数のワークスペースで共有します。このオブジェクトにはいくつかの目的があります。これは、ワークスペースでどのようにAWS PrivateLinkを使用するのかを表現します。また、AWS PrivateLinkのフロントエンドのユースケースにおける公衆ネットワークアクセスの設定も行います。さらに、ワークスペースに対してどのVPCエンドポイントのアクセスを許可するのかも制御します。
ワークスペース向けのクラウドリソースを定義するために、アカウントコンソールを活用するには二つの方法があります。
- 事前にリソースを作成する: ワークスペースを作成する前に、アカウントコンソールのクラウドリソースエリアで必要なクラウドリソースを作成することができます。一度にすべてのステップを実行できない場合や別のチームがネットワークのセットアップやワークスペースの作成を行う際は有用です。
- ワークスペース作成ページで必要な設定を追加する: ワークスペースを作成(あるいはアップデート)するページで、別のクラウドリソースを選択するピッカーが表示されます。多くの場合、ポップアップビューですぐにリソースを作成することができるようになっています。例えば、ネットワーク設定のピッカーでは、Add a new network configurationというオプションがあります。
本書では、事前にリソースをどのように作成して参照するのかを説明します。必要に応じて他のアプローチを取ることもできます。VPCエンドポイント、ネットワーク設定、プライベートアクセス設定のエディタをご覧ください。
ステップ3a: VPCエンドポイント(フロントエンド、バックエンド、両方)を登録する
Databricksにおけるアカウントコンソールを用いたVPCエンドポイント登録の管理(E2)の手順に従ってください。
- バックエンドPrivateLinkでは、作成したバックエンドVPCエンドポイントを登録し、目的に応じて設定名をつけます。例えば、セキュアクラスター接続には
-scc
、ワークスペース(REST APU)VPCエンドポイントの登録には-workspace
をつけます。バックエンドVPCエンドポイントにおいては、リージョンフィールドは登録しようとしているAWS VPCエンドポイントのリージョンとワークススペースのリージョンで一致する必要があります。しかし、Databricksではワークスペース作成時(あるいはPrivateLink構成にワークスペースをアップデートする際)にのみ検証するので、このステップ注意深くリージョンを設定することが重要です。 - フロントエンドPrivateLinkでは、トランジットVPCに作成したフロントエンドVPCエンドポイントを登録します。フロントエンドPrivateLinkでは、トランジットVPCのリージョンと、フロントエンド接続のためのワークスペースのAWS VPCエンドポイントのリージョンが一致する必要があります。
ステップ3b: ネットワーク設定を作成する(バックエンド)
Manage network configurations using the account console (E2)の手順に従ってください。顧客管理VPC、関連するサブネット、セキュリティグループの詳細な要件に関しては、顧客管理VPCをご覧ください。PrivateLinkで最も重要なフィールドはBack-end private connectivityというタイトルの部分です。以前のステップで作成したバックエンドVPCエンドポイントの登録で選択する2つのフィールドが存在します。最初のものに関しては、secure cluster connectivity relay向けのVPCエンドポイント登録を選択し、もう一方ではworkspace (REST APIs) 向けのVPCエンドポイント登録を選択します。
ステップ3c: PASオブジェクトを作成する(フロントエンド、バックエンド、両方)
プライベートアクセス設定(PAS)オブジェクトを作成することは、PrivateLink設定における重要なステップとなります。Manage private access settings using the account console (E2)の手順に従ってください。
- リージョンに関しては、すぐには検証されませんがマッチしていない場合ワークスペースのデプロイメントが失敗するので、ワークスペースのリージョンとマッチしていることを確認してください。
- ワークスペースへのフロントエンド接続(WebアプリケーションとREST API)における公衆ネットワークアクセスをコントロールするPublic access enabledフィールドを設定します。
- False(デフォルト)に設定すると、PrivateLink接続を用いてのみフロントエンドにアクセスできるようになり、公衆インターネットからはアクセスできなくなります。この場合、公衆ネットワークからのアクセスは許可されていないのでワークスペースにおけるIPアクセスリスト機能はサポートされません。
- Trueに設定すると、PrivateLink接続と公衆インターネットからフロントエンドにアクセスできるようになります。オプションとして公衆インターネット(PrivateLinkコネクションではありません)からWebアプリケーションとREST APIにアクセスできるソースネットワークを制限するためにIPアクセスリストを設定することができます。
- どのVPICエンドポイントにワークスペースへのアクセスを許可するのかを指定するためにPrivate Access Levelを設定します。
- お使いのDatabricksアカウントに登録されているVPCエンドポイントの接続に限定するためには、Accountを設定します。
- 表示されるフィールドに入力することで、明示的に指定したVPCエンドポイントに接続を限定するにはEndpointを設定します。これによって、すでに作成した登録VPCエンドポイントを選択することができます。フロントエンドVPCエンドポイントを登録している場合には、これを含めるようにしてください。
ステップ3d: ワークスペースを作成、アップデートする(フロントエンド、バックエンド、両方)
注意
稼働中のワークスペースでPrivateLinkを有効化することができますが、アカウントコンソールではプライベートアクセス設定オブジェクトの変更をサポートしていません。このステップを実行するにはDatabricksの担当にコンタクトして下さい。ワークスペースで使用したいネットワーク設定名とプライベートアクセス設定オブジェクトを連絡する準備をしてください。ワークスペースではすでに顧客管理VPCを使用しており、セキュアクラスター接続が有効化されている(多くのE2ワークスペースでは有効化されています)必要があります。
以下の手順では、アカウントコンソールのワークスペースページを用いてワークスペースを作成する方法を説明します。
- ワークスペースを作成するためのワークスペース作成手順に従ってください。ワークスペースURL、リージョン、Unity Catalog、認証設定、ストレージ設定のようなワークスペースのフィールドのガイドに関してはこちらのドキュメントをご覧ください。まだ、Saveボタンは押さないでください。
- 追加フィールドを参照するためにAdvanced configurationsをクリックしてください。
- バックエンドPrivateLinkの場合、ネットワーク設定を選択します。Virtual Private Cloudの下のメニューで、作成したDatabricksネットワークを選択します。
- いかなるPrivateLinkの利用においてもプライベートアクセス設定オブジェクトを選択します。下にあるPrivate Linkの見出しを参照します。メニューをクリックし、作成したプライベートアクセス設定オブジェクトの名前を選択します。
- Saveをクリックします。
- ワークスペースを作成(アップデート)した後は、利用できるまで、あるいはクラスターを作成できるまで待ちます。ワークスペースのステータスが
RUNNING
になれば、VPCの変更は即座に反映されます。しかし、クラスターを利用、作成できるようになるまでにはさらに20分待つ必要があります。この時間が経過する前にクラスターを作成、利用しようとするとクラスターは起動に成功せず、エラーが発生するか予期しない挙動を示します。 - ステップ4: ユーザーリクエストをWebアプリケーションにリダイレクトするように内部DNSを設定する(フロントエンド)に進みます。
Account APIを使用
ステップ3a: VPCエンドポイント(フロントエンド、バックエンド、両方)を登録する
Account API 2.0を用いて、バックエンドVPCエンドポイントのVPCエンドポイントIDを登録します。それぞれに対して、Databricks VPCエンドポイント登録を作成します。
バックエンドVPCエンドポイントにおいては、同じリージョンで同じ顧客管理VPCを共有している複数のワークスペースがある場合、同じAWS VPCエンドポイントを共有することが可能です。また、複数のDatabricksアカウントでこれらのVPCエンドポイントを共有することも可能で、この場合、それぞれのDatabricksアカウントでAWS VPCエンドポイントを登録します。
フロントエンドVPCエンドポイントにおいて、複数のDatabricksアカウントをお持ちの場合、DatabricksアカウントにまたがってフロントエンドVPCエンドポイントを共有することができます。それぞれの適切なDatabrickaアカウントにエンドポイントを登録します。
DatabricksでVPCエンドポイントを登録するには、/accounts/<account-id>/vpc-endpoints
REST APIエンドポイントにPOSTリクエストを行い、リクエストボディに以下のフィールドを指定します。
-
vpc_endpoint_name
: Databricksに登録するVPCエンドポイントの名称 -
region
: AWSリージョン名 -
aws_vpc_endpoint_id
: AWSにおけるVPCエンドポイントのID。プレフィックスvpce-
で始まる文字列です。
以下に例を示します。
curl -X POST -n \
'https://accounts.cloud.databricks.com/api/2.0/accounts/<account-id>/vpc-endpoints' \
-d '{
"vpc_endpoint_name": "Databricks front-end endpoint",
"region": "us-west-2",
"aws_vpc_endpoint_id": "<vpce-id>"
}'
レスポンスのJSONにはvpc_endpoint_id
フィールドが含まれます。バックエンドPrivateLink接続を追加するす際にはこの値を保存しておきます。このIDは、Databricksにおける本設定固有のものとなります。以降のステップ(ステップ3b: ネットワーク設定を作成する(バックエンド))でネットワーク設定を作成する際にこのIDが必要となります。
関連するAccount APIのオペレーションには、以下のようなものがあります。
-
VPCエンドポイントのステータスをチェックする - レスポンスのJSONの
state
フィールドにはAWSのステータスが含まれます。 - お使いのアカウントの全てのVPCエンドポイントを取得する
- VPCエンドポイントの登録を解除する
ステップ3b: ネットワーク設定を作成する(バックエンド)
注意
フロントエンド接続のみを実装する場合はこのステップをスキップしてください。顧客管理VPCが必要なのでネットワーク設定を作成する必要がありますで、フロントエンドPrivateLink接続のみを実装する場合は、このオブジェクトに対するPrivateLinkの変更はありません。
どちらのPrivateLinkサポートにおいても、顧客管理VPCが必要となります。この機能では、VPC、サブネット、セキュリティグループのIDをカプセル化するネットワーク設定オブジェクトの作成が必要となります。
バックエンドPrivateLinkのサポートにおいては、お使いのネットワーク設定には、PrivateLink固有の追加フィールドを含める必要があります。ネットワーク設定のvpc_endpoints
フィールドは、登録したVPCエンドポイントから返却されるDatabricks固有のVPCエンドポイントIDを参照する必要があります。ステップ3a: VPCエンドポイント(フロントエンド、バックエンド、両方)を登録するをご覧ください。
このオブジェクトには以下のフィールドの両方を追加します。
-
rest_api
: ステップ3a: VPCエンドポイント(フロントエンド、バックエンド、両方)を登録するで登録したバックエンドREST API VPCエンドポイントのDatabricks固有のIDを確実に含む一要素のJSON配列を設定します。重要!
リージョナルエンドポイントのリファレンスの表にあるリージョナルエンドポイントを登録した際に生成されるDatabricks固有のIDの使用には注意してください。このフィールドに間違ったIDを指定してエラーになるケースが多々あります。
:: -
dataplane_relay
: ステップ3a: VPCエンドポイント(フロントエンド、バックエンド、両方)を登録する](#ステップ3a-vpcエンドポイントフロントエンドバックエンド両方を登録する)で登録したバックエンドSCC VPCエンドポイントのDatabricks固有のIDを確実に含む一要素のJSON配列を設定します。重要!
リージョナルエンドポイントのリファレンスの表にあるリージョナルエンドポイントを登録した際に生成されるDatabricks固有のIDの使用には注意してください。このフィールドに間違ったIDを指定してエラーになるケースが多々あります。
::
ステップ3a: VPCエンドポイント(フロントエンド、バックエンド、両方)を登録するで行うリクエストに対するJSONレスポンスのvpc_endpoint_id
フィールドからこれらのDatabricks固有のVPCエンドポイントIDを取得することができます。
以下の例では、VPCエンドポイントIDを参照する新たなネットワーク設定を作成しています。<databricks-vpce-id-for-scc>
をセキュアクラスター接続リレーのDatabricks固有VPCエンドポイントIDで置き換え、<databricks-vpce-id-for-rest-apis>
をREST API向けのDatabricks固有VPCエンドポイントIDで置き換えてください。
curl -X POST -n \
'https://accounts.cloud.databricks.com/api/2.0/accounts/<account-id>/networks' \
-d '{
"network_name": "Provide name for the Network configuration",
"vpc_id": "<aws-vpc-id>",
"subnet_ids": [
"<aws-subnet-1-id>",
"<aws-subnet-2-id>"
],
"security_group_ids": [
"<aws-sg-id>"
],
"vpc_endpoints": {
"dataplane_relay": [
"<databricks-vpce-id-for-scc>"
],
"rest_api": [
"<databricks-vpce-id-for-rest-apis>"
]
}
}'
ステップ3c: PASオブジェクトを作成する(フロントエンド、バックエンド、両方)
プライベートアクセス設定(PAS)オブジェクトを作成、アタッチするためにAccount API 2.0を使用します。
プライベートアクセス設定オブジェクトでは以下のシナリオをサポートしています。
- フロントエンドVPCエンドポイントのみを実装
- バックエンドVPCエンドポイントのみを実装
- フロントエンド、バックエンドVPCエンドポイントの両方を実装
これらのPrivateLink接続シナリオのいずれかをサポートするワークスペースにおいては、ワークスペースにプライベートアクセス設定オブジェクトを作成しアタッチする必要があります。特定のワークスペースのみでの使用を目的とした新規のプライベートアクセス設定オブジェクトを作成することもできますし、同じAWSリージョンにある複数のワークスペースで既存のプライベートアクセス設定オブジェクトを再利用することもできます。
このオブジェクトには2つの目的があります。
- ワークスペースでのAWS PrivateLinkの利用目的を表現します。フロントエンドあるいはバックエンドのPrivateLinkを用いてワークスペースに接続する際には、ワークスペース作成時にこれらのオブジェクトの一つをワークスペースにアタッチする必要があります。
- AWS PrivateLinkのフロントエンドのユースケースにおける設定を制御します。バックエンドPrivateLinkのみでの接続を行いたい場合には、オブジェクトの
public_access_enabled
フィールドをtrue
に設定します。
プライベートアクセス設定オブジェクトの定義において、public_access_enabled
はワークスペースのフロントエンド接続(WebアプリケーションとREST API)に対する公衆ネットワークアクセスをコントロールします。
-
false
(デフォルト)に設定すると、PrivateLink接続を用いてのみフロントエンドにアクセスできるようになり、公衆インターネットからはアクセスできなくなります。この場合、公衆ネットワークからのアクセスは許可されていないのでワークスペースにおけるIPアクセスリスト機能はサポートされません。 -
true
に設定すると、PrivateLink接続と公衆インターネットからフロントエンドにアクセスできるようになります。オプションとして公衆インターネット(PrivateLinkコネクションではありません)からWebアプリケーションとREST APIにアクセスできるソースネットワークを制限するためにIPアクセスリストを設定することができます。
プライベートアクセス設定オブジェクトを作成するには、REST APIエンドポイント/accounts/<account-id>/private-access-settings
にPOST
リクエストを行います。リクエストボディには以下のプロパティを含めます。
-
private_access_settings_name
: 人間が理解できるプライベートアクセス設定オブジェクトの名称。 -
region
: AWSリージョン名。 -
public_access_enabled
: フロントエンド接続への公衆アクセスを許可するかどうかを指定します。true
の場合、フロントエンド接続に対して、PrivateLink接続に加えて公衆アクセスが可能です。上の説明をご覧ください。 -
private_access_level
: このワークスペースにどのVPCエンドポイントが接続できるのかを指定します:-
ACCOUNT (デフォルト)
: お使いのDatabricksアカウントに登録されたVPCエンドポイントに接続を限定します。 -
ENDPOINT
: 明示的に指定したVPCエンドポイントに接続を限定します。関連するプロパティallowed_vpc_endpoint_ids
をご確認ください。
注意
プライベートアクセスレベルANY
は非推奨になりました。新規あるいは既存のアクセス設定オブジェクトでこのレベルを指定することはできません。
:: -
-
allowed_vpc_endpoint_ids
:private_access_level
がENDPOINT
に設定されている場合にのみ使用します。このプロパティは、このワークスペースに接続できるVPCエンドポイントを指定します。VPCエンドポイントIDのJSON配列として指定します。AWS IDではなくエンドポイント登録時に返却されるDatabricksのIDを使用します。
curl -X POST -n \
'https://accounts.cloud.databricks.com/api/2.0/accounts/<account-id>/private-access-settings' \
-d '{
"private_access_settings_name": "Default PAS for us-west-2",
"region": "us-west-2",
"public_access_enabled": true
}'
レスポンスのJSONにはprivate_access_settings_id
フィールドが含まれています。このIDはDatabricks内においてこの設定固有のものとなります。ワークスペースを作成する際に、このフィールドが必要となりますので保存しておいてください。
関連APIには以下のようなものがあります。
- ID指定でのプライベートアクセス設定オブジェクトの取得
- すべてのプライベートアクセス設定オブジェクトの取得
- プライベートアクセス設定オブジェクトのアップデート(パブリックプレビュー)
- プライベートアクセス設定オブジェクトの削除
ステップ3d: ワークスペースを作成、アップデートする(フロントエンド、バックエンド、両方)
注意
稼働中のワークスペースでPrivateLinkを有効化することができますが、アカウントコンソールではプライベートアクセス設定オブジェクトの変更をサポートしていません。このステップを実行するにはDatabricksの担当にコンタクトして下さい。ワークスペースで使用したいネットワーク設定名とプライベートアクセス設定オブジェクトを連絡する準備をしてください。ワークスペースではすでに顧客管理VPCを使用しており、セキュアクラスター接続が有効化されている(多くのE2ワークスペースでは有効化されています)必要があります。
PrivateLink接続のワークスペースを作成する際に重要となるフィールドはprivate_access_settings_id
(新規に作成したプライベートアクセス設定オブジェクトのID)とnetwork_id
(新規に作成したネットワーク設定のID)です。
PrivateLink接続のワークスペースを作成するには:
-
Account APIにおける新規ワークスペースに関するすべてのフィールドのガイドについて、Databricks Account API 2.0の指示を読みます。ストレージ設定、認証設定、顧客管理キーのようなすべてのフィールドに対する完全な手順に関しては、Create a new workspace using the Account APIをご覧ください。
-
Create a new workspace API(
POST /accounts/{account_id}/workspaces
)を呼び出し、以下のようにprivate_access_settings_id
とnetwork_id
を含めます。Bashcurl -X POST -n \ 'https://accounts.cloud.databricks.com/api/2.0/accounts/<databricks-account-id>/workspaces' \ -d '{ "workspace_name": "my-company-example", "deployment_name": "my-company-example", "aws_region": "us-west-2", "credentials_id": "<aws-credentials-id>", "storage_configuration_id": "<databricks-storage-config-id>", "network_id": "<databricks-network-config-id>", "managed_services_customer_managed_key_id": "<aws-kms-managed-services-key-id>", "storage_customer_managed_key_id": "<aws-kms-notebook-workspace-storage-config-id>", "private_access_settings_id": "<private-access-settings-id>" }'
-
ワークスペースを作成(アップデート)した後は、利用できるまで、あるいはクラスターを作成できるまで待ちます。ワークスペースのステータスが
RUNNING
になれば、VPCの変更は即座に反映されます。しかし、クラスターを利用、作成できるようになるまでにはさらに20分待つ必要があります。この時間が経過する前にクラスターを作成、利用しようとするとクラスターは起動に成功せず、エラーが発生するか予期しない挙動を示します。
Terraformを使用
必要なAWSネットワークオブジェクトと関連するDatabricks PrivateLinkオブジェクトを作成するためにTerraformを使用するには、以下のTerraformプロバイダーを確認してください。
- VPCエンドポイントを登録するTerraformプロバイダー。このリソースを使用する前には、必要なAWS VPCエンドポイントを作成しておく必要があります。
- AWS VPCとDatabrickeネットワーク設定を作成するTerraformプロバイダー
- Databricksプライベートアクセス設定オブジェクトを作成するTerraformプロバイダー
ワークスペースをデプロイするためにTerraformを使うには以下を参照ください。
ステップ4: ユーザーリクエストをWebアプリケーションにリダイレクトするように内部DNSを設定する(フロントエンド)
フロントエンドPrivateLink接続を使うためには、ユーザーのリクエストをWebアプリケーションにリダイレクトする必要があります。ユーザーが利用しているあるいは接続するネットワークに対してプライベートDNSを変更する必要があります。ユーザーがお使いの内部、カスタムDNSのスコープにあるオンプレミスネットワークからDatabricksワークスペースにアクセスする場合、お使いのワークスペースURLがワークスペースVPCエンドポイント用のVPCエンドポイントプライベートIPにマッピングされるように、ワークスペースの作成・更新後に以下の設定を行う必要があります。
WebアプリケーションのワークスペースURLをフロントエンドVPCエンドポイントにマッピングするように内部DNSを設定します。
お使いのワークスペースがデプロイされているドメイン名のDNS解決をテストするにはnslookup
コマンドラインツールを使用します。
nslookup my-workspace-name-here.cloud.databricks.com
サンプルのレスポンスは以下のようになります。
Non-authoritative answer:
my-workspace-name-here.cloud.databricks.com canonical name = oregon.cloud.databricks.com.
oregon.cloud.databricks.com canonical name = a89b3c627d423471389d6ada5c3311b4-f09b129745548506.elb.us-west-2.amazonaws.com.
Name: a89b3c627d423471389d6ada5c3311b4-f09b129745548506.elb.us-west-2.amazonaws.com
Address: 44.234.192.47
AWSリージョンus-east-1
におけるフロントエンドVPCエンドポイントとワークスペースをマッピングするサンプルのDNSマッピングは以下のようになります。
- デフォルトではDNSのマッピングは
-
myworkspace.cloud.databricks.com
はnvirginia.privatelink.cloud.databricks.com
にマッピングされます。この場合、nvirginia
は当該リージョンのコントロールプレーンの短縮名です。 -
nvirginia.privatelink.cloud.databricks.com
はnvirginia.cloud.databricks.com
にマッピングされます。 -
nvirginia.cloud.databricks.com
はAWSのパブリックIPにマッピングされます。
-
- DNS変更後は、(フロントエンドVPCエンドポイントが存在する)お使いのトランジットVPCからのDNSマッピングは以下のようになります。
-
myworkspace.cloud.databricks.com
はnvirginia.privatelink.cloud.databricks.com
にマッピングされます。 -
nvirginia.privatelink.cloud.databricks.com
はVPCエンドポイントのプライベートIPにマッピングされます。
-
オンプレミスのネットワークからワークスペースのURLをVPCエンドポイントのプライベートIPにマッピングするには、
- AmazonDNSを使うためにワークスペースURLに対する条件付きフォワーディングを設定します。
- VPCエンドポイントのプライベートIPにマッピングを行うオンプレミスあるいはDNSでワークスペースURLのAレコードを作成します。
- その他類似のPrivateLink有効かサービスに対してアクセスを有効化するために同じステップを行います。
DNSマッピングが以下のようになるように内部DNSでAレコードを作成することで、ワークスペースURLを直接フロントエンド(ワークスペース)VPCエンドポイントのプライベートIPにマッピングすることもできます。
-
myworkspace.cloud.databricks.com
をVPCエンドポイントプライベートIPにマッピング。
内部DNS設定に変更を行った後は、お使いのトランジットVPCからDatabricksワークスペースのWebアプリケーションやREST APIにアクセスすることで設定をテストしてください。設定をテストするために必要であればトランジットVPC内にVPCを作成してください。
ご自身のネットワークアーキテクチャにどのように適用したらいいのかに関して質問がある場合には、Databricks担当にお問合せください。
ステップ5: 他のAWSサービス向けのVPCエンドポイントを追加する(推奨ですがオプションです)
PrivateLinkバックエンド接続を実装するのに必要なセキュアクラスター接続を使用しているのであれば、任意でお使いのデータプレーンVPCに他のVPCエンドポイントを追加でき、Databricksが使用するAWSのネイティブサービス(S3、STS、Kinesis)、お使いのワークスペースで必要となる他のリソースにアクセスする際、クラスターがVPCエンドポイントを利用することができます。
- S3 VPCゲートウェイエンドポイント: ワークスペースのサブネットにアタッチされるルートテーブルにのみアタッチしてください。推奨されるバックエンドVPCエンドポイントに対する自身のルートテーブルを持つ別のサブネットを使用しているのであれば、S3 VPCエンドポイントを特定のルートテーブルにアタッチする必要はありません。
- STS VPCインタフェースエンドポイント: 全てのワークスペースのサブネットで作成し、ワークスペースのセキュリティグループにアタッチしてください。バックエンドVPCエンドポイントのサブネットでは作成しないでください。
- Kinesis VPCインタフェースエンドポイント: STS VPCインタフェースのエンドポイントと同じように、全てのワークスペースのサブネットでKinesis VPCインタフェースエンドポイントを作成し、ワークスペースのセキュリティグループにアタッチしてください。
他のアウトバウンド接続をサポートしないように、ワークスペースVPCをロックダウンしたい場合、AWSがRDSに対するJDBCトラフィックのPrivateLinkをサポートしていないため、ワークスペースからDatabricks管理のメタストア(RDSベースのHiveメタストア)にはアクセスできなくなります。一つの選択肢としては、リージョンごとにDatabricksが提供するメタストアのFQDNあるいはIPを、イグレスファイアウォール、インターネットゲートウェイに対するパブリックルートテーブル、NATゲートウェイをホスティングするパブリックサブネットに対するネットワークACLのいずれかに対して設定するというものです。この場合、Databricksが提供するメタストアへのトラフィックは、公衆ネットワークを経由することになります。しかし、Databricks管理のメタストアに公衆ネットワーク経由でアクセスしたくない場合には、以下のいずれかの選択肢となります。
- お使いのVPCに外部メタストアをデプロイします。External Apache Hive metastoreを参照ください。
- メタストアとしてAWS Glueを使用できます。GlueはPrivateLinkをサポートしています。Use AWS Glue Data Catalog as the metastore for Databricks Runtimeを参照ください。
pypi(python)やCRAN(R)などの公開ライブラリリポジトリにアクセスしたいと考えるかもしれません。これらにアクセスするには、完全なアウトバウンドロックダウンモードでのデプロイモードを再考するか、自身のアーキテクチャで必要なリポジトリにアクセスできるようにイグレスファイアウォールを使用してください。ご自身のデプロイメントの全体アーキテクチャは、ご自身の要件に依存します。質問がある場合には、Databricks担当にお問い合わせください。
AWSを用いてAWS VPCエンドポイントを作成する際には、AWSのドキュメントcreating VPC endpoints in the AWS consoleを参照ください。
VPCエンドポイントの作成、管理の自動化に役立つツールには以下のようなものがあります。
- Databricks Terraform providerに関するドキュメント
- Terraformのリソース databricks_mws_vpc_endpointとdatabricks_mws_private_access_settings
- Terraformのガイド Deploying prerequisite resources and enabling PrivateLink connections
- AWSのドキュメント CloudFormation: Creating VPC Endpoint
- AWSのドキュメント AWS CLI : create-vpc-endpoint