Snowflake管理ストレージボリュームのAzureプライベートエンドポイント

このトピックでは、Microsoft Azureプライベートエンドポイントを介してSnowflake管理ストレージボリュームに接続するための概念と、詳細な手順について説明します。Snowflake管理ストレージボリュームは、 Snowflakeをカタログとして使用するApache Icebergテーブル のストレージ場所です。

概要

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

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

利点

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

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

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

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

制限事項

Microsoft AzureはプライベートエンドポイントがSnowflakeとどのように相互作用できるかを定義します。

  • 単一のプライベートエンドポイントは、単一のSnowflakeサービスエンドポイントと通信できます。同じSnowflake管理ストレージボリュームに接続する複数の1対1の構成を持つことができます。

  • Snowflake管理ストレージボリュームに接続できるストレージアカウントのプライベートエンドポイントの最大数は固定です。詳細については、 標準ストレージアカウント制限 をご参照ください。

Snowflake管理ストレージボリュームにアクセスするためのプライベートエンドポイントの構成

Snowflake管理ストレージボリュームにアクセスするようにプライベートエンドポイントを構成するには、組織内にある次の3つのロールから、サポートが必要です。

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

  2. Microsoft Azure管理者。

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

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

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

  1. AzureサブスクリプションがAzure Storageリソースマネージャーに登録されていることを確認します。この手順により、プライベートエンドポイントから管理ストレージボリュームに接続できるようになります。

  2. Snowflakeアカウント管理者として、Snowflakeアカウントで以下のコマンドを実行します。privatelink-snowflake-managed-storage-volume-nfs および privatelink-snowflake-managed-storage-volume-fs キーによって定義された非フェイルセーフおよびフェイルセーフのSnowflake管理ストレージボリュームのストレージアカウントのリソースIDをそれぞれ記録します。 パラメーターで指定。詳細については、 ENABLE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK および SYSTEM$GET_PRIVATELINK_CONFIG をご参照ください。

    USE ROLE ACCOUNTADMIN;
    ALTER ACCOUNT SET ENABLE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK = true;
    SELECT KEY, VALUE FROM TABLE(FLATTEN(input=>PARSE_JSON(SYSTEM$GET_PRIVATELINK_CONFIG())));
    
  3. Azure管理者として、Azureポータルから各Snowflake管理ストレージボリュームにプライベートエンドポイントを作成します。

    プライベートエンドポイントのプロパティを表示し、リソース ID値を記録します。次のステップで、この値を privateEndpointResourceID 関数の引数として提供します。

    詳細については、Microsoft Azure Private Link ドキュメント をご参照ください。

    重要

    プライベートエンドポイントを認証する次のステップに進む前に、プライベートエンドポイントがストレージの場所で 初めて 承認された場合の Microsoft Azure DNS 動作に注意してください。

    最初のプライベートエンドポイントが接続されて承認されると、Azureは自動的にパブリック DNS に CNAME 記録を作成します。

    通常の状況では、この DNS の更新は、ストレージアカウントへの既存のパブリック接続に影響を与えません。ただし、環境にすでにプライベート DNS ゾーンが構成されている場合、この DNS を更新すると、意図しない動作が発生する可能性があります。

    この問題を回避するために、Microsoftは最初のプライベートエンドポイントを承認する前に、プライベート DNS ゾーン構成で Fallback to Internet オプションを有効にすることをお勧めしています。

  4. Snowflake管理者として、 SYSTEM$AUTHORIZE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK_ACCESS 値を使用して、関数の引数として privateEndpointResourceID 関数を呼び出します。このステップは、プライベートエンドポイントを介したSnowflake管理ストレージボリュームへのアクセスを許可します。

    USE ROLE ACCOUNTADMIN;
    SELECT SYSTEM$AUTHORIZE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK_ACCESS('<privateEndpointResourceID>');
    

    必要に応じて、これらのステップを実行して、Snowflake管理ストレージボリュームへのアクセスを 取り消し ます。

  5. ネットワーク管理者を関与させ、プライベート DNSゾーンの DNS設定を更新します。設定では、プライベートリンク URL を、Snowflake管理ストレージボリュームのストレージアカウントに接続するAzureプライベートエンドポイントのプライベート IP アドレスに解決する必要があります。

    詳細については、 Azureプライベートエンドポイント DNS 構成 をご参照ください。

    Tip

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

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

    • オンプレミスアプリケーションからテストするには、 DNS 転送を使用して、 DNS 設定を実行する VNet 内のAzureプライベート DNS にリクエストを転送します。

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

