顧客管理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

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

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

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

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

    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つのワークスペースを持つことができます。あるワークスペースではサブネットABを使用し、別のワークスペースではサブネットACを使用することができます。複数のワークスペース間でサブネットを共有する場合は、使用量に応じて拡張できる大きさになるように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を許可します。ファイアウォールと送信アクセスを構成するを参照してください。

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. VPCをDatabricksに登録し、アカウントコンソールまたはアカウントAPIを使用してネットワーク設定を作成します。

CIDRの更新

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

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

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

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

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

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

    重要

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

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

  6. この新しく作成されたネットワーク設定オブジェクトを使用するようにワークスペースを更新します

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

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

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

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

重要

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では、代わりに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のRDSアドレス

    注:

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

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

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

リージョンエンドポイントのトラブルシューティング

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

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

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

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

(オプション)インスタンスプロファイルを使用した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ドキュメントのバケットポリシーの例を参照してください。このトピックには、バケットポリシーの実例も含まれています。

バケットポリシーの要件

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

注:

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