内部ステージ用の AWS VPC インターフェイスエンドポイント

このトピックでは、 AWS VPC インターフェイスエンドポイントを介してSnowflake内部ステージに接続するための概念と、詳細な手順について説明します。

このトピックの内容:

概要

AWS VPC インターフェイスエンドポイントAWS PrivateLink for Amazon S3 を組み合わせて、Snowflake内部ステージへの安全な接続を提供できます。この設定により、Snowflake内部ステージへのデータのロードとアンロードの操作には AWS 内部ネットワークを使用し、パブリックインターネットを介さないようになります。

AWS が内部ステージアクセス用の VPC インターフェイスエンドポイントをサポートする前は、Snowflake内部ステージへの安全なアクセスを容易にするため、 AWS VPC 内にプロキシファームを作成する必要がありました。Snowflake内部ステージ用の VPC インターフェイスエンドポイントのサポートが追加されたことで、ユーザーアプリケーションとクライアントアプリケーションは、プライベート AWS ネットワークを介してSnowflake内部ステージにアクセスできるようになりました。次の図は、この新しいサポートをまとめたものです。

Connect to internal stage using AWS PrivateLink for S3

BEFORE 図の番号に関して次の点に注意してください。

  • ユーザーには、Snowflake内部ステージに接続するための2つのオプションがあります。

    • オプションAは、番号1で示されているように、内部ステージへの直接のオンプレミス接続を許可します。

    • オプションBは、番号2および3で示されているように、プロキシファームを介した内部ステージへの接続を許可します。

  • プロキシファームを使用している場合、ユーザーは番号4で示されているようにSnowflakeに直接接続することもできます。

AFTER 図の番号に関して次の点に注意してください。

  • この機能の更新により、プロキシファームを介してSnowflakeまたはSnowflake内部ステージに接続する必要がなくなります。

  • オンプレミスユーザーは、番号5に示すようにSnowflakeに直接接続できます。

  • Snowflake内部ステージに接続するには、オンプレミスユーザーは、番号6のインターフェイスエンドポイントに接続し、次に番号7に示すように、 AWS PrivateLink for Amazon S3を使用してSnowflake内部ステージに接続します。

内部ステージの展開ごとに1つのAmazonS3バケットがあります。内部ステージのAmazon S3バケットの プレフィックス は、各Snowflakeアカウントのデータを整理するために使用されます。Amazon S3バケットのエンドポイント URLs は、バケットへの接続がプライベート接続を使用するかどうかによって異なります(つまり、 AWS PrivateLink for S3)。

Amazon S3グローバルパブリックエンドポイント URL

<バケット名>.s3.region.amazonaws.com/prefix

Amazon S3 プライベートエンドポイント URL

<vpceID>.s3.<リージョン>.vpce.amazonaws.com/prefix

利点

Snowflake内部ステージにアクセスするために VPC インターフェイスエンドポイントを実装すると、次の利点があります。

  • 内部ステージのデータは、パブリックインターネットを通過しません。

  • AWS VPC の外部で実行されるクライアントおよび SaaS アプリケーション(Microsoft PowerBI など)は、安全にSnowflakeに接続できます。

  • 管理者は、内部ステージデータにアクセスするためにファイアウォール設定を変更する必要がありません。

  • 管理者は、ユーザーがストレージアカウントに接続する方法に関して、一貫したセキュリティと監視を実装できます。

制限事項

Snowflake内部ステージにアクセスするための VPC インターフェイスエンドポイントの構成

Snowflake内部ステージにアクセスするように VPC インターフェイスエンドポイントを構成するには、組織内にある次のロール3つからのサポートが必要です。

  1. Snowflakeアカウント管理者(つまり、Snowflake ACCOUNTADMIN システムロールを持つユーザー)。

  2. AWS 管理者。

  3. ネットワーク管理者。

組織によっては、次の構成ステップを実装するために、構成作業で複数の人またはチームとの調整が必要になる場合があります。