Azure Private Linkを使用して管理ストレージボリュームにアクセスするようにプライベートエンドポイントを構成すると、オプションでパブリック IP アドレスから管理ストレージボリュームへのリクエストをブロックできます。パブリックアクセスがブロックした後、すべてのトラフィックはプライベートエンドポイントを経由する必要があります。

重要

パブリックアクセスをブロックする 前に 、プライベート接続を使用するトラフィックが、管理ストレージボリュームに正常に到達していることを確認します。プライベート接続を構成せずにパブリックアクセスをブロックすると、意図しない中断が発生する可能性があります。

パブリック IP アドレスから管理ストレージボリュームへのすべてのトラフィックをブロックするには、次の関数を呼び出します。

SELECT SYSTEM$BLOCK_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS();

この関数は完了するまでに数分かかる場合があります。

IP許可リストの例外によるパブリックアクセスのブロック

管理ストレージボリュームへのアクセスが許可されている IP アドレスまたは CIDR ブロックの許可リストを維持しながら、 SYSTEM$BLOCK_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS_WITH_EXCEPTION 関数でパブリックアクセスをブロックできるようになりました。

特定の IP アドレスまたは CIDR ブロックを許可しながらパブリックアクセスをブロックするには、以下を実行します。

USE ROLE ACCOUNTADMIN;

SELECT SYSTEM$BLOCK_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS_WITH_EXCEPTION('1.2.3.4/24, 100.0.0.1');

パブリックアクセスの確実なブロック

パブリック IP アドレスがSnowflake管理ストレージボリュームにアクセスできるかどうかを判断するには、 SYSTEM$SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS_STATUS 関数を呼び出します。

SELECT SYSTEM$SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS_STATUS();

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

これまでブロックされていたSnowflake管理ストレージボリュームへのパブリックアクセスを許可するには、 SYSTEM$UNBLOCK_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS 関数を呼び出します。

SELECT SYSTEM$UNBLOCK_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PUBLIC_ACCESS();

Snowflake管理ストレージボリュームにアクセスするためのプライベートエンドポイントの取り消し

Microsoft Azureプライベートエンドポイントを介したSnowflake管理ストレージボリュームへのアクセスを取り消すには、次のステップを実行します。

  1. Snowflake管理者は、 ENABLE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK パラメーターが TRUE に設定されていることを確認します。例:

    USE ROLE ACCOUNTADMIN;
    SHOW PARAMETERS LIKE 'ENABLE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK' IN ACCOUNT;
    
  2. Snowflake管理者は、 SYSTEM$REVOKE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK_ACCESS 関数を呼び出し、最初にアクセスを承認するために使用されたのと同じ privateEndpointResourceID 値を使用して、プライベートエンドポイントへのアクセスを取り消します。

    USE ROLE ACCOUNTADMIN;
    SELECT SYSTEM$REVOKE_SNOWFLAKE_MANAGED_STORAGE_VOLUME_PRIVATELINK_ACCESS('<privateEndpointResourceID>');
    
  3. Azure管理者は、Azure Portalからプライベートエンドポイントを削除します。

  4. ネットワーク管理者として、ストレージアカウント URLs の解決に使用された DNS およびエイリアスの記録を削除します。