顧客管理VPCの設定
概要
デフォルトでは、Databricksがお客様のAWSアカウント内に作成・設定するAWS VPC(仮想プライベートクラウド)にクラスターが作成されます。顧客管理VPCという機能により、必要に応じて、独自のVPCにDatabricksワークスペースを作成することができます。顧客管理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リージョンのリストについては、リージョン限定で利用可能な機能を参照してください。
VPCのサイジング
1つのVPCを、単一の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つのワークスペースを持つことができます。あるワークスペースではサブネットA
とB
を使用し、別のワークスペースではサブネットA
とC
を使用することができます。複数のワークスペース間でサブネットを共有する場合は、使用量に応じて拡張できる大きさになるようにVPCとサブネットのサイズを設定してください。
Databricksは、ノードごとに2つのIPアドレス(1つは管理トラフィック用、もう1つはSparkアプリケーション用)を割り当てます。各サブネットのインスタンスの合計数は、使用可能なIPアドレスの数の半分になります。
各サブネットには、/17
~/26
のネットマスクが必要です。
その他のサブネット要件
サブネットはプライベートにする必要があります。
サブネットは、NATゲートウェイやインターネットゲートウェイ、またはその他の同様のカスタマーマネージドアプライアンスインフラストラクチャを使用して、パブリックネットワークへのアウトバウンドアクセスが可能であることが必要です。
NATゲートウェイは、クアッドゼロ(
0.0.0.0/0
)トラフィックをインターネットゲートウェイまたは他のカスタマーマネージドアプライアンスインフラストラクチャにルーティングする独自のサブネット内に設定する必要があります。
重要
ワークスペースには、VPCからパブリックネットワークへのアウトバウンドアクセスが必要です。IPアクセスリストを設定する場合は、それらのパブリックネットワークを許可リストに追加する必要があります。ワークスペースのIPアクセスリストを構成するを参照してください。
サブネットルートテーブル
ワークスペースサブネットのルートテーブルには、適切なネットワークデバイスをターゲットとするクアッドゼロ(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: DatabricksコンピュートプレーンからDatabricksコントロールプレーンAPIへの内部呼び出し用。
8444: Unity Catalogのログ記録とDatabricksへの系列データストリーミング用。
8445〜8451: 将来的な拡張性。
イングレス(インバウンド):すべてのワークスペースに必要です(これらは個別のルールにすることも、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では、サブネットレベルのネットワークACLで許可リストに0.0.0.0/0
を追加することを要求しています。エグレストラフィックを制御するには、エグレスファイアウォールまたはプロキシアプライアンスを使用して、ほとんどのトラフィックをブロックし、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つのアベイラビリティゾーンで(In 1 AZ)]をクリックします。
下部にある[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サービスは以下の4つです: STS、S3、Kinesis、RDS。
VPCからRDSサービスへの接続が必要なのは、デフォルトのDatabricksレガシー Hive metastoreを使用する場合のみで、Unity Catalogには適用されません。RDS用のVPCエンドポイントはありませんが、デフォルトのDatabricksレガシーHive metastoreを使用する代わりに、独自の外部メタストアを構成することができます。外部メタストアは、Hive metastoreまたはAWS Glueを使用して実装できます。
他の3つのサービスについては、クラスターからの関連するリージョン内トラフィックがパブリックネットワークではなく、安全なAWSバックボーンを介して転送できるように、VPCゲートウェイまたはインターフェイスエンドポイントを作成できます:
S3:Databricksクラスターサブネットから直接アクセスできるVPCゲートウェイエンドポイントを作成します。これにより、リージョン内のすべてのS3バケットへのワークスペーストラフィックがエンドポイントルートを使用します。クロスリージョンのバケットにアクセスするには、EgressアプライアンスでS3グローバルURL
s3.amazonaws.com
へのアクセスを開くか、0.0.0.0/0
をAWSインターネットゲートウェイにルーティングしてください。リージョンエンドポイントが有効になっている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では、代わりにVPCエンドポイントを使用して、このトラフィックがAWSネットワークバックボーン上のプライベートトンネルを通過するようにすることをお勧めします。「(推奨)リージョンエンドポイントを構成する」を参照してください。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設定を追加します。以下の方法のうち、いずれか1つを行ってください:
それぞれのソースノートブックで:
%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 configで*:
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からの読み込みとS3への書き込みのほとんどは、コンピュートプレーン内で自己完結しています。ただし、一部の管理操作は、Databricksによって管理されるコントロールプレーンから実行されます。S3バケットへのアクセスを指定されたソースIPアドレスのセットに制限するには、S3バケットポリシーを作成します。バケットポリシーで、aws:SourceIp
リストにIPアドレスを含めます。VPCエンドポイントを使用する場合は、ポリシーのaws:sourceVpce
に追加してアクセスを許可します。Databricksは、Databricksコントロールプレーンと同じリージョンにあるS3バケットにアクセスするためにVPC IDを使用し、コントロールプレーンから異なるリージョンにあるS3バケットにアクセスするためにNAT IPを使用します。
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を参照してください。
バケットポリシーの例
これらの例では、プレースホルダーテキストを使用して、推奨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エンドポイントとVPC IDをaws:sourceVpce
リストに追加することで、VPCエンドポイントとVPC IDからのアクセスを許可します。
このバケットは、VPCエンドポイントからのアクセス、コントロールプレーン、指定した企業VPN IPアドレスからのアクセスを選択的に許可します。
VPCエンドポイントを使用する場合、S3バケットポリシーの代わりにVPCエンドポイントポリシーを使用できます。VPCEポリシーは、ルートS3バケットと、リージョンに必要なアーティファクト、ログ、共有データセットバケットへのアクセスを許可する必要があります。お住まいの地域のIPアドレスとドメインについては、DatabricksサービスおよびアセットのIPアドレスとドメインを参照してください。
プレースホルダーのテキストを環境の値に置き換えます。
{
"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>",
"aws:SourceVPC": "<VPC-ID>"
}
}
}