顧客管理 VPC の設定
概要
デフォルトでは、クラスターは、Databricks が AWS アカウントで作成および構成する単一の AWS VPC (仮想プライベート クラウド) に作成されます。 必要に応じて、独自の VPC に Databricks ワークスペース ( 顧客管理 VPC と呼ばれる機能) を作成できます。 顧客管理 VPC を使用すると、ネットワーク構成をより詳細に制御し、組織が必要とする特定のクラウドセキュリティおよびガバナンス標準に準拠できます。 任意のタイプの接続で AWS PrivateLink を使用するようにワークスペースを設定するには、ワークスペースで顧客管理 VPC を使用する必要があります。
カスタマーマネージドVPCは、次のような場合に適しています。
セキュリティポリシーによって、PaaSプロバイダーが独自のAWSアカウントにVPCを作成できない場合。
新しいVPCを作成するための承認プロセスがあり、VPCが内部の情報セキュリティチームまたはクラウドエンジニアリングチームによって十分に文書化された方法で設定および保護されている場合。
カスタマーマネージドVPCのメリットは次のとおりです。
権限レベルの低下: 自分のAWSアカウントをより詳細に制御できます。また、DatabricksマネージドVPCの場合ほど多くの権限をクロスアカウントIAMロールを介してDatabricksに付与する必要がありません。たとえば、VPCを作成するための権限は必要ありません。権限セットが制限されていることにより、プラットフォームスタックでDatabricksを使用するための承認を簡単に得ることができます。
ネットワーク運用の簡素化: ネットワークスペースの使用率が向上します。必要に応じて、ワークスペースのサブネットを、デフォルトのCIDR /16と比較して小さく設定できます。また、他のソリューションでは必要となる場合がある複雑なVPCピアリング設定が必要ありません。
VPC の統合: 複数の Databricks ワークスペースは、単一のクラシック コンピュート プレーン VPC を共有できます。これは、多くの場合、請求やインスタンス管理に好まれます。
送信接続を制限する: 当然のことですが、クラシック コンピュート プレーンは Databricks Runtime ワーカーからの送信接続を制限しません。 顧客管理 VPC を使用するように構成されたワークスペースの場合、送信ファイアウォールまたはプロキシ アプライアンスを使用して、送信トラフィックを許可された内部または外部データ ソースのリストに制限できます。
カスタマーマネージドVPCを利用するには、最初にDatabricksワークスペースを作成するときにVPCを指定する必要があります。DatabricksマネージドVPCを使用している既存のワークスペースを、カスタマーマネージドVPCを使用するように移行することはできません。ただし、ワークスペース設定のネットワーク設定オブジェクトを更新することで、カスタマーマネージドVPCを使用している既存のワークスペースを、あるVPCから別のVPCに移動させることはできます。「実行中または問題が発生したワークスペースを更新する」を参照してください。
独自のVPCにワークスペースをデプロイするには、次のことを行う必要があります。
VPCの要件に記載されている要件に従ってVPCを作成します。
ワークスペースを作成するときに、DatabricksのVPCネットワーク設定を参照します。
アカウントコンソールを使用して、名前で設定を選択します。
アカウントAPIを使用して、IDで設定を選択します。
VPCをDatabricksに登録するときに、VPC ID、サブネットID、セキュリティグループIDを指定する必要があります。
VPCの要件
Databricksワークスペースをホストするには、VPCがこのセクションで説明されている要件を満たしている必要があります。
VPCのリージョン
カスタマーマネージドVPCをサポートしているAWSリージョンのリストについては、「Databricksクラウドとリージョン」を参照してください。
VPCのサイジング
1 つの VPC を 1 つの AWS アカウントで複数のワークスペースと共有できます。 ただし、Databricks では、ワークスペースごとに一意のサブネットとセキュリティ グループを使用することが推奨されています。 VPC とサブネットのサイズは、それに応じて設定してください。 Databricks では、ノードごとに 2 つの IP アドレス (1 つは管理トラフィック用、もう 1 つは Apache Sparkアプリケーション用) が割り当てられます。 各サブネットのインスタンスの総数は、使用可能な IP アドレスの数の半分に等しくなります。 詳細については、「 サブネット」を参照してください。
VPCのIPアドレス範囲
DatabricksではワークスペースVPCのネットマスクを制限していませんが、各ワークスペースのサブネットには/17
~/26
のネットマスクが必要です。つまり、ワークスペースに2つのサブネットがあり、両方のネットマスクが/26
の場合、ワークスペースVPCのネットマスクは /25
以下である必要があります。
重要
VPCにセカンダリCIDRブロックを設定している場合は、Databricksワークスペースのサブネットが同じVPC CIDRブロックで設定されていることを確認してください。
DNS
VPCでDNSホスト名とDNS解決が有効になっている必要があります。
サブネット
Databricksは、ワークスペースごとに少なくとも2つのサブネットにアクセスできる必要があります(各サブネットは異なるアベイラビリティゾーンにあります)。ネットワーク設定の作成APIコールでアベイラビリティゾーンごとに複数のDatabricksワークスペースサブネットを指定することはできません。ネットワーク設定の一環としてアベイラビリティゾーンごとに複数のサブネットを設定することはできますが、Databricksワークスペースに選択できるサブネットはアベイラビリティゾーンごとに1つだけです。
1 つのサブネットを複数のワークスペースで共有するか、両方のサブネットをワークスペース間で共有するかを選択できます。 たとえば、同じ VPC を共有する 2 つのワークスペースを持つことができます。 1 つのワークスペースでサブネット A
と B
を使用し、別のワークスペースでサブネット A
と C
を使用できます。 複数のワークスペースでサブネットを共有する場合は、VPC とサブネットのサイズを、使用量に応じてスケーリングするのに十分な大きさにしてください。
Databricksは、ノードごとに2つのIPアドレス(1つは管理トラフィック用、もう1つはSparkアプリケーション用)を割り当てます。各サブネットのインスタンスの合計数は、使用可能なIPアドレスの数の半分になります。
各サブネットには、/17
~/26
のネットマスクが必要です。
追加のサブネット要件
サブネットはプライベートである必要があります。
サブネットは、NATゲートウェイやインターネットゲートウェイ、またはその他の同様のカスタマーマネージドアプライアンスインフラストラクチャを使用して、パブリックネットワークへのアウトバウンドアクセスが可能である必要があります。
NATゲートウェイは、クアッドゼロ(
0.0.0.0/0
)トラフィックをインターネットゲートウェイまたは他のカスタマーマネージドアプライアンスインフラストラクチャにルーティングする独自のサブネット内に設定する必要があります。
重要
ワークスペースには、VPC からパブリック ネットワークへのアウトバウンド アクセスが必要です。
サブネット・ルート・テーブル
ワークスペース サブネットのルート テーブルには、適切なネットワーク デバイスをターゲットとするクアッドゼロ ( 0.0.0.0/0
) トラフィックが必要です。 クアッドゼロトラフィックは、NATゲートウェイ、または独自の管理対象NATデバイスまたはプロキシアプライアンスをターゲットにする必要があります。
重要
Databricks では、サブネットが許可リストに0.0.0.0/0
を追加する必要があります。 このルールは優先順位を付ける必要があります。 送信トラフィックを制御するには、送信ファイアウォールまたはプロキシ アプライアンスを使用して、ほとんどのトラフィックをブロックしますが、Databricks が接続する必要がある URL は許可します。 「 ファイアウォールと送信アクセスの構成」を参照してください。
これはあくまでも基本ガイドラインです。 構成要件は異なる場合があります。 ご不明な点がございましたら、Databricks アカウント チームにお問い合わせください。
セキュリティグループ
Databricks ワークスペースには、少なくとも 1 つの AWS セキュリティ グループと 5 つ以下のセキュリティ グループにアクセスできる必要があります。 新しいセキュリティ グループを作成するのではなく、既存のセキュリティ グループを再利用できます。 ただし、Databricks では、ワークスペースごとに一意のサブネットとセキュリティ グループを使用することが推奨されています。
セキュリティグループには、次のルールが必要です。
エグレス(アウトバウンド):
ワークスペースセキュリティグループへのすべてのTCPおよびUDPアクセスを許可します(内部トラフィック用)。
次のポートで
0.0.0.0/0
へのTCPアクセスを許可します。443: Databricksインフラストラクチャ、クラウドデータソース、ライブラリリポジトリ用。
3306: メタストア用。
6666: セキュアなクラスター接続用。これは、PrivateLinkを使用する場合にのみ必要です。
2443: FIPS 暗号化をサポートします。 コンプライアンス・セキュリティ・プロファイルを有効にする場合にのみ必要です。
8443 から 8451: 将来の拡張可能性。 2024 年 1 月 31 日までにこれらのポートが開いていることを確認します。
イングレス(インバウンド): すべてのワークスペースに必要です(これらは個別のルールにすることも、1つにまとめることもできます)。
トラフィックソースが同じセキュリティグループを使用する場合、すべてのポートでTCPを許可します。
トラフィックソースが同じセキュリティグループを使用する場合、すべてのポートでUDPを許可します。
サブネットレベルのネットワークACL
サブネットレベルのネットワークACLは、いかなるトラフィックに対してもイングレスまたはエグレスを拒否してはなりません。Databricksは、ワークスペースの作成時に次のルールを検証します。
エグレス(アウトバウンド):
内部トラフィックに対して、ワークスペースVPC CIDRへのすべてのトラフィックを許可します。
次のポートで
0.0.0.0/0
へのTCPアクセスを許可します。443: Databricksインフラストラクチャ、クラウドデータソース、ライブラリリポジトリ用。
3306: メタストア用。
6666: PrivateLinkを使用する場合にのみ必要です。
重要
アウトバウンドトラフィックに対して追加のALLOW
またはDENY
ルールを設定する場合は、Databricksが要求するルールを最高の優先度(最も小さいルール番号)に設定して、それらが優先されるようにします。
イングレス (インバウンド):
ALLOW ALL from Source 0.0.0.0/0
.このルールは優先順位を付ける必要があります。
注:
Databricks では、 0.0.0.0/0
を許可リストに追加するには、サブネット レベルのネットワーク ACL が必要です。 出力トラフィックを制御するには、出力ファイアウォールまたはプロキシ アプライアンスを使用して、ほとんどのトラフィックをブロックしますが、Databricks が接続する必要がある URL は許可します。 「 ファイアウォールと送信アクセスの構成」を参照してください。
AWS PrivateLinkサポート
このVPCを使用しているワークスペースでAWS PrivateLinkを有効にする場合は、次のことを行います。
VPCで、DNSホスト名とDNS解決の両方の設定が有効になっていることを確認します。
VPCエンドポイント用の追加のサブネットの作成(推奨ですが必須ではありません)とVPCエンドポイント用の追加のセキュリティグループの作成に関するガイダンスについては、記事「AWS PrivateLinkを有効にする」を参照してください。
VPCを作成する
さまざまなツールを使用してVPCを作成することができます。
AWSコンソール
AWS CLI
AWSクイックスタート(新しいカスタマーマネージドVPCと新しいワークスペースを作成する)
AWSコンソールを使用してVPCと関連オブジェクトを作成および設定するための基本的な手順を以下に示します。詳細な手順については、AWSのドキュメントを参照してください。
注:
これらの基本的な手順は、すべての組織に適用されるとは限りません。 構成要件は異なる場合があります。 このセクションでは、NAT、ファイアウォール、またはその他のネットワーク インフラストラクチャを構成するすべての方法を網羅しているわけではありません。 ご不明な点がございましたら、先に進む前に Databricks アカウント チームにお問い合わせください。
AWSのVPC ページに移動します。
右上のリージョンピッカーを参照してください。必要に応じて、ワークスペースのリージョンに切り替えます。
右上にあるオレンジ色のボタン [VPC を作成する] をクリックします。
[VPCなど] をクリックします。
[ネームタグ自動生成] に、ワークスペースの名前を入力します。Databricksでは、名前にリージョンを含めることをお勧めしています。
必要に応じて、VPCアドレス範囲を変更します。
パブリックサブネットの場合は、
2
をクリックします。これらのサブネットはDatabricksワークスペースでは直接使用されませんが、このエディターでNATを有効にするために必要です。プライベートサブネットの場合は、ワークスペースサブネットの最小値として
2
をクリックします。必要に応じてさらに追加できます。Databricks ワークスペースには、少なくとも 2 つのプライベート サブネットが必要です。 サイズを変更するには、「 サブネットCIDRブロックのカスタマイズ」をクリックします。
NATゲートウェイを使用する場合は、[1つのアベイラビリティーゾーンで] をクリックします。
下部にある [DNSホスト名を有効化] フィールドと [DNS解決を有効化] フィールドが有効になっていることを確認します。
[VPCを作成する] をクリックします。
新しいVPCを表示しているときに、左側のナビゲーションアイテムをクリックして、VPCの関連設定を更新します。[VPCでフィルタリング] フィールドで新しいVPCを選択することで、関連オブジェクトを見つけやすくなります。
[ サブネット ] をクリックし、AWS が 1 と 2 というラベルの付いた プライベート サブネットと呼ぶもので、メインのワークスペースサブネットの設定に使用します。 「VPC 要件」で指定されているサブネットを変更します。
PrivateLinkで使用するために追加のプライベートサブネットを作成した場合は、「AWS PrivateLinkを有効にする」で指定されているようにプライベートサブネット3を設定します。
[セキュリティグループ] をクリックし、「セキュリティグループ」で指定されているようにセキュリティグループを変更します。
バックエンドPrivateLink接続を使用する場合は、「ステップ1: AWSネットワークオブジェクトを設定する」セクションのPrivateLinkの記事で指定されているように、インバウンドルールとアウトバウンドルールを使用して追加のセキュリティグループを作成します。
[ネットワークACL] をクリックし、「サブネットレベルのネットワーク ACL」で指定されているようにネットワークACLを変更します。
この記事で後述する任意の設定を行うかどうかを選択してください。
VPCをDatabricksに登録し、アカウントコンソールまたはアカウントAPIを使用してネットワーク設定を作成します。
CIDRの更新
あとで元のサブネットと重複するサブネットCIDRの更新が必要となる場合があります。
CIDRおよびその他のワークスペースオブジェクトを更新するには、次のことを行います。
更新する必要があるサブネットで実行されているすべての実行中のクラスター(およびその他のコンピュートリソース)を終了します。
AWSコンソールを使用して、更新するサブネットを削除します。
更新されたCIDR範囲でサブネットを再作成します。
2つの新しいサブネットのルートテーブルの関連付けを更新します。各アベイラビリティーゾーンのものを既存のサブネットに再利用できます。
重要
このステップをスキップしたり、ルートテーブルを誤って設定したりすると、クラスターの起動に失敗する可能性があります。
新しいサブネットで新しいネットワーク設定オブジェクトを作成します。
この新しく作成されたネットワーク設定オブジェクトを使用するようにワークスペースを更新します。
(推奨)リージョン エンドポイントを構成する
カスタマー管理 VPC (オプション) を使用する場合、Databricks では、AWS サービスに対してリージョン VPC エンドポイントのみを使用するように VPC を構成することをお勧めします。 リージョン VPC エンドポイントを使用すると、AWS グローバル エンドポイントと比較して、AWS サービスへの直接接続が可能になり、コストが削減されます。 カスタマー管理 VPC を備えた Databricks ワークスペースが到達する必要がある AWS サービスは、STS、S3、Kinesis、RDS の 4 つです。
VPC から RDS サービスへの接続は、デフォルトの Databricks レガシ Hive metastore を使用する場合にのみ必要であり、Unity Catalog メタストアには適用されません。 RDS の VPC エンドポイントはありませんが、デフォルトの Databricks レガシ Hive metastoreを使用する代わりに、独自の外部メタストアを構成できます。 外部メタストアは、Hive metastore または AWS Glue を使用して実装できます。
他の 3 つのサービスでは、VPC ゲートウェイまたはインターフェイスエンドポイントを作成して、クラスターからの関連するリージョン内トラフィックがパブリックネットワークではなく安全な AWS バックボーンを通過できるようにすることができます。
S3: Databricks クラスター サブネットから直接アクセスできる VPC ゲートウェイ エンドポイント を作成します。 これにより、リージョン内のすべての S3 バケットへのワークスペーストラフィックでエンドポイントルートが使用されます。 クロスリージョンバケットにアクセスするには、エグレスアプライアンスで S3 グローバル URL
s3.amazonaws.com
へのアクセスを開くか、AWS インターネットゲートウェイに0.0.0.0/0
ルーティングします。リージョン エンドポイントを有効にして DBFS マウント を使用するには、次のようにします。
AWS_REGION=<aws-region-code>
を設定するには、クラスター構成で環境変数を設定する必要があります。たとえば、ワークスペースがバージニア北部リージョンにデプロイされている場合は、AWS_REGION=us-east-1
を設定します。 すべてのクラスターに適用するには、 クラスターポリシーを使用します。
STS: Databricks クラスター サブネットから直接アクセスできる VPC インターフェイス エンドポイント を作成します。 このエンドポイントは、ワークスペース サブネットに作成できます。 Databricks では、ワークスペース VPC 用に作成されたものと同じセキュリティ グループを使用することをお勧めします。 この構成により、STS へのワークスペース トラフィックでエンドポイント ルートが使用されます。
Kinesis: Databricks クラスター サブネットから直接アクセスできる VPC インターフェイス エンドポイント を作成します。 このエンドポイントは、ワークスペース サブネットに作成できます。 Databricks では、ワークスペース VPC 用に作成されたものと同じセキュリティ グループを使用することをお勧めします。 この設定により、Kinesis へのワークスペーストラフィックはエンドポイントルートを使用します。 このルールの唯一の例外は、AWS リージョン
us-west-1
のターゲット Kinesis ストリームがus-west-2
リージョンへのクロスリージョンであるため、ワークスペースです。
ファイアウォールと送信アクセスを構成する
ほとんどのトラフィックをブロックし、Databricks が接続する必要がある URL を許可するには、出力ファイアウォールまたはプロキシ アプライアンスを使用する必要があります。
ファイアウォールまたはプロキシアプライアンスがDatabricksワークスペースVPCと同じVPCにある場合は、トラフィックをルーティングし、次の接続を許可するように設定します。
ファイアウォールまたはプロキシアプライアンスが別のVPCまたはオンプレミスネットワークにある場合は、最初に
0.0.0.0/0
をそのVPCまたはネットワークにルーティングし、次の接続を許可するようにプロキシアプライアンスを設定します。
重要
Databricksでは、宛先をIPアドレスではなく、エグレスインフラストラクチャのドメイン名として指定することを強くお勧めしています。
次の発信接続を許可します。接続タイプごとに、リンクに従ってワークスペースリージョンのIPアドレスまたはドメインを取得してください。
Databricks Webアプリケーション: 必須です。ワークスペースへのREST APIコールにも使用されます。
Databricks セキュア クラスター接続 (SCC) リレー: セキュアなクラスター接続に必要です。
AWS S3グローバル URL: DatabricksがルートS3バケットにアクセスするために必要です。 リージョンに関係なく、
s3.amazonaws.com:443
を使用します。AWS S3 リージョン別 URL: オプション。 他のリージョンにある可能性のある S3 バケットを使用する場合は、S3 リージョンエンドポイントも許可する必要があります。 AWS では、リージョン エンドポイント (
s3.<region-name>.amazonaws.com:443
) のドメインとポートを提供していますが、Databricks では、このトラフィックが AWS ネットワーク バックボーン経由でプライベート トンネルを通過するように、代わりに VPC エンドポイント を使用することをお勧めします。 「 (推奨) リージョン エンドポイントを構成する」を参照してください。AWS STS グローバル URL: 必須。 リージョンに関係なく、次のアドレスとポートを使用します。
sts.amazonaws.com:443
AWS STS リージョン URL: リージョン エンドポイントへの切り替えが予想されるため、必須です。 VPC エンドポイントを使用します。 「 (推奨) リージョン エンドポイントを構成する」を参照してください。
AWS Kinesis リージョン URL: 必須。 Kinesis エンドポイントは、ソフトウェアの管理とモニタリングに必要なログをキャプチャするために使用されます。 リージョンの URL については、「 Kinesis アドレス」を参照してください。
テーブル メタストア RDS リージョン URL (コンピュート プレーン リージョン別): Databricks ワークスペースでデフォルト Hive metastoreを使用する場合は必須です。
Hive metastoreは常にコンピュートプレーンと同じリージョンにありますが、コントロールプレーンとは異なるリージョンにある可能性があります。
注:
デフォルト Hive metastoreを使用する代わりに、 独自のテーブル メタストア インスタンスを実装することもできますが、その場合は、ネットワーク ルーティングを担当します。
コントロール プレーン インフラストラクチャ: 必須。 Databricks サービスの安定性を向上させるために、スタンバイ Databricks インフラストラクチャ用に Databricks によって使用されます。
リージョン エンドポイントのトラブルシューティング
上記の手順に従ったにもかかわらず、VPC エンドポイントが意図したとおりに機能しない場合 (たとえば、データソースにアクセスできない場合や、トラフィックがエンドポイントをバイパスしている場合など)、VPC エンドポイントを使用する代わりに、2 つの方法のいずれかを使用して、S3 と STS のリージョンエンドポイントのサポートを追加できます。
クラスター構成に環境変数
AWS_REGION
を追加し、AWS リージョンに設定します。 すべてのクラスターで有効にするには、 クラスターポリシーを使用します。 この環境変数は、DBFS マウントを使用するように既に構成されている可能性があります。必要な Apache Spark 構成を追加します。 次のいずれかの方法を実行します。
各ソース ノートブックで、次の操作を行います。
%scala spark.conf.set("fs.s3a.stsAssumeRole.stsEndpoint", "https://sts.<region>.amazonaws.com") spark.conf.set("fs.s3a.endpoint", "https://s3.<region>.amazonaws.com")
%python spark.conf.set("fs.s3a.stsAssumeRole.stsEndpoint", "https://sts.<region>.amazonaws.com") spark.conf.set("fs.s3a.endpoint", "https://s3.<region>.amazonaws.com")
または、クラスターの Apache Spark 構成で次のようにします*。
spark.hadoop.fs.s3a.endpoint https://s3.<region>.amazonaws.com spark.hadoop.fs.s3a.stsAssumeRole.stsEndpoint https://sts.<region>.amazonaws.com
ファイアウォールまたはインターネットアプライアンスを使用して従来のコンピュートプレーンからのエグレスを制限する場合は、これらのリージョンエンドポイントアドレスを許可リストに追加します。
すべてのクラスターにこれらの値を設定するには、 クラスターポリシーの一部として値を構成します。
(オプション)インスタンスプロファイルを使用した S3 へのアクセス
インスタンスプロファイルを使用して S3 マウントにアクセスするには、次の Spark 設定を設定します。
各ソース ノートブックで、次のいずれかの操作を行います。
%scala spark.conf.set("fs.s3a.stsAssumeRole.stsEndpoint", "https://sts.<region>.amazonaws.com") spark.conf.set("fs.s3a.endpoint", "https://s3.<region>.amazonaws.com")
%python spark.conf.set("fs.s3a.stsAssumeRole.stsEndpoint", "https://sts.<region>.amazonaws.com") spark.conf.set("fs.s3a.endpoint", "https://s3.<region>.amazonaws.com")
または 、クラスターの Apache Spark 構成で次のようにします。
spark.hadoop.fs.s3a.endpoint https://s3.<region>.amazonaws.com spark.hadoop.fs.s3a.stsAssumeRole.stsEndpoint https://sts.<region>.amazonaws.com
すべてのクラスターにこれらの値を設定するには、 クラスターポリシーの一部として値を構成します。
警告
S3 サービスの場合、ノートブックまたはクラスターレベルで追加のリージョンエンドポイント設定を適用することには制限があります。 特に、グローバル S3 URL がエグレスファイアウォールまたはプロキシで許可されている場合でも、クロスリージョン S3 アクセスへのアクセスはブロックされます。 Databricks デプロイでリージョン間の S3 アクセスが必要になる可能性がある場合は、ノートブック レベルまたはクラスター レベルで Spark 構成を適用しないことが重要です。
(オプション)S3 バケットへのアクセスを制限する
S3 からのほとんどの読み取りと書き込みは、コンピュートプレーン内で自己完結型です。 ただし、一部の管理操作は、Databricks によって管理されるコントロール プレーンから発生します。 S3 バケットへのアクセスを、指定したソース IP アドレスのセットに制限するには、S3 バケットポリシーを作成します。 バケットポリシーで、 aws:SourceIp
リストの IP アドレスを含めます。 VPC エンドポイントを使用する場合は、ポリシーの aws:sourceVpce
に追加してアクセスを許可します。
S3 バケットポリシーの詳細については、Amazon S3 ドキュメントのバケットポリシーの例を参照してください。 このトピックには、バケット ポリシーの実例も含まれています。
バケットポリシーの要件
バケットポリシーは、クラスターが正しく起動し、それらに接続できるように、次の要件を満たしている必要があります。
リージョンのコントロールプレーン NAT IP と VPC ID からのアクセスを許可する必要があります。
コンピュートプレーン VPC からのアクセスを許可するには、次のいずれかの操作を行う必要があります。
(推奨) 顧客管理 VPC でゲートウェイ VPC エンドポイントを設定し、バケットポリシーの
aws:sourceVpce
に追加するか、コンピュート プレーン NAT IP を
aws:SourceIp
リストに追加します。
Amazon S3 のエンドポイントポリシーを使用する場合、ポリシーには以下を含める必要があります。
企業ネットワーク内からの接続が失われないように、Databricks では、企業 VPN のパブリック IP など、少なくとも 1 つの既知の信頼できる IP アドレスからのアクセスを常に許可することをお勧めします。 これは、AWSコンソール内でも拒否条件が適用されるためです。
注:
S3 バケットポリシーの制限を使用して新しいワークスペースをデプロイする場合は、 us-west
リージョンのコントロールプレーン NAT-IP へのアクセスを許可する必要があり、そうしないとデプロイが失敗します。 ワークスペースがデプロイされたら、 us-west
情報を削除し、コントロール プレーン NAT-IP を更新してリージョンを反映できます。
必要な IP とストレージ バケット
ワークスペースの S3 バケットへのアクセスを制限するために S3 バケット ポリシーと VPC エンドポイント ポリシーを構成するために必要な IP アドレスとドメインについては、 「Databricks コントロール プレーンからのアウトバウンド」を参照してください。
バケットポリシーの例
これらの例では、プレースホルダーテキストを使用して、推奨IPアドレスと必要なストレージバケットを指定する場所を示します。 要件を確認して、クラスターが正しく起動し、それらに接続できることを確認します。
Databricks コントロール プレーン、コンピュート プレーン、信頼できる IP へのアクセスを制限します。
この S3 バケットポリシーでは、拒否条件を使用して、指定したコントロールプレーン、NAT ゲートウェイ、および企業 VPN IP アドレスからのアクセスを選択的に許可します。 プレースホルダーのテキストを環境の値に置き換えます。 ポリシーには任意の数の IP アドレスを追加できます。 保護する S3 バケットごとに 1 つのポリシーを作成します。
重要
VPC エンドポイントを使用する場合、このポリシーは完全ではありません。 「 Databricks コントロール プレーン、VPC エンドポイント、信頼できる IP へのアクセスを制限する」を参照してください。
{
"Sid": "IPDeny",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<S3-BUCKET>",
"arn:aws:s3:::<S3-BUCKET>/*"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"<CONTROL-PLANE-NAT-IP>",
"<DATA-PLANE-NAT-IP>",
"<CORPORATE-VPN-IP>"
]
}
}
}
Databricks コントロール プレーン、VPC エンドポイント、信頼できる IP へのアクセスを制限します。
VPC エンドポイントを使用して S3 にアクセスする場合は、ポリシーに 2 番目の条件を追加する必要があります。 この条件は、VPC エンドポイントを aws:sourceVpce
リストに追加することで、VPC エンドポイントからのアクセスを許可します。
このバケットは、VPC エンドポイント、および指定したコントロールプレーンと企業 VPN IP アドレスからのアクセスを選択的に許可します。
VPC エンドポイントを使用する場合は、S3 バケットポリシーの代わりに VPC エンドポイントポリシーを使用できます。 VPCE ポリシーでは、ルート S3 バケットへのアクセスと、 リージョンに必要なアーティファクト、ログ、共有データセットバケットへのアクセスを許可する必要があります。 VPC エンドポイントポリシーについては、AWS のドキュメントをご覧ください。
プレースホルダーのテキストを環境の値に置き換えます。
{
"Sid": "IPDeny",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<S3-BUCKET>",
"arn:aws:s3:::<S3-BUCKET>/*"
],
"Condition": {
"NotIpAddressIfExists": {
"aws:SourceIp": [
"<CONTROL-PLANE-NAT-IP>",
"<CORPORATE-VPN-IP>"
]
},
"StringNotEqualsIfExists": {
"aws:sourceVpce": "<VPCE-ID>"
}
}
}