ネットワークルール¶
ネットワークルールは、ネットワーク識別子を論理単位にグループ化するスキーマレベルのオブジェクトです。
ネットワークトラフィックを制限するSnowflake機能では、機能内でネットワーク識別子を直接定義するのではなく、ネットワークルールを参照できます。たとえば、ネットワークポリシーは、 IP アドレスを含むネットワークルールを参照して、これらのアドレスに基づいてSnowflakeサービスと内部ステージへのアクセスを制御できます。また、 UDF またはプロシージャーから外部のネットワークの場所にアクセスする場合にも、ネットワークルールを使用できます。
ネットワークルールは、その識別子の許可またはブロックを定義するものではありません。ネットワークルールを使用するSnowflake機能により、ルール内の識別子の許可または禁止が指定されます。
サポートされているネットワーク識別子¶
管理者は、リクエストの発信元または宛先に関連付けられたネットワーク識別子に基づいてアクセスを制限できる必要があります。ネットワークルールにより、管理者は次のネットワーク識別子を許可またはブロックできます。
- 受信リクエスト
IPv4 アドレス
AWS VPC エンドポイント の VPCE IDs。VPC IDs はサポートされていません。
Azure Privateエンドポイント の LinkIDs。 SYSTEM$GET_PRIVATELINK_AUTHORIZED_ENDPOINTS 関数を実行して、アカウントに関連付けられた LinkID を取得します。
- 送信リクエスト
任意のポート範囲を含むドメイン
各ネットワークルールには、同じタイプの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 コマンドを実行して新しいネットワークルールを作成し、ネットワーク識別子のリストとその識別子のタイプを指定します。
管理者は 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');
IPv4 アドレス¶
ネットワークルールに IP アドレスを指定する場合、Snowflakeは クラスレスドメイン間ルーティング(CIDR)表記 を使用して IP アドレスの範囲をサポートします。
たとえば、 192.168.1.0/24
は、 192.168.1.0
〜 192.168.1.255
の範囲内のすべての IPv4 アドレスを表します。
ネットワークルールの変更¶
ネットワークルールの所有者は、 ALTER NETWORK RULE コマンドを実行して、ルールのネットワーク識別子とコメントを置き換えることができます。ネットワークルールに個別のネットワーク識別子を追加または削除することはできません。新しい値を追加すると、既存の識別子は失われます。
ネットワークルールの TYPE
および MODE
は変更できません。
たとえば、ネットワークルールの所有者は、 IPv4 アドレスの新しい範囲からのトラフィックを許可またはブロックするために使用できるように変更できます。
ALTER NETWORK RULE cloud_network SET VALUE_LIST = ('47.88.25.32/27');
ネットワークルールの所有者は、ルールからすべてのネットワーク識別子を削除することもできます。
ALTER NETWORK RULE cloud_network UNSET VALUE_LIST;
ネットワークルールの複製¶
ネットワークルールはスキーマレベルのオブジェクトであり、それが含まれるデータベースと一緒に複製されます。
ネットワークルールを使用するネットワークポリシーの複製については、 ネットワークポリシーの複製 を参照してください。
権限とコマンド¶
コマンド |
権限 |
説明 |
---|---|---|
SCHEMA の CREATE NETWORK RULE |
新しいネットワークルールを作成します。 |
|
NETWORK RULE の OWNERSHIP |
既存のネットワークルールを変更します。 |
|
NETWORK RULE の OWNERSHIP |
既存のネットワークルールをシステムから削除します。 |
|
NETWORK RULE の OWNERSHIP |
既存のネットワークルールのプロパティを説明します。 |
|
NETWORK RULE OWNERSHIP または SCHEMA の USAGE |
システムのすべてのネットワークルールを一覧表示します。 |