ネットワークルール

SQL を使用してネットワークルールを操作することは一般公開されています。

ネットワークルールは、ネットワーク識別子を論理単位にグループ化するスキーマレベルのオブジェクトです。

ネットワークトラフィックを制限するSnowflake機能では、機能内でネットワーク識別子を直接定義するのではなく、ネットワークルールを参照できます。ネットワークルールは、その識別子の許可またはブロックを定義するものではありません。ネットワークルールを使用するSnowflake機能により、ルール内の識別子の許可または禁止が指定されます。

次の機能は、ネットワークルールを使用してネットワークトラフィックを制御します。

  • ネットワークポリシー は、ネットワークルールを使用して、Snowflakeサービスと内部ステージへのインバウンドネットワークトラフィックを制御します。

  • 外部ネットワークアクセス は、ネットワークルールを使用して、Snowflake UDF またはプロシージャから外部ネットワークロケーションへのアクセスを制限します。

サポートされているネットワーク識別子

管理者は、リクエストの発信元または宛先に関連付けられたネットワーク識別子に基づいてアクセスを制限できる必要があります。ネットワークルールにより、管理者は次のネットワーク識別子を許可またはブロックできます。

受信リクエスト:
送信リクエスト:

ポート範囲を含むドメイン。

有効なポート範囲は1~65535です。ポートを指定しない場合、デフォルトは443です。外部ネットワークの場所が動的ポートをサポートしている場合は、可能なポートをすべて指定する必要があります。

すべてのポートへのアクセスを許可するには、ポートを0として定義します。例: company.com:0

各ネットワークルールには、同じタイプの1つ以上のネットワーク識別子のリストが含まれます。ネットワークルールの TYPE プロパティは、ルールに含まれる識別子のタイプを示します。たとえば、 TYPE プロパティが IPV4 の場合、ネットワークルールの値リストには、有効な IPv4 アドレスまたは CIDR 表記のアドレス範囲が含まれている必要があります。

受信リクエストと送信リクエスト

ネットワークルールのモードは、そのルールを使用するSnowflake機能が、受信リクエストと送信リクエストのどちらを制限するかを示します。

受信リクエスト

ネットワークポリシー により、Snowflakeサービスと内部ステージは受信トラフィックから保護されます。ネットワークルールをネットワークポリシーで使用する場合、管理者はモードを次のいずれかに設定できます。

INGRESS

INGRESS モードの動作は、ネットワークルールの TYPE プロパティの値に依存します。

  • TYPE=IPV4 の場合、デフォルトでネットワークルールはSnowflakeサービスへのアクセスのみを制御します。

    アカウント管理者が ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES パラメーターを有効にした場合、 MODE=INGRESSTYPE=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:
  1. Snowsight にサインインします。

  2. Admin » Security を選択します。

  3. Network Rules タブを選択します。

  4. + Network Rule を選択します。

  5. ネットワークルールの名前を入力します。

  6. ネットワークルールのスキーマを選択します。ネットワークルールはスキーマレベルのオブジェクトです。

  7. 必要に応じて、ネットワークルールに説明的なコメントを追加して、スキーマ内のネットワークルールの整理と管理に役立てます。

  8. Type ドロップダウンで、ネットワークルールで定義されている 識別子のタイプ を選択します。

  9. Mode ドロップダウンで、ネットワークルールのモードを選択します。 INGRESSINTERNAL STAGE モードは、ネットワークルールがネットワークポリシーと共に使用され、受信リクエストを制限することを示し、 EGRESS モードは、ネットワークルールが外部アクセス統合と共に使用され、送信リクエストを制限することを示します。

  10. ネットワークルールがネットワークポリシーに追加されたときに、許可またはブロックされる識別子をカンマ区切りで入力します。このリストの識別子はすべて、 Type ドロップダウンで指定されたタイプである必要があります。

  11. Create Network Policy を選択します。

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');
Copy

IPv4 アドレス

ネットワークルールに IP アドレスを指定する場合、Snowflakeは クラスレスドメイン間ルーティング(CIDR)表記 を使用して IP アドレスの範囲をサポートします。

たとえば、 192.168.1.0/24 は、 192.168.1.0192.168.1.255 の範囲内のすべての IPv4 アドレスを表します。

アカウント内のネットワークルールの識別

Snowsight または SQL を使用して、アカウント内のネットワークルールを識別できます。

Snowsight:
  1. Snowsight にサインインします。

  2. Admin » Security を選択します。

  3. Network Rules タブを選択します。

SQL:

NETWORK_RULE_REFERENCES Information Schemaテーブル関数を呼び出すか、 NETWORK_RULES または NETWORK_RULE_REFERENCES Account Usageビューをクエリします。

ネットワークルールの変更

既存のネットワークルールの識別子とコメントは変更できますが、タイプ、モード、名前、スキーマは変更できません。

Snowsight または SQL を使用して既存のネットワークルールから識別子とコメントを追加または削除するには、次のいずれかを実行します。

Snowsight:
  1. Snowsight にサインインします。

  2. Admin » Security を選択します。

  3. Network Rules タブを選択します。

  4. ネットワークルールを見つけ、 ... ボタン、 Edit の順に選択します。

  5. カンマ区切りの識別子のリストまたはコメントを変更します。

  6. Update Network Rule を選択します。

SQL:

ALTER NETWORK RULE ステートメントを実行します。

ネットワークルールの複製

ネットワークルールはスキーマレベルのオブジェクトであり、それが含まれるデータベースと一緒に複製されます。

ネットワークルールを使用するネットワークポリシーの複製については、 ネットワークポリシーの複製 を参照してください。

権限とコマンド

コマンド

権限

説明

CREATE NETWORK RULE

SCHEMA の CREATE NETWORK RULE

新しいネットワークルールを作成します。

ALTER NETWORK RULE

NETWORK RULE の OWNERSHIP

既存のネットワークルールを変更します。

DROP NETWORK RULE

NETWORK RULE の OWNERSHIP

既存のネットワークルールをシステムから削除します。

DESCRIBE NETWORK RULE

NETWORK RULE の OWNERSHIP

既存のネットワークルールのプロパティを説明します。

SHOW NETWORK RULES

NETWORK RULE OWNERSHIP または SCHEMA の USAGE

システムのすべてのネットワークルールを一覧表示します。