エグレスの IP アドレスによるSnowflakeリクエストのイングレスの保護

リソースのネットワークファイアウォールを介してSnowflakeから生成されたエグレスの IP アドレス範囲を許可することで、Snowflakeから外部リソースへのイングレスアクセスを安全に許可することができます。

Snowflakeエグレスの IP アドレス範囲リスト(クラスレスドメイン間ルーティング( CIDR )アドレスとして)生成できます。これを使用して、外部サーバーのネットワークファイアウォールを介してアクセスを許可するSnowflakeを表すことができます。

サポートされている用途

Snowflakeで生成するエグレスの IP アドレスを使用して、以下のSnowflake機能からイングレスのアクセスを許可することができます。

エグレスの IP アドレス範囲を生成する

Snowflakeがエグレストラフィックに使用する IP アドレス範囲は、 SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES 関数を使用して生成できます。

生成された IP アドレスは期限切れになるため、継続的な必要性に備えて、新しいエグレス IP アドレスで外部サーバーのファイアウォールの更新を自動化する手段を設定する必要があります。これについては 自動 IP アドレス範囲の更新 で説明されています。

Snowflakeのエグレス IP アドレスを生成して使用するには、次のステップに従います。

  1. SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES を呼び出して、現在および将来の IP 範囲とその有効期限を取得します。

    次のコードは、関数の出力例を示しています。

    SELECT
     value: "ipv4_prefix":: VARCHAR AS IP_CIDR_RANGE_FOR_REGION,
     value: "effective":: TIMESTAMP AS IP_CIDR_RANGE_EFFECTIVE,
     value: "expires":: TIMESTAMP AS IP_CIDR_RANGE_EXPIRATION
    FROM TABLE(FLATTEN (INPUT => PARSE_JSON(SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES())));
    
    Copy
    +--------------------------+-------------------------+--------------------------+
    | IP_CIDR_RANGE_FOR_REGION | IP_CIDR_RANGE_EFFECTIVE | IP_CIDR_RANGE_EXPIRATION |
    +--------------------------+-------------------------+--------------------------+
    | 153.45.34.0/24           | 2025-08-01 00:00:00.000 | 2026-05-06 01:33:26.726  |
    | 153.45.77.0/24           | 2025-08-01 00:00:00.000 | 2026-05-06 01:33:26.726  |
    +--------------------------+-------------------------+--------------------------+
    
    • IP CIDR RANGE_EFFECTIVE 列には、範囲がトラフィックの伝送を開始する開始日が表示されます。「有効」になる少なくとも60日前に、関数の出力に新しい範囲が表示される必要があります。

    • IP CIDR RANGE_EXPIRATION には、 IP 範囲がトラフィックの伝送を停止する日付が表示されます。

  2. 取得した IP を使用してファイアウォールルールを更新するために、 APIs、 CLIs 、または設定管理ツールを使用します。これについては 自動 IP アドレス範囲の更新 で説明されています。

自動 IP アドレス範囲の更新

Snowflakeのエグレス IP アドレスには有効期限があります。安全にアクセスを続けるには、外部サーバーのファイアウォールで許可された最新のSnowflakeエグレス IP アドレスに更新する必要があります。

IP アドレスを最新に保つには、外部サーバーにこれらの更新を定期的に(毎日、毎週など)トリガーするメカニズムを実装します。たとえば、 :ref:` 環境のツールを使用すること <label-network_egress_automation>` によりこれを実行することができます。

更新を行うには、スクリプトで次のステップに従ってください。

  1. Snowflakeエグレスを IP アドレス範囲を SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES を使用して取得します。

  2. 新しく取得した範囲と現在使用している範囲を比較します。

    アドレスの範囲が異なる場合にのみ更新することで、不要な変更を回避できます。

    • 異なる場合は、スクリプトの有効期限を使用して、有効期限の数日前など、再チェックする時間を設定します。

    • 新しく取得したリストが異なる場合は、新しいアドレスを使用してファイアウォールルールをプログラムで更新します。新しい有効期限の数日前など、チェックする新しい日付をスクリプトで設定することができます。

  3. スクリプトによる変更をログに記録し、更新の成功または失敗時にアラートを設定します。

環境のツールを使用して更新を自動化

Snowflake IP アドレスを最新の状態に維持するために必要なタスクを、スクリプトとツールを使用して自動化できます。以下に、2つの例を示します。

  • AWS 、Azure、Google Cloudなどのクラウドプロバイダーにある APIs や CLIs を使用したスクリプト。

    クラウド環境では、Python、 PowerShell 、Bashなどのツールを使用してスクリプトを記述できます。ツールは以下のタスクを実行できます。

    1. SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES を呼び出して最新の IP アドレス範囲と有効期限を取得します。

    2. クラウドプロバイダーの API または CLI を使用して、セキュリティグループルール、ネットワーク ACLs 、またはファイアウォールポリシーを更新します。

    3. これらのアクションを実行するスクリプトを、定期的に(毎日、毎週など)、またはcronジョブを使用した有効期限に基づいて実行するようにスケジュールします。これらは、Snowflakeタスクでストアドプロシージャを使用して実行できます。

  • Infrastructure-as-code(IaC)ツール

    Terraform、Ansible、 CloudFormation などのツールを使用し、ファイアウォールルールをコードとして管理します。以下に説明するアプローチは、ファイアウォールルール変更のバージョン管理と監査追跡も提供します。

    これらのツールを使用して、以下のタスクを実行できます。

    1. IaC 設定でファイアウォールルールを定義します。

    2. SYSTEM$GET_SNOWFLAKE_EGRESS_IP_RANGES を呼び出して最新の IP アドレス範囲と有効期限を取得します。

    3. 新しいSnowflakeのエグレス IP 範囲が利用可能な場合は新しい範囲で IaC 設定を更新します。

    4. IaC ツールを使用して変更を適用し、ファイアウォールルールがプログラム的かつべき等的に更新されるようにします。