[新機能]GitHub Actions などのサードパーティ サービスからのネットワークアクセス制御に使える Snowflake-managed network rules が一般提供となりました

[新機能]GitHub Actions などのサードパーティ サービスからのネットワークアクセス制御に使える Snowflake-managed network rules が一般提供となりました

2025.10.30

はじめに

2025年10月のリリースで、Snowflake-managed network rules が一般提供となりました。

こちらの機能について試した内容を、本記事でまとめます。

https://docs.snowflake.com/en/release-notes/2025/9_33#snowflake-managed-network-rules-general-availability

アップデートの概要

Snowflake 利用時は、他 SaaS と連携するのが一般的と思います。例えば、データパイプライン関連では dbt Cloud, GitHub Actions、BI ツールでは Tableau Cloud や PowerBI などが代表的なサードパーティの SaaS として名が挙がると思います。

この際、上記のような SaaS はその稼働する IP 範囲を公開しているケースがありますが、その範囲が広範囲であったり、定期的に更新される可能性があるなど、ネットワークアクセス制御に関して、これまでサードパーティSaaSの IP アドレス変更への対応がセキュリティ管理の負荷となる場面がありました。

Snowflake-managed network rules は、対応するサービスの IP アドレスの変更を自動的に取得し、ビルトインのネットワークルールとして、継続的に更新しながら提供してくれる機能となります。

これにより、ユーザー側は、Snowflake 管理のルールを既存または新規のネットワークポリシーにALLOW_NETWORK_RULE_LIST として追加するだけで、いつでも最新の正確な IP アドレス範囲を適用できるようになります。

執筆時点では、以下の SaaS アプリケーションがサポートされています。

  • dbt Platform(旧 dbt Cloud)
  • Microsoft Power BI
  • Qlik
  • Tableau Cloud
  • GitHub Actions

また、あわせて Snowflake からの Egress 向けのネットワークルールとしてSNOWFLAKE.EXTERNAL_ACCESS.PYPI_RULEも追加されています。
詳細は以下をご参照ください。

https://docs.snowflake.com/en/user-guide/network-rules#label-snowflake-managed-network-rules

試してみる

Managed network rule の確認

以下では一部省略していますが、Managed network rules は、SNOWFLAKE.NETWORK_SECURITYスキーマから確認できます。

