メインコンテンツまでスキップ

顧客管理VPCの構成

概要

デフォルトでは、クラスターは、AWSVPC アカウントで作成および構成する単一の(Virtual Private Cloud)で作成されます。DatabricksAWS必要に応じて、 Databricks ワークスペースを独自の VPCで作成でき、 これは顧客管理 (顧客管理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

顧客管理VPC VPCを利用するには、Databricks ワークスペースを最初に作成するときに を指定する必要があります。Databricks管理VPCを持つ既存のワークスペースを移動して、顧客管理VPC使用することはできません。ただし、顧客管理VPC を持つ既存のワークスペースを 1 つの VPC から別の VPC に移動するには、ワークスペース構成のネットワーク構成オブジェクトを更新します。 「実行中または失敗したワークスペースの更新」を参照してください。

独自のVPCにワークスペースをデプロイするには、次のことを行う必要があります:

  1. VPC の要件に列挙されている要件に従って VPC を作成します。

  2. ワークスペースを作成するときに、DatabricksのVPCネットワーク設定を参照します。

    VPCをDatabricksに登録するときに、VPC ID、サブネットID、セキュリティグループIDを指定する必要があります。

VPC の要件

Databricksワークスペースをホストするには、VPCがこのセクションで説明されている要件を満たしている必要があります。

要件:

VPC リージョン

顧客管理 をサポートする リージョンの一覧については、「 リージョンの可用性が制限されている機能AWSVPC 」を参照してください。

VPC のサイジング

1 つの AWS アカウント で 1 つの VPC を複数のワークスペースと共有できます。 ただし、Databricks では、ワークスペースごとに一意のサブネットとセキュリティ グループを使用することをお勧めします。 VPCとサブネットのサイズはそれに応じて設定してください。 Databricks ノードごとに2つのIPアドレス(1つは管理トラフィック用、もう1つは Apache Sparkアプリケーション用)を割り当てます。 各サブネットのインスタンスの合計数は、使用可能な IP アドレスの数の半分に等しくなります。 詳細については 、サブネットを参照してください。

VPC の IP アドレス範囲

DatabricksではワークスペースVPCのネットマスクを制限していませんが、各ワークスペースのサブネットには/17/26のネットマスクが必要です。つまり、ワークスペースに2つのサブネットがあり、両方のネットマスクが/26の場合、ワークスペースVPCのネットマスクは/25以下であることが必要です。

important

VPCにセカンダリCIDRブロックを設定している場合は、Databricksワークスペースのサブネットが同じVPC CIDRブロックで設定されていることを確認してください。

DNSの

VPCでDNSホスト名とDNS解決が有効になっている必要があります。

サブネット

Databricksは、 ワークスペースごとに少なくとも2つのサブネット にアクセスできる必要があります(各サブネットは異なるアベイラビリティゾーンにあります)。ネットワーク設定の作成APIコールでアベイラビリティゾーンごとに複数のDatabricksワークスペースサブネットを指定することはできません。ネットワーク設定の一環としてアベイラビリティゾーンごとに複数のサブネットを設定することはできますが、Databricksワークスペースに選択できるサブネットはアベイラビリティゾーンごとに1つだけです。

1つのサブネットを複数のワークスペースで共有するか、両方のサブネットをワークスペースで共有するかを選択できます。たとえば、同じVPCを共有する2つのワークスペースを持つことができます。あるワークスペースではサブネットABを使用し、別のワークスペースではサブネットACを使用することができます。複数のワークスペース間でサブネットを共有する場合は、使用量に応じて拡張できる大きさになるようにVPCとサブネットのサイズを設定してください。

Databricksは、ノードごとに2つのIPアドレス(1つは管理トラフィック用、もう1つはSparkアプリケーション用)を割り当てます。各サブネットのインスタンスの合計数は、使用可能なIPアドレスの数の半分になります。

各サブネットには、/17/26のネットマスクが必要です。

追加のサブネット要件

  • サブネットはプライベートにする必要があります。
  • サブネットは、NATゲートウェイインターネットゲートウェイ、またはその他の同様のカスタマーマネージドアプライアンスインフラストラクチャを使用して、パブリックネットワークへのアウトバウンドアクセスが可能であることが必要です。
  • NAT ゲートウェイは、クワッドゼロ0.0.0.0/0() トラフィックをインターネットゲートウェイ またはその他の顧客管理アプライアンスインフラストラクチャにルーティングする 独自のサブネットに 設定する必要があります。
important

ワークスペースには、VPC からパブリックネットワークへのアウトバウンドアクセスが必要です。 IP アクセス リストを設定する場合は、それらのパブリック ネットワークを許可リストに追加する必要があります。 ワークスペースの IP アクセス リストの構成を参照してください。

サブネットルートテーブル

ワークスペースサブネットのルートテーブルには、適切なネットワークデバイスをターゲットとするクアッドゼロ(0.0.0.0/0)トラフィックが必要です。クアッドゼロトラフィックはNATゲートウェイまたは独自のマネージドNATデバイスまたはプロキシアプライアンスをターゲットにする必要があります。

important

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 を使用する場合にのみ必要
important

アウトバウンドトラフィックに対して追加のALLOWまたはDENYルールを設定する場合は、Databricksが要求するルールを最高の優先度(最も小さいルール番号)に設定して、それらが優先されるようにします。

イングレス(インバウンド):

  • ALLOW ALL from Source 0.0.0.0/0。このルールは優先される必要があります。
注記

Databricks では、 0.0.0.0/0 を許可リストに追加するために、サブネットレベルのネットワーク ACL が必要です。 エグレス トラフィックを制御するには、エグレス ファイアウォールまたはプロキシ アプライアンスを使用してほとんどのトラフィックをブロックしますが、Databricks が接続する必要がある URL を許可します。 「ファイアウォールと送信アクセスの構成」を参照してください。

このVPCを使用しているワークスペースでAWS PrivateLinkを有効にする場合は、次のことを行います:

  • VPCで、 DNSホスト名DNS解決 の両方の設定が有効になっていることを確認します。
  • VPC エンドポイント用の追加のサブネットの作成 (推奨されますが、必須ではありません) と VPC エンドポイント用の追加のセキュリティグループの作成に関するガイダンスについては、 AWS PrivateLink を使用してプライベート接続を有効にする の記事を参照してください。

VPC を作成する

VPCの作成に使用できるさまざまなツール:

AWSコンソールを使用してVPCと関連オブジェクトを作成および設定するための基本的な手順を以下に示します。詳細な手順については、AWSのドキュメントを参照してください。

注記

これらの基本的な手順がすべての組織に適用されるわけではありません。お客様の設定要件は異なる場合があります。このセクションでは、NAT、ファイアウォール、またはその他のネットワークインフラストラクチャを設定するすべての方法について説明するものではありません。ご不明な点がございましたら、先に進む前にDatabricksアカウントチームにお問い合わせください。

  1. AWSのVPCページに移動します。

  2. 右上のリージョンピッカーを参照してください。必要に応じて、ワークスペースのリージョンに切り替えます。

  3. 右上にあるオレンジ色のボタン[ VPCを作成する ]をクリックします。

    新しいVPCエディターを作成する

  4. [ VPCなど ]をクリックします。

  5. [ ネームタグ自動生成 ]に、ワークスペースの名前を入力します。Databricksでは、名前にリージョンを含めることをお勧めしています。

  6. 必要に応じて、VPCアドレス範囲を変更します。

  7. パブリックサブネットの場合は、2をクリックします。これらのサブネットはDatabricksワークスペースでは直接使用されませんが、このエディターでNATを有効にするために必要です。

  8. プライベートサブネットの場合は、ワークスペースサブネットの最小値として2をクリックします。必要に応じてさらに追加できます。

    Databricksワークスペースには、少なくとも2つのプライベートサブネットが必要です。サイズを変更するには、 [サブネットCIDRブロックのカスタマイズ] をクリックします。

  9. NATゲートウェイを使用する場合は、[ 1つのアベイラビリティゾーンで(In 1 AZ) ]をクリックします。

  10. 下部にある[ DNSホスト名を有効化 ]フィールドと[ DNS解決を有効化 ]フィールドが有効になっていることを確認します。

  11. [ VPCを作成する ]をクリックします。

  12. 新しいVPCを表示しているときに、左側のナビゲーションアイテムをクリックして、VPCの関連設定を更新します。[ VPCでフィルタリング ]フィールドで新しいVPCを選択することで、関連オブジェクトを見つけやすくなります。

  13. [サブネット] をクリックし、AWS が 1 と 2 とラベル付けした プライベート サブネット (メインワークスペースサブネットの設定に使用するもの) をクリックします。VPC 要件で指定されているとおりにサブネットを変更します。

    PrivateLink で使用する追加のプライベートサブネットを作成した場合は、「 AWS PrivateLink を使用してプライベート接続を有効にする」で指定されているようにプライベートサブネット 3 を設定します。

  14. [セキュリティ グループ ] をクリックし、[セキュリティ グループ] で指定されているセキュリティ グループを変更します。

    バックエンドの PrivateLink 接続を使用する場合は、「 ステップ 1: AWS ネットワークオブジェクトを設定する」セクションの PrivateLink の記事で指定されているように、インバウンドルールとアウトバウンドルールを使用して追加のセキュリティグループを作成します。

  15. [ネットワーク ACL] をクリックし、「サブネットレベルのネットワーク ACL」で指定されているとおりにネットワーク ACL を変更します。

  16. この記事で後述する任意の設定を行うかどうかを選択してください。

  17. に を登録して、VPCDatabricks アカウントコンソール またはアカウントAPI を使用してネットワーク設定を作成します。

CIDR の更新

あとで元のサブネットと重複するサブネットCIDRの更新が必要となる場合があります。

CIDRおよびその他のワークスペースオブジェクトを更新するには、次のことを行います:

  1. 更新する必要があるサブネットで実行されているすべての実行中のクラスター(およびその他のコンピュートリソース)を終了します。

  2. AWSコンソールを使用して、更新するサブネットを削除します。

  3. 更新されたCIDR範囲でサブネットを再作成します。

  4. 2つの新しいサブネットのルートテーブルの関連付けを更新します。各アベイラビリティゾーンのものを既存のサブネットに再利用できます。

important

このステップをスキップしたり、ルートテーブルを誤って設定したりすると、クラスターの起動に失敗する可能性があります。

  1. 新しいサブネットで新しいネットワーク設定オブジェクトを作成します。

  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 :VPCDatabricksクラスター サブネットから直接アクセスできる ゲートウェイ エンドポイント を作成します。これにより、リージョン内のすべての S3 バケットへのワークスペーストラフィックがエンドポイントルートを使用するようになります。 クロスリージョンバケットにアクセスするには、エグレスアプライアンスで 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 :VPCDatabricksクラスター サブネットから直接アクセスできる インターフェイス エンドポイント を作成します。このエンドポイントは、ワークスペース サブネットに作成できます。 Databricks では、ワークスペース VPC 用に作成されたものと同じセキュリティ グループを使用することをお勧めします。 この設定により、Kinesis へのワークスペーストラフィックはエンドポイントルートを使用します。 このルールの唯一の例外は、AWS リージョンのワークスペース us-west-1 、このリージョンのターゲット Kinesis ストリームは us-west-2 リージョンとクロスリージョンであるためです。

ファイアウォールと送信アクセスを構成する

エグレスファイアウォールまたはプロキシアプライアンスを使用して、ほとんどのトラフィックをブロックし、Databricksが接続する必要のあるURLを許可します。

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

Databricksでは、宛先をIPアドレスではなく、エグレスインフラストラクチャのドメイン名として指定することを強くお勧めしています。

次の発信接続を許可します。接続タイプごとに、リンクに従ってワークスペースリージョンのIPアドレスまたはドメインを取得してください。

  • Databricks Webアプリケーション :必須。ワークスペースへのREST APIコールにも使用されます。

    Databricksコントロールプレーンアドレス

  • Databricksセキュリティで保護されたクラスター接続(SCC)リレー : 安全なクラスター接続に必要です。

    Databricksコントロールプレーンアドレス

  • 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のRDSアドレス

注記

デフォルト Hive metastoreを使用する代わりに、 独自のテーブルメタストアインスタンスを実装することを選択できます。その場合は、ネットワークルーティングを担当します。

  • コントロールプレーンインフラストラクチャ :必須。Databricksサービスの安定性を向上させるために、DatabricksによってスタンバイDatabricksインフラストラクチャに使用されます。

    Databricksコントロールプレーンアドレス

地域のエンドポイントのトラブルシューティング

上記の手順を実行してもVPCエンドポイントが意図したとおりに動作しない場合、たとえば、データソースにアクセスできない場合やトラフィックがエンドポイントをバイパスしている場合、VPCエンドポイントを使用する代わりに、2つの方法のいずれかを使用してS3およびSTSのリージョンエンドポイントのサポートを追加できます。

  1. クラスター設定に AWS_REGION 環境変数を追加し、 AWS リージョンに設定します。 すべてのクラスターで有効にするには、 クラスターポリシーを使用します。 この環境変数は、DBFS マウントを使用するように既に構成されている場合があります。

  2. 必要なApache Spark設定を追加します。以下の方法のうち、いずれか1つを行ってください:

    • それぞれのソースノートブックで
Scala
%scala
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
  1. ファイアウォールやインターネットアプライアンスを使用して従来のコンピュートプレーンからの送信を制限する場合は、これらの地域のエンドポイントアドレスを許可リストに追加してください。

すべてのクラスターに対してこれらの値を設定するには、 クラスターポリシーの一部として値を構成します。

(オプション)インスタンスプロファイルを使用したS3へのアクセス

インスタンスプロファイルを使用して S3 マウントにアクセスするには、次の Spark 設定を設定します。

  • 各ソースノートブックのどちらか
Scala
%scala
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を使用します。

bucket ポリシーの詳細については ドキュメントのS3bucket ポリシーの例 AmazonS3を参照してください。このトピックには、 実際のバケットポリシー の例も含まれています。

バケットポリシーの要件

クラスターが正しく起動し、クラスターに接続できるようにするには、バケットポリシーが次の要件を満たすことが必要です:

注記

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つのポリシーを作成します。

important

VPC エンドポイントを使用する場合、このポリシーは完全ではありません。 「Databricks コントロール プレーン、VPC エンドポイント、信頼できる IP へのアクセスを制限する」を参照してください。

JSON
{
"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 エンドポイントポリシーを使用できます。 VPC ポリシーでは、ルート S3 バケットと、リージョンの必要なアーティファクト、ログ、共有データセットバケットへのアクセスを許可する必要があります。 リージョンの IP アドレスとドメインについては、「 Databricks サービスと資産の IP アドレスとドメイン」を参照してください。

プレースホルダーのテキストを環境の値に置き換えます。

JSON
{
"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>"
}
}
}