ネットワークルール

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

ネットワークトラフィックを制限するSnowflake機能では、機能内でネットワーク識別子を直接定義するのではなく、ネットワークルールを参照できます。たとえば、ネットワークポリシーは、 IP アドレスを含むネットワークルールを参照して、これらのアドレスに基づいてSnowflakeサービスと内部ステージへのアクセスを制御できます。また、 UDF またはプロシージャーから外部のネットワークの場所にアクセスする場合にも、ネットワークルールを使用できます。

ネットワークルールは、その識別子の許可またはブロックを定義するものではありません。ネットワークルールを使用するSnowflake機能により、ルール内の識別子の許可または禁止が指定されます。

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

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

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

任意のポート範囲を含むドメイン

各ネットワークルールには、同じタイプの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 コマンドを実行して新しいネットワークルールを作成し、ネットワーク識別子のリストとその識別子のタイプを指定します。

管理者は MODE パラメーターを使用して、ネットワークルールが受信リクエストと送信リクエストのどちらを制限するために使用されるかを示します。管理者が MODE パラメーターを含めなかった場合、デフォルトの INGRESS になります。これは、ネットワークルールがネットワークポリシーによって使用され、Snowflakeサービスへの受信ネットワークトラフィックを制限することを意味します。

ネットワークルールを作成しても、ネットワーク識別子の許可またはブロックは定義されません。管理者は、ネットワークルールを使用するSnowflake機能を構成するときに、これらの制限を指定します。

例: ネットワークポリシーのネットワークルール

次のコードの例では、カスタムロールを使用して、 IP アドレスの範囲からSnowflakeサービスへのトラフィックを許可またはブロックするために使用できるネットワークルールを作成します。

CREATE ROLE network_admin;
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
  MODE = INGRESS
  TYPE = IPV4
  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 アドレスを表します。

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

ネットワークルールの所有者は、 ALTER NETWORK RULE コマンドを実行して、ルールのネットワーク識別子とコメントを置き換えることができます。ネットワークルールに個別のネットワーク識別子を追加または削除することはできません。新しい値を追加すると、既存の識別子は失われます。

ネットワークルールの TYPE および MODE は変更できません。

たとえば、ネットワークルールの所有者は、 IPv4 アドレスの新しい範囲からのトラフィックを許可またはブロックするために使用できるように変更できます。

ALTER NETWORK RULE cloud_network SET VALUE_LIST = ('47.88.25.32/27');
Copy

ネットワークルールの所有者は、ルールからすべてのネットワーク識別子を削除することもできます。

ALTER NETWORK RULE cloud_network UNSET VALUE_LIST;
Copy

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

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

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

権限とコマンド

コマンド

権限

説明

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

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