Snowflake管理ストレージボリュームの AWS VPC インターフェースエンドポイント

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

概要

Apache Sparkなどの外部クエリエンジンを使用して、Snowflakeが管理するストレージを使用するIcebergテーブルを読み取る、または書き込む場合、クエリエンジンはAmazon S3でホストされているネイティブのicebergボリュームと直接通信します。デフォルトでは、このトラフィックはパブリックインターネットを通過できます。

Amazon S3の AWS PrivateLink は VPC インターフェースエンドポイントと組み合わせて、管理ストレージボリュームへの安全な接続を提供できます。この設定により、外部クエリエンジンからネイティブIcebergボリュームへの読み取りと書き込み操作では、パブリックインターネットの代わりに AWS 内部ネットワークが使用されます。

利点

Snowflake管理ストレージボリュームにアクセスするために VPC インターフェースエンドポイントを実装すると、次の利点があります。

  • 外部クエリエンジンがSnowflakeの管理するicebergボリュームから読み取り、または書き込みを行う場合、データはパブリックインターネットを通過しません。

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

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

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

制限事項

AWSは、Amazon S3サービスのクロスリージョン VPCインターフェースエンドポイントをサポートしていません。したがって、 VPC インターフェースエンドポイントは、Snowflake管理ストレージボリュームへのインバウンド接続を提供するために、Snowflakeアカウントと同じリージョンに配置する必要があります。

AWS PrivateLinkのクロスリージョンサポートは、政府リージョンや中華人民共和国では利用できません。

連邦情報処理標準(FIPS)準拠のために SnowGovリージョンを使用しているお客様は、Amazon S3用の AWS Privatelinkが FIPSエンドポイントをサポートしていないことに注意する必要があります。

FIPS が適用される AWS リージョンの詳細については、 サポートされているクラウドリージョン をご参照ください。

アカウントの地域名の見つけ方については、 アカウントのリージョンのクラウドプロバイダー名を見つける をご参照ください。

AWSPrivateLink の制限の詳細については、 `AWS ドキュメント <https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#privatelink-limitations>`_をご参照ください。

はじめるにあたり

AWS PrivateLink を介してSnowflake管理ストレージボリュームへのアクセスのリクエストを許可するように AWS とSnowflakeを構成するには、前提条件を満たしている必要があります。

前提条件

  • 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 のインストール をご参照ください。

      • バージョン1.3.0以降、 SnowSQL はデフォルトで自動アップグレードを無効にし、自動アップグレードが発生した場合に実稼働環境に影響を及ぼす可能性のある問題を回避しています。アップグレードするには、できれば非実稼働環境で、新しいバージョンを手動でダウンロードし、インストールする必要があります。Snowflakeではこの設定を無効にしておくことを推奨していますが、 SnowSQL noup オプション オプションを設定することで、自動アップグレード動作を手動で有効にすることができます。

インターフェースエンドポイントによるSnowflake管理ストレージボリュームへのアクセス

VPC インターフェースエンドポイントを構成してSnowflake管理ストレージボリュームにアクセスするには、組織内の以下のロールが調整する必要があります。

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

  2. AWS 管理者。

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

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

プロシージャ

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

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

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

    VPCE DNS 名の例: *.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com

  2. VPCEDNS 名を直接使用するように、外部クエリエンジンを構成します。VPCE DNS 名の *bucket で置き換えます。たとえば、Apache Sparkでは次のようになります。

    .config("spark.sql.catalog.<catalog_name>.s3.endpoint",
            "bucket.vpce-000000000000a12-abc00ef0.s3.us-west-2.vpce.amazonaws.com")
    

    Tip

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

パブリックアクセスのブロック

AWS PrivateLink を介して管理ストレージボリュームへアクセスするように VPC インターフェースエンドポイントを構成したら、ネットワークルールとネットワークポリシーを使用して、ボリュームへのアクセスを任意で制限できます。

前提条件

ネットワークルールを使用してSnowflake管理ストレージボリュームへのアクセスを制限するには、アカウント管理者が ENFORCE_NETWORK_RULES_FOR_SNOWFLAKE_MANAGED_STORAGE_VOLUME パラメーターを有効にする必要があります。

USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENFORCE_NETWORK_RULES_FOR_SNOWFLAKE_MANAGED_STORAGE_VOLUME = true;

ネットワークルールの作成

MODE = SNOWFLAKE_MANAGED_STORAGE_VOLUME および TYPE = AWSVPCEID を使用してネットワークルールを作成し、 VPC エンドポイント識別子に基づいて管理ストレージボリュームへのアクセスを制限します。

CREATE NETWORK RULE managed_volume_rule
  TYPE = AWSVPCEID
  VALUE_LIST = ('vpce-123abc3420c1931')
  MODE = SNOWFLAKE_MANAGED_STORAGE_VOLUME
  COMMENT = 'Allow access from Horizon and S3 VPC endpoints';

ネットワークポリシーの適用

ネットワークルールを使用するネットワークポリシーを作成し、アカウントに適用します。

CREATE NETWORK POLICY managed_volume_policy
  ALLOWED_NETWORK_RULE_LIST = ('managed_volume_rule')
  COMMENT = 'Restrict Snowflake-managed storage volume access to specific VPC endpoints';

ALTER ACCOUNT SET NETWORK_POLICY = managed_volume_policy;