Snowflake

Snowflake Network Rules: 新しいネットワーク制御モデルの実装

2026-03-26
更新: 2026-03-27
NicheeLab編集部

Network Rulesは、ネットワーク識別子(IPアドレス、ホスト名、Private Endpoint ID等)を 再利用可能なスキーマレベルオブジェクトとして管理するSnowflakeの機能です。 従来のNetwork PolicyではIPアドレスリストをポリシーに直接記述していましたが、 Network Rulesを使うことで識別子を独立したオブジェクトとして定義し、複数のNetwork Policyで共有したり、 IPアドレス以外の識別子でもネットワーク制御が可能になります。

Network RuleのTYPE比較表

TYPEVALUE_LISTの形式制御方向用途Edition要件
IPV4IPv4アドレス / CIDRIngress(受信)ユーザーからSnowflakeへのアクセス制御全Edition
HOST_PORTホスト名:ポートEgress(送信)Snowflakeから外部APIへのアクセス許可全Edition
PRIVATE_HOST_PORTPrivate Endpoint IDEgress(送信)PrivateLink経由の外向き通信制御Business Critical以上

CREATE NETWORK RULEの構文

-- IPV4タイプ:社内ネットワークからのアクセスを許可
CREATE NETWORK RULE security.office_network_rule
  TYPE = IPV4
  VALUE_LIST = ('203.0.113.0/24', '198.51.100.0/24')
  MODE = INGRESS
  COMMENT = 'オフィスネットワークのIPアドレス範囲';

-- IPV4タイプ:VPNゲートウェイからのアクセスを許可
CREATE NETWORK RULE security.vpn_network_rule
  TYPE = IPV4
  VALUE_LIST = ('10.0.1.100', '10.0.1.101')
  MODE = INGRESS
  COMMENT = 'VPNゲートウェイのIPアドレス';

-- HOST_PORTタイプ:外部APIへのアクセスを許可
CREATE NETWORK RULE security.external_api_rule
  TYPE = HOST_PORT
  VALUE_LIST = ('api.example.com:443', 'webhook.example.com:443')
  MODE = EGRESS
  COMMENT = 'External Function用の外部APIエンドポイント';

-- PRIVATE_HOST_PORTタイプ:PrivateLink経由のEgress
CREATE NETWORK RULE security.private_api_rule
  TYPE = PRIVATE_HOST_PORT
  VALUE_LIST = ('com.amazonaws.vpce.us-east-1.vpce-svc-xxxxxxxxx')
  MODE = EGRESS
  COMMENT = 'PrivateLink経由の内部APIアクセス';

Network Policyとの連携

Network Rulesは単独では機能しません。Network Policyに紐づけることで、実際のアクセス制御が有効になります。 Network PolicyのALLOWED_NETWORK_RULE_LISTとBLOCKED_NETWORK_RULE_LISTにNetwork Ruleを指定します。

-- Network Ruleを使ったNetwork Policyの作成
CREATE NETWORK POLICY corporate_access_policy
  ALLOWED_NETWORK_RULE_LIST = (
    'security.office_network_rule',
    'security.vpn_network_rule'
  )
  BLOCKED_NETWORK_RULE_LIST = ()
  COMMENT = 'オフィスとVPNからのアクセスのみ許可';

-- アカウントレベルに適用
ALTER ACCOUNT SET NETWORK_POLICY = corporate_access_policy;

-- 特定ユーザーに適用(アカウントレベルより優先)
ALTER USER admin_user SET NETWORK_POLICY = corporate_access_policy;

-- Security Integrationに適用(OAuth/SAML接続の制御)
ALTER SECURITY INTEGRATION my_oauth_integration
  SET NETWORK_POLICY = corporate_access_policy;

従来方式との比較

-- 従来のNetwork Policy(IPアドレスを直接指定)
CREATE NETWORK POLICY legacy_policy
  ALLOWED_IP_LIST = ('203.0.113.0/24', '198.51.100.0/24')
  BLOCKED_IP_LIST = ('203.0.113.50');

-- 新しいNetwork Policy(Network Ruleを参照)
CREATE NETWORK RULE security.corp_ips
  TYPE = IPV4
  VALUE_LIST = ('203.0.113.0/24', '198.51.100.0/24')
  MODE = INGRESS;

CREATE NETWORK RULE security.blocked_ips
  TYPE = IPV4
  VALUE_LIST = ('203.0.113.50')
  MODE = INGRESS;

CREATE NETWORK POLICY new_policy
  ALLOWED_NETWORK_RULE_LIST = ('security.corp_ips')
  BLOCKED_NETWORK_RULE_LIST = ('security.blocked_ips');

-- 従来のALLOWED_IP_LISTとALLOWED_NETWORK_RULE_LISTは
-- 同一Network Policy内で併用可能(OR条件で評価)

External Network Access連携

HOST_PORTタイプのNetwork Ruleは、External Access Integration(外部ネットワークアクセス統合)と組み合わせて、 UDF/ストアドプロシージャ/Snowpark Container Servicesから外部APIへのアクセスを制御します。

-- 外部APIアクセス用のNetwork Rule
CREATE NETWORK RULE security.openai_api_rule
  TYPE = HOST_PORT
  VALUE_LIST = ('api.openai.com:443')
  MODE = EGRESS;