>SHOW NETWORK RULES IN SNOWFLAKE.NETWORK_SECURITY;
+-------------------------------+----------------------------------+---------------+------------------+-----------+---------+------+---------+----------------------+-----------------+
| created_on                    | name                             | database_name | schema_name      | owner     | comment | type | mode    | entries_in_valuelist | owner_role_type |
|-------------------------------+----------------------------------+---------------+------------------+-----------+---------+------+---------+----------------------+-----------------|
| 2025-10-29 16:19:00.974 +0900 | DBT_APAC_AWS                     | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    3 | APPLICATION     |
| 2025-10-29 16:19:01.182 +0900 | DBT_EMEA_AWS                     | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    3 | APPLICATION     |
| 2025-10-29 16:19:01.378 +0900 | DBT_EMEA_AZURE                   | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:19:01.580 +0900 | DBT_EMEA_GCP                     | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:19:01.797 +0900 | DBT_JAPAN_AWS                    | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    3 | APPLICATION     |
| 2025-10-29 16:19:01.998 +0900 | DBT_NORTHAMERICA_AWS             | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    6 | APPLICATION     |
| 2025-10-29 16:19:02.204 +0900 | DBT_NORTHAMERICA_AZURE           | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:19:02.408 +0900 | DBT_NORTHAMERICA_GCP             | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:19:19.081 +0900 | GITHUBACTIONS_GLOBAL             | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                 4299 | APPLICATION     |
・
・
| 2025-10-29 16:19:07.633 +0900 | POWERBI_EASTASIA_AZURE           | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   14 | APPLICATION     |
| 2025-10-29 16:19:08.260 +0900 | POWERBI_EASTUS2EUAP_AZURE        | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:08.066 +0900 | POWERBI_EASTUS2_AZURE            | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   17 | APPLICATION     |
| 2025-10-29 16:19:07.844 +0900 | POWERBI_EASTUS_AZURE             | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   14 | APPLICATION     |
| 2025-10-29 16:19:09.047 +0900 | POWERBI_GERMANYN_AZURE           | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    8 | APPLICATION     |
| 2025-10-29 16:19:09.260 +0900 | POWERBI_GERMANYWC_AZURE          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    8 | APPLICATION     |
| 2025-10-29 16:19:09.462 +0900 | POWERBI_INDONESIACENTRAL_AZURE   | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    7 | APPLICATION     |
| 2025-10-29 16:19:09.785 +0900 | POWERBI_ISRAELCENTRAL_AZURE      | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    8 | APPLICATION     |
・
・
| 2025-10-29 16:19:02.600 +0900 | QLIK_AE                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:02.825 +0900 | QLIK_AP                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:03.024 +0900 | QLIK_DE                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:03.211 +0900 | QLIK_EU                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:03.413 +0900 | QLIK_IL                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:03.617 +0900 | QLIK_IN                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:03.862 +0900 | QLIK_JP                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:04.060 +0900 | QLIK_SE                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:04.229 +0900 | QLIK_SG                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:04.445 +0900 | QLIK_UK                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:19:04.635 +0900 | QLIK_US                          | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                   12 | APPLICATION     |
| 2025-10-29 16:18:56.808 +0900 | TABLEAU_APNORTHEAST1_AWS         | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:57.019 +0900 | TABLEAU_APNORTHEAST2_AWS         | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:57.257 +0900 | TABLEAU_APNORTHEAST3_AWS         | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:57.460 +0900 | TABLEAU_APSOUTH1_AWS             | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:57.653 +0900 | TABLEAU_APSOUTH2_AWS             | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:57.855 +0900 | TABLEAU_APSOUTHEAST1_AWS         | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:58.059 +0900 | TABLEAU_APSOUTHEAST2_AWS         | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:58.237 +0900 | TABLEAU_APSOUTHEAST3_AWS         | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:58.429 +0900 | TABLEAU_CACENTRAL1_AWS           | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:58.622 +0900 | TABLEAU_EUCENTRAL1_AWS           | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:58.807 +0900 | TABLEAU_EUCENTRAL2_AWS           | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:58.977 +0900 | TABLEAU_EUNORTH1_AWS             | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:59.151 +0900 | TABLEAU_EUSOUTH1_AWS             | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:59.335 +0900 | TABLEAU_EUWEST2_AWS              | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:59.512 +0900 | TABLEAU_EUWEST3_AWS              | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:59.718 +0900 | TABLEAU_ILCENTRAL1_AWS           | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:18:59.952 +0900 | TABLEAU_MECENTRAL1_AWS           | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:19:00.139 +0900 | TABLEAU_SAEAST1_AWS              | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:19:00.360 +0900 | TABLEAU_USEAST1_AWS              | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:19:00.581 +0900 | TABLEAU_USEAST2_AWS              | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
| 2025-10-29 16:19:00.778 +0900 | TABLEAU_USWEST2_AWS              | SNOWFLAKE     | NETWORK_SECURITY | SNOWFLAKE |         | IPV4 | INGRESS |                    1 | APPLICATION     |
+-------------------------------+----------------------------------+---------------+------------------+-----------+---------+------+---------+----------------------+-----------------+

以下は dbt Platform の例ですが、実際に登録されている値も確認できました。

>SELECT *
  FROM SNOWFLAKE.ACCOUNT_USAGE.NETWORK_RULES
  WHERE DATABASE = 'SNOWFLAKE' AND SCHEMA = 'NETWORK_SECURITY'
  ->> SELECT NAME, MODE, TYPE, VALUE_LIST FROM $1 WHERE NAME LIKE 'DBT_%';
  ;
 +------------------------+---------+------+----------------------------------------------------------------------------------+
| NAME                   | MODE    | TYPE | VALUE_LIST                                                                       |
|------------------------+---------+------+----------------------------------------------------------------------------------|
| DBT_EMEA_AZURE         | ingress | IPv4 | 20.13.190.192/26                                                                 |
| DBT_JAPAN_AWS          | ingress | IPv4 | 13.115.236.233,35.76.76.152,54.238.211.79                                        |
| DBT_NORTHAMERICA_GCP   | ingress | IPv4 | 34.33.2.0/26                                                                     |
| DBT_EMEA_GCP           | ingress | IPv4 | 34.33.2.0/26                                                                     |
| DBT_APAC_AWS           | ingress | IPv4 | 13.239.155.206,3.106.40.33,52.65.89.235                                          |
| DBT_NORTHAMERICA_AZURE | ingress | IPv4 | 20.10.67.192/26                                                                  |
| DBT_NORTHAMERICA_AWS   | ingress | IPv4 | 3.214.191.130,34.233.79.135,52.22.161.231,52.3.77.232,52.45.144.63,54.81.134.249 |
| DBT_EMEA_AWS           | ingress | IPv4 | 3.123.45.39,3.126.140.248,3.72.153.148                                           |
+------------------------+---------+------+----------------------------------------------------------------------------------+

