ネットワークルール¶
ネットワークルールは、ネットワーク識別子を論理単位にグループ化するスキーマレベルのオブジェクトです。
ネットワークトラフィックを制限する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サービスと内部ステージは受信トラフィックから保護されます。ネットワークルールをネットワークポリシーで使用する場合、管理者はモードを次のいずれかに設定できます。
- INGRESS
- INGRESSモードの動作は、ネットワークルールの- TYPEプロパティの値に依存します。- TYPE=IPV4の場合、デフォルトでネットワークルールはSnowflakeサービスへのアクセスのみを制御します。- アカウント管理者が ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES パラメーターを有効にした場合、 - MODE=INGRESSと- TYPE=IPV4は AWS 内部ステージも保護します。
- TYPE=AWSVPCEIDの場合、ネットワークルールはSnowflakeサービスへのアクセスのみを制御します。- インターフェイスエンドポイントの VPCE ID に基づいて AWS 内部ステージへのアクセスを制限する場合は、 - INTERNAL_STAGEモードを使用して別のネットワークルールを作成する必要があります。
 
- INTERNAL_STAGE
- Snowflakeサービスへのアクセスを制限することなく、 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 ステートメントを実行します。 
ネットワークルールの複製¶
ネットワークルールはスキーマレベルのオブジェクトであり、それが含まれるデータベースと一緒に複製されます。
ネットワークルールを使用するネットワークポリシーの複製については、 ネットワークポリシーの複製 を参照してください。
Snowflakeが管理するネットワークルール¶
Snowflakeには、Snowflakeが管理する以下のネットワークルールが自薦定義されています:
- SNOWFLAKE.EXTERNAL_ACCESS.PYPI_RULE
- EGRESS ネットワークルールは、Snowflakeから PyPi への接続を提供するために、外部アクセス統合と共に使用されます。Container RuntimeのNotebooksユーザーが - pip installコマンドを使用して- pipパッケージをインストールできるようにする場合に、このネットワークルールを使用します。- このネットワークルールの使用例については、 Snowpark Containerにパッケージをインストールするために PyPi にアクセスする を参照してください。 - このネットワークルールにアクセスできるのは、 ACCOUNTADMIN ロールのみです。 
権限とコマンド¶
| コマンド | 権限 | 説明 | 
|---|---|---|
| SCHEMA の CREATE NETWORK RULE | 新しいネットワークルールを作成します。 | |
| NETWORK RULE の OWNERSHIP | 既存のネットワークルールを変更します。 | |
| NETWORK RULE の OWNERSHIP | 既存のネットワークルールをシステムから削除します。 | |
| NETWORK RULE の OWNERSHIP | 既存のネットワークルールのプロパティを説明します。 | |
| NETWORK RULE OWNERSHIP または SCHEMA の USAGE | システムのすべてのネットワークルールを一覧表示します。 |