内部ステージ用の 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アカウント管理者として、Snowflakeアカウントで次のステートメントを実行し、 privatelink_internal_stage キーで定義された値を記録します。Amazon S3バケット名は、左から右に読み取るときに URL の最初のセグメントで定義されることに注意してください。詳細については、 ENABLE_INTERNAL_STAGES_PRIVATELINK および SYSTEM$GET_PRIVATELINK_CONFIG をご参照ください。

    use role accountadmin;
    alter account set ENABLE_INTERNAL_STAGES_PRIVATELINK = true;
    select key, value from table(flatten(input=>parse_json(system$get_privatelink_config())));
    
    Copy
  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. ネットワーク管理者として、次の URL を解決するように DNS 設定を更新します。

    先頭のワイルドカードがAmazonS3バケット名に置き換えられた後、 <バケット名>.s3.<リージョン>.amazonaws.com をVPCE DNS 名に変更します。

    この例では、 <バケット名>.s3.<リージョン>.amazonaws.com<バケット名>.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com に解決します。

    ちなみに

    • Snowflakeの外部にある他のAmazon 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
      
      Copy
  4. us-east-1 にあるSnowflakeアカウントの場合は、Snowflakeクライアントが最新バージョンであることを確認します。