前提条件

  • AWS PrivateLink for S3

    重要

    AWS PrivateLink for S3は、クラウド環境で有効にする必要がある AWS サービスです。

    このサービスの構成と実装については、 AWS 内部管理者にお問い合わせください。

  • ファイアウォールの許可リストを次のように更新します。

    • 送信のファイアウォールを使用する場合は、Snowflakeに必要なすべての URLs が許可されていることを確認します。詳細については、 SnowCD (Connectivity Diagnostic Tool) をご参照ください。

  • us-east-1 のお客様 限定: 次のSnowflakeクライアントのいずれかを使用してSnowflakeに接続する場合は、次のようにクライアントバージョンにアップグレードします。

    • JDBC ドライバー3.13.3(またはそれ以上)

    • ODBC ドライバー2.23.2(またはそれ以上)

    • Snowflake用Pythonコネクタ: 2.5.1(またはそれ以上)

    • SnowSQL: 1.2.17 (またはそれ以上)

      • この機能を使用する前に、 SnowSQL をアップグレードします。詳細については、 SnowSQL のインストール をご参照ください。

      • SnowSQL --noup オプション を使用している場合、 SnowSQL 自動アップグレードは無効になり、新しい SnowSQL バージョンをダウンロードできないことに注意してください。アップグレードするには、 --noup オプションを無効にし、アップグレードの完了後に再度有効にします。

実装手順

次のステップを実行して、 VPC エンドポイントを介したSnowflake内部ステージへの安全なアクセスを構成および実装します。

  1. Snowflake管理者として、 SYSTEM$WHITELIST_PRIVATELINK 関数を実行し、 STAGE キーで定義された内部ステージ URL を記録します。

    Amazon S3バケット名は、左から右に読み取るときに URL の最初のセグメントで定義されることに注意してください。

  2. AWS 管理者として、 AWS コンソールを使用して、 AWS PrivateLink for S3の VPC エンドポイントを作成します。次のステップで使用するためにVPCE DNS 名を記録します。 VPCE DNS ゾーン名は、記録 しません

    VPCE DNS 名は、エンドポイントの作成後に、 インターフェイスエンドポイント を説明することで検索できます。

    この例では、ワイルドカード(つまり、 *)が VPCE DNS 名の先頭文字としてリストされています。先頭のワイルドカードを前のステップのAmazonS3バケット名に置き換えます。例:

    置換

    *.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

    使用

    <バケット名>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

  3. ネットワーク管理者として、次の2つの URLs を解決するように DNS 設定を更新します。

    <バケット名>.s3.<リージョン>.amazonaws.com から <バケット名>.<vpceID>.s3.<リージョン>.vpce.amazonaws.com

    ちなみに

    • Snowflakeの外部にある他の AWS S3バケットにアクセスすると影響を受ける可能性があるため、 DNS マッピングでワイルドカード文字(つまり *)を使用しないでください。

    • テストには別のSnowflakeアカウントを使用し、テスト VPC でプライベートホスト DNS ゾーンを構成して機能をテストすることにより、テストが分離されて他のワークロードに影響を与えないようにします。

    • 別のSnowflakeアカウントを使用できない場合は、テストユーザーを使用して、 DNS の変更を実行したテスト VPC からSnowflakeにアクセスします。

    • オンプレミスアプリケーションからテストするには、 DNS 転送を使用して、 DNS を設定する VPC 内にある AWS プライベートホストゾーンにリクエストを転送します。VPC とオンプレミスの両方にクライアントアプリケーションがある場合は、 AWS Transit Gatewayを使用します。

    • クライアントマシンから次のコマンドを実行して、返された IP アドレスがストレージアカウントのプライベート IP アドレスであることを確認します。

      dig <bucket_name>.s3.<region>.amazonaws.com
      
  4. us-east-1 にあるSnowflakeアカウントの場合は、Snowflakeクライアントが最新バージョンであることを確認します。