ネットワークルール¶
ネットワークルールは、ネットワーク識別子を論理単位にグループ化するスキーマレベルのオブジェクトです。
ネットワークトラフィックを制限するSnowflake機能では、機能内でネットワーク識別子を直接定義するのではなく、ネットワークルールを参照できます。ネットワークルールは、その識別子の許可またはブロックを定義するものではありません。ネットワークルールを使用するSnowflake機能により、ルール内の識別子の許可または禁止が指定されます。
次の機能は、ネットワークルールを使用してネットワークトラフィックを制御します。
ネットワークポリシー は、ネットワークルールを使用して、Snowflakeサービスと内部ステージへのインバウンドネットワークトラフィックを制御します。
外部ネットワークアクセス は、ネットワークルールを使用して、Snowflake UDF またはプロシージャから外部ネットワークロケーションへのアクセスを制限します。
サポートされているネットワーク識別子¶
管理者は、リクエストの発信元または宛先に関連付けられたネットワーク識別子に基づいてアクセスを制限できる必要があります。ネットワークルールにより、管理者は次のネットワーク識別子を許可またはブロックできます。
- 受信リクエスト:
IPv4 アドレス。Snowflakeは、 クラスレスドメイン間ルーティング(CIDR)表記 を使用した IP アドレスの範囲をサポートしています。たとえば、
192.168.1.0/24は、192.168.1.0〜192.168.1.255の範囲内のすべての IPv4 アドレスを表します。AWS VPC エンドポイント の VPCE IDs。VPC IDs はサポートされていません。
Azure Privateエンドポイント の LinkIDs。SYSTEM$GET_PRIVATELINK_AUTHORIZED_ENDPOINTS 関数を実行して、アカウントに関連付けられた LinkID を取得します。
- 送信リクエスト:
ポート範囲を含むドメイン。
ほとんどの場合、有効なポート範囲は1~65535です。ポートを指定しない場合、デフォルトは443です。外部ネットワークの場所が動的ポートをサポートしている場合は、可能なポートをすべて指定する必要があります。
すべてのポートへのアクセスを許可するには、ポートを0と定義します。例えば、
example.com:0です。
各ネットワークルールには、同じタイプの1つ以上のネットワーク識別子のリストが含まれます。ネットワークルールの TYPE プロパティは、ルールに含まれる識別子のタイプを示します。たとえば、 TYPE プロパティが IPV4 の場合、ネットワークルールの値リストには、有効な IPv4 アドレスまたは CIDR 表記のアドレス範囲が含まれている必要があります。
受信リクエストと送信リクエスト¶
ネットワークルールのモードは、そのルールを使用するSnowflake機能が、受信リクエストと送信リクエストのどちらを制限するかを示します。
受信リクエスト¶
ネットワークポリシー により、Snowflakeサービスと内部ステージは受信トラフィックから保護されます。ネットワークルールをネットワークポリシーで使用する場合、管理者はモードを次のいずれかに設定できます。
INGRESSINGRESSモードの動作は、ネットワークルールのTYPEプロパティの値に依存します。TYPE=IPV4の場合、デフォルトでネットワークルールはSnowflakeサービスへのアクセスのみを制御します。アカウント管理者が ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES パラメーターを有効にした場合、
MODE=INGRESSとTYPE=IPV4は AWS 内部ステージも保護します。TYPE=AWSVPCEIDの場合、ネットワークルールはSnowflakeサービスへのアクセスのみを制御します。インターフェイスエンドポイントの VPCE ID に基づいて AWS 内部ステージへのアクセスを制限する場合は、
INTERNAL_STAGEモードを使用して別のネットワークルールを作成する必要があります。
INTERNAL_STAGESnowflakeサービスへのアクセスを制限することなく、 AWS 内部ステージへのアクセスを制御します。このモードを使用するには、以下が必要です。
アカウント管理者は ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES パラメーターを有効にする必要があります。
ネットワークルールの
TYPEプロパティはAWSVPCEIDにする必要があります。
Microsoft Azureのアカウントでは、ネットワークルールを使用して内部ステージへのアクセスを制限することはできません。ただし、内部ステージにアクセスする すべてのパブリックネットワークトラフィックをブロック できます。
送信リクエスト¶
管理者は、リクエストの送信先を制御する機能を備えたネットワークルールを使用できます。このような場合、管理者は次のモードでネットワークルールを定義します。
EGRESSネットワークルールが Snowflakeから 送信されるトラフィックに使用されることを示します。
現在 外部ネットワークアクセス と一緒に使用され、 UDF またはプロシージャが外部ネットワークロケーションにリクエストを送信できるようにしています。
ネットワークルールの作成¶
ネットワークルールを作成するには、スキーマの CREATE NETWORK RULE 権限が必要です。デフォルトでは、 ACCOUNTADMIN と SECURITYADMIN のロールとスキーマ所有者のみがこの権限を持ちます。
ネットワークルールを作成するには、 Snowsight を使用するか、 SQL コマンドを実行します。
- Snowsight:
Snowsight にサインインします。
ナビゲーションメニューで、 Governance & security » Network policies を選択してから、 Network Rules タブを選択します。
+ Network Rule を選択します。
ネットワークルールの名前を入力します。
ネットワークルールのスキーマを選択します。ネットワークルールはスキーマレベルのオブジェクトです。
必要に応じて、ネットワークルールに説明的なコメントを追加して、スキーマ内のネットワークルールの整理と管理に役立てます。
Type ドロップダウンで、ネットワークルールで定義されている 識別子のタイプ を選択します。
Mode ドロップダウンで、ネットワークルールのモードを選択します。
INGRESSとINTERNAL STAGEモードは、ネットワークルールがネットワークポリシーと共に使用され、受信リクエストを制限することを示し、EGRESSモードは、ネットワークルールが外部アクセス統合と共に使用され、送信リクエストを制限することを示します。ネットワークルールがネットワークポリシーに追加されたときに、許可またはブロックされる識別子をカンマ区切りで入力します。このリストの識別子はすべて、 Type ドロップダウンで指定されたタイプである必要があります。
Create Network Rule を選択します。
- SQL:
管理者は CREATE NETWORK RULE コマンドを実行して新しいネットワークルールを作成し、ネットワーク識別子のリストとその識別子のタイプを指定できます。
たとえば、カスタムロールを使用して、 IP アドレスの範囲からのトラフィックを許可またはブロックするために使用できるネットワークルールを作成します。
GRANT USAGE ON DATABASE securitydb TO ROLE network_admin; GRANT USAGE ON SCHEMA securitydb.myrules TO ROLE network_admin; GRANT CREATE NETWORK RULE ON SCHEMA securitydb.myrules TO ROLE network_admin; USE ROLE network_admin; CREATE NETWORK RULE cloud_network TYPE = IPV4 MODE = INGRESS VALUE_LIST = ('47.88.25.32/27');
IPv4 アドレス¶
ネットワークルールに IP アドレスを指定する場合、Snowflakeは クラスレスドメイン間ルーティング(CIDR)表記 を使用して IP アドレスの範囲をサポートします。
たとえば、 192.168.1.0/24 は、 192.168.1.0 〜 192.168.1.255 の範囲内のすべての IPv4 アドレスを表します。
アカウント内のネットワークルールの識別¶
Snowsight または SQL を使用して、アカウント内のネットワークルールを識別できます。
- Snowsight:
Snowsight にサインインします。
ナビゲーションメニューで、 Governance & security » Network policies を選択してから、 Network Rules タブを選択します。
- SQL:
NETWORK_RULE_REFERENCES Information Schemaテーブル関数を呼び出すか、 NETWORK_RULES または NETWORK_RULE_REFERENCES Account Usageビューをクエリします。
ネットワークルールの変更¶
既存のネットワークルールの識別子とコメントは変更できますが、タイプ、モード、名前、スキーマは変更できません。
Snowsight または SQL を使用して既存のネットワークルールから識別子とコメントを追加または削除するには、次のいずれかを実行します。
- Snowsight:
Snowsight にサインインします。
ナビゲーションメニューで、 Governance & security » Network policies を選択してから、 Network Rules タブを選択します。
ネットワークルールを見つけ、 ... ボタン、 Edit の順に選択します。
カンマ区切りの識別子のリストまたはコメントを変更します。
Update Network Rule を選択します。
- SQL:
ALTER NETWORK RULE ステートメントを実行します。
ネットワークルールの複製¶
ネットワークルールはスキーマレベルのオブジェクトであり、それが含まれるデータベースと一緒に複製されます。
ネットワークルールを使用するネットワークポリシーの複製については、 ネットワークポリシーの複製 を参照してください。
権限とコマンド¶
コマンド |
権限 |
説明 |
|---|---|---|
SCHEMA の CREATE NETWORK RULE |
新しいネットワークルールを作成します。 |
|
NETWORK RULE の OWNERSHIP |
既存のネットワークルールを変更します。 |
|
NETWORK RULE の OWNERSHIP |
既存のネットワークルールをシステムから削除します。 |
|
NETWORK RULE の OWNERSHIP |
既存のネットワークルールのプロパティを説明します。 |
|
NETWORK RULE OWNERSHIP または SCHEMA の USAGE |
システムのすべてのネットワークルールを一覧表示します。 |
Snowflakeが管理するネットワークルール¶
Snowflakeは、一連の*組み込み*ネットワークルールを含む SNOWFLAKE.NETWORK_SECURITY スキーマを提供します。組み込みネットワークルールは、Snowflakeが管理するネットワークルールの1つの型です。Snowflake は、Snowflakeが管理する新しいネットワークルールで NETWORK_SECURITY スキーマを更新できます。組み込みのネットワークルールは、安全で一貫性があり、高速でメンテナンスの少ないネットワークセキュリティ管理方法を提供します。
Snowflakeが管理するネットワークルールは、使いやすいSnowflakeのネットワークポリシーおよびルール管理機能と連携しています。Snowflakeのお客様は、新規または既存の ネットワークポリシー にSnowflakeが管理するルールを追加できます。Snowflakeは、アカウント管理者による定期的なメンテナンスを必要とせずに、組み込みのネットワークルールを継続的に更新します。ネットワークポリシーへのネットワークルールの追加については、 ネットワークポリシーの変更 を参照してください。
組み込みのネットワークルールは、頻繁に使用されるサードパーティのパートナーアプリケーションがSnowflakeとの接続に使用する、許可された IP アドレスのセットを定義します。Snowflakeはこれらのルールを自動的に更新し、サードパーティプロバイダーがegress IP アドレスに加えた変更をキャプチャします。たとえば、Snowflakeは、Microsoft Power BI アプリケーションがSnowflakeとの接続に使用する IP アドレスを定義するルールを管理します。Microsoftがこれらのアドレスを更新すると、Snowflakeのルールは自動的に更新され、この変更が反映されます。
次の表は、Snowflakeが組み込みネットワークルールと各パートナーアプリケーションの現在のegress IP アドレスに関する情報を維持している現在のパートナーアプリケーションを示しています。
SaaS アプリケーション |
Egress IP addresses |
|---|---|
dbtプラットフォーム |
|
Microsoft Power BI |
|
Qlik |
|
Tableau |
|
GitHub アクション |
Working with Snowflake-managed network rules¶
Snowflakeが管理するネットワークルールの現在のリストを表示するには、 SHOW NETWORK RULES コマンドを実行して、 SNOWFLAKE.NETWORK_SECURITY スキーマ内のネットワークルールをリストします。
SHOW NETWORK RULES IN SNOWFLAKE.NETWORK_SECURITY;
注釈
SHOW コマンドは、 IP アドレスを明示的に公開せず、ルールごとの IP アドレスの数のみを公開します。
IP アドレスを*含む*現在のSnowflake管理ルールを表示するには、 NETWORK_RULES ビュー にクエリし、データベースが SNOWFLAKE でスキーマが NETWORK_SECURITY である行にフィルターをかけます。
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.NETWORK_RULES
WHERE DATABASE = 'SNOWFLAKE' AND SCHEMA = 'NETWORK_SECURITY';
次の例は、組み込みのネットワークルールを参照するネットワークポリシーを作成または置換する方法を示しています。
CREATE OR REPLACE NETWORK POLICY example_network_policy ALLOWED_NETWORK_RULE_LIST = (
'SNOWFLAKE.NETWORK_SECURITY.DBT_APAC_AWS',
'SNOWFLAKE.NETWORK_SECURITY.DBT_EMEA_AWS'
);
次の例は、 ALTER NETWORK POLICY 構文を使用して、既存のネットワークポリシーに組み込みネットワークルールを追加する方法を示しています。
ALTER NETWORK POLICY example_network_policy ADD ALLOWED_NETWORK_RULE_LIST = (
'SNOWFLAKE.NETWORK_SECURITY.DBT_APAC_AWS'
);
Snowflake-managed egress network rules¶
Snowflake provides the following pre-defined, Snowflake-managed egress network rule:
SNOWFLAKE.EXTERNAL_ACCESS.PYPI_RULE
You can use an EGRESS network rule with an external access integration to provide a connection from Snowflake to Python Package Index (PyPI). For example, you might want to use the network rule to allow Notebook users on Container Runtime to install
pippackages by using thepip installcommand.For an example of how to use this network rule, see Accessing PyPI to install packages in Snowpark Container.
Only users with the ACCOUNTADMIN role have access to the SNOWFLAKE.EXTERNAL_ACCESS.PYPI_RULE.