-- External Access Integrationの作成
CREATE EXTERNAL ACCESS INTEGRATION openai_access
  ALLOWED_NETWORK_RULES = ('security.openai_api_rule')
  ENABLED = TRUE;

-- UDFでExternal Access Integrationを使用
CREATE OR REPLACE FUNCTION call_openai(prompt VARCHAR)
  RETURNS VARCHAR
  LANGUAGE PYTHON
  RUNTIME_VERSION = '3.10'
  EXTERNAL_ACCESS_INTEGRATIONS = (openai_access)
  PACKAGES = ('requests')
  HANDLER = 'handler'
AS $
import requests
def handler(prompt):
    # api.openai.com:443 へのアクセスのみ許可される
    response = requests.post(
        'https://api.openai.com/v1/chat/completions',
        headers={'Authorization': 'Bearer <token>'},
        json={'model': 'gpt-4', 'messages': [{'role': 'user', 'content': prompt}]}
    )
    return response.json()['choices'][0]['message']['content']
$;

Network Ruleの管理

-- Network Ruleの一覧表示
SHOW NETWORK RULES IN SCHEMA security;

-- Network Ruleの詳細確認
DESCRIBE NETWORK RULE security.office_network_rule;

-- VALUE_LISTの更新
ALTER NETWORK RULE security.office_network_rule
  SET VALUE_LIST = ('203.0.113.0/24', '198.51.100.0/24', '192.0.2.0/24');

-- コメントの更新
ALTER NETWORK RULE security.office_network_rule
  SET COMMENT = '東京・大阪・福岡オフィスのIPアドレス';

-- Network Ruleの削除
DROP NETWORK RULE security.office_network_rule;
-- 注意: Network Policyで参照中のNetwork Ruleは削除できない

評価順序と優先度

適用レベル優先度説明
Security Integration最優先OAuth/SAML接続に対して適用
User特定ユーザーへの適用(アカウントレベルより優先)
Accountアカウント全体に適用(個別設定がない場合に使用)

BLOCKED_NETWORK_RULE_LIST(またはBLOCKED_IP_LIST)はALLOWED_NETWORK_RULE_LIST(またはALLOWED_IP_LIST)よりも常に優先されます。 あるIPアドレスが許可リストとブロックリストの両方に含まれる場合、ブロックされます。

必要な権限

-- Network Ruleの作成権限
GRANT CREATE NETWORK RULE ON SCHEMA security TO ROLE network_admin;

-- Network Policyの作成権限
GRANT CREATE NETWORK POLICY ON ACCOUNT TO ROLE network_admin;

-- Network Policyのアカウントレベル適用権限
GRANT ATTACH POLICY ON ACCOUNT TO ROLE network_admin;

-- ユーザーレベルでの適用は対象ユーザーへのOWNERSHIPまたは
-- MANAGE GRANTS権限が必要

問題で確認

Security & Governance

問題 1

SnowflakeのUDF内から外部REST API(api.example.com:443)を呼び出す必要がある。この外部アクセスを許可するために最初に作成すべきオブジェクトはどれか。

  1. TYPE = IPV4 のNetwork Ruleに api.example.com のIPアドレスを指定する
  2. TYPE = HOST_PORT のNetwork Ruleに 'api.example.com:443' を指定する
  3. Network Policyの ALLOWED_IP_LIST に api.example.com のIPアドレスを追加する
  4. Security IntegrationのTYPE = API_AUTHENTICATIONを作成する

正解: B

Snowflakeからの外向き通信(Egress)を許可するには、TYPE = HOST_PORTのNetwork Ruleを作成してホスト名とポートを指定します。IPV4タイプはIngress(受信)制御用で、ユーザーからSnowflakeへの接続に使用します。Network PolicyのALLOWED_IP_LISTもIngress用です。作成したHOST_PORT Network RuleはExternal Access Integrationに紐づけ、UDFのEXTERNAL_ACCESS_INTEGRATIONSパラメータで参照します。

よくある質問

Network RulesとNetwork Policyの違いは何ですか?

Network Policyは従来からあるIP許可/ブロックリスト機能で、ALLOWED_IP_LISTとBLOCKED_IP_LISTにIPアドレスを直接指定します。Network Rulesはネットワーク識別子(IP、ホスト名、Private Endpoint ID等)を再利用可能なオブジェクトとしてスキーマレベルで管理し、Network Policyに紐づけて使います。Network Rulesの導入により、同じIPリストを複数のNetwork Policyで共有したり、IPアドレス以外の識別子(ホスト名、Private Link ID)でも制御できるようになりました。

Network RulesのTYPE = HOST_PORTはどのような場面で使いますか?

HOST_PORTタイプはSnowflakeからの外向き通信(External Network Access)を制御する際に使います。例えばExternal FunctionやSnowpark Container Servicesから外部API(api.example.com:443等)にアクセスする場合、許可するホスト名とポートをNetwork Ruleで定義します。内向きの接続制御(ユーザーからSnowflakeへのアクセス)にはIPV4タイプを使用します。

Network Rulesは全Editionで利用できますか?

Network Rules自体は全Editionで利用可能です。ただしNetwork RulesをNetwork Policyに紐づけてアカウントレベルまたはユーザーレベルで適用する機能は全Editionで使えますが、PRIVATE_HOST_PORTタイプ(PrivateLink接続のEgress制御)はBusiness Critical Edition以上が必要です。IPV4とHOST_PORTタイプは全Editionで利用できます。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.