dbt Platform 側でも同じ IP 範囲の記載があります。

https://docs.getdbt.com/docs/cloud/about-cloud/access-regions-ip-addresses

検証用ユーザーの作成

ここでは専用のサービスユーザーを作成し、以下のプラットフォームからの Managed network rules による接続を試してみます。

  • GitHub Actions
  • dbt Platform

サービスユーザーを作成します。

--サービス ユーザーを作成
CREATE OR REPLACE USER test_user
    DEFAULT_ROLE = PUBLIC
    DEFAULT_SECONDARY_ROLES = ()
    TYPE = SERVICE
;
ALTER USER test_user SET RSA_PUBLIC_KEY = 'MII・・・';

ユーザーには、各種権限を付与しておきます。

GitHub Actions

基本的な流れは以下の記事に沿って Snowflake アカウントと GitHub Actions の連携を行いました。

https://dev.classmethod.jp/articles/snowflake-cli-github-actions/

ワークフローは以下のようにしました。

name: Deploy data pipeline

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest

    env:
      REPO_NAME: "governance.integrations.snowflake_extensions"
      SNOWFLAKE_CONNECTIONS_WORKFLOW_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
      SNOWFLAKE_CONNECTIONS_WORKFLOW_USER: ${{ secrets.SNOWFLAKE_USER }}
      SNOWFLAKE_CONNECTIONS_WORKFLOW_PRIVATE_KEY_RAW: ${{ secrets.SNOWFLAKE_PRIVATEKEY }}
      SNOWFLAKE_CONNECTIONS_WORKFLOW_WAREHOUSE: "compute_wh"
      SNOWFLAKE_CONNECTIONS_WORKFLOW_ROLE: "sysadmin"
      SNOWFLAKE_CONNECTIONS_WORKFLOW_AUTHENTICATOR: "SNOWFLAKE_JWT"
      ENV: "wf"

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install snowflake-cli
        uses: Snowflake-Labs/snowflake-cli-action@v1.5
        with:
          cli-version: "latest"
          default-config-file-path: ".snowflake/config.toml"

      - name: Get and log current IP address
        run: |
          CURRENT_IP=$(snow sql -q "select current_ip_address();" --format CSV)
          echo "Current Snowflake Access IP Address: $CURRENT_IP"

      - name: Fetch repository changes
        run: |
          set -e
          snow git fetch "${REPO_NAME}"

      - name: Deploy data pipeline to main
        run: |
          set -e
          snow git execute "@${REPO_NAME}/branches/main/" \
            --database governance \
            --schema integrations \
            --variable "environment='$ENV'"

サービスユーザーに、GitHub Actions 向けのネットワークルールを指定するネットワークポリシーを適用します。

-- ネットワークポリシーを作成
CREATE OR REPLACE NETWORK POLICY github_actions_network_policy ALLOWED_NETWORK_RULE_LIST = (
  'SNOWFLAKE.NETWORK_SECURITY.GITHUBACTIONS_GLOBAL'
);

-- ユーザーレベルでポリシーを適用
ALTER USER test_user SET NETWORK_POLICY = github_actions_network_policy;

設定後、ワークフローを実行します。

問題なく実行できました。

image

この環境での実行時の IP アドレスを確認すると、以下のactionsに含まれる IP アドレスとなっていました。

https://api.github.com/meta

dbt Platform

同じサービスユーザーでこのまま dbt Platform に接続してみます。この場合、意図した通り、エラーとなります。

image 1

サービスユーザーのネットワークルールを dbt Platform のものに変更します。

-- ネットワークポリシーを作成
CREATE OR REPLACE NETWORK POLICY dbt_cloud_northamerica_aws_network_policy ALLOWED_NETWORK_RULE_LIST = (
  'SNOWFLAKE.NETWORK_SECURITY.DBT_NORTHAMERICA_AWS'
);

-- ユーザーレベルでポリシーを適用
ALTER USER test_user UNSET NETWORK_POLICY;
ALTER USER test_user SET NETWORK_POLICY = dbt_cloud_northamerica_aws_network_policy;

再度テストすると問題なく接続できました。

image 2

さいごに

Snowflake-managed network rules を試してみました。現時点で利用できる範囲ですと、特に GitHub Actions と Power BI サービスは範囲も広く使用場面も多いのではと思います。
こちらの内容が何かの参考になれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事