CREATE NETWORK RULE¶
ネットワークルールを作成するか、既存のネットワークルールを置き換えます。
- こちらもご参照ください。
- ALTER NETWORK RULE , DROP NETWORK RULE , SHOW NETWORK RULES , DESCRIBE NETWORK RULE 
構文¶
CREATE [ OR REPLACE ] NETWORK RULE <name>
   TYPE = { IPV4 | AWSVPCEID | AZURELINKID | HOST_PORT | PRIVATE_HOST_PORT }
   VALUE_LIST = ( '<value>' [, '<value>', ... ] )
   MODE = { INGRESS | INTERNAL_STAGE | EGRESS }
   [ COMMENT = '<string_literal>' ]
必須パラメーター¶
- name
- ネットワークルールの識別子。 - 識別子の値はアルファベットで始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: - "My object")。二重引用符で囲まれた識別子は、大文字と小文字が区別されます。- 詳細については、 識別子の要件 をご参照ください。 
- TYPE = { IPV4 | AWSVPCEID | AZURELINKID | HOST_PORT | PRIVATE_HOST_PORT }
- 許可またはブロックされるネットワーク識別子の型を指定します。ネットワークルールは1つの型のみ持つことができます。 - IPV4は、ネットワークルールがリクエスト元の IPv4 アドレスに基づいて、 ネットワークトラフィックを許可またはブロックすることを示します。
- AWSVPCEIDは、ネットワークルールが AWS PrivateLink 上のネットワークトラフィックを許可またはブロックすることを示します。
- AZURELINKIDは Azure Private Link 上のネットワークトラフィックを許可またはブロックするネットワークルールを示します。
- HOST_PORTは、ネットワークルールがリクエスト先のドメインに基づいて、発信ネットワークトラフィックを許可することを示します。- TYPE = HOST_PORTの場合は、- MODEパラメーターを- EGRESSに設定する必要があります。
- PRIVATE_HOST_PORTは、ネットワークルールが、外部ネットワークロケーションへの プライベート接続 を使用する発信ネットワークトラフィックを許可することを示します。- TYPE = PRIVATE_HOST_PORTの場合、- MODEパラメーターは- EGRESSに設定する必要があります。
 
- VALUE_LIST = ( 'value' [, 'value', ... ] )
- 許可またはブロックされるネットワーク識別子を指定します。 - リストの有効な値は、ネットワークルールの型によって決まります。 - TYPE = IPV4の場合、各値は有効な IPv4 アドレスか アドレスの範囲 にする必要があります。
- TYPE = AWSVPCEIDの場合、各値は有効な VPCE ID にする必要があります。VPC IDs はサポートされていません。
- TYPE = AZURELINKIDの場合、各値はAzure プライベートエンドポイント の有効な LinkID にする必要があります。SYSTEM$GET_PRIVATELINK_AUTHORIZED_ENDPOINTS 関数を実行して、アカウントに関連付けられた LinkID を取得します。
- TYPE = HOST_PORTの場合、各値は有効なドメインに解決される必要があります。オプションで、ポートまたはポートの範囲を含めることもできます。- ほとんどの場合、有効なポート範囲は1~65535です。ポートを指定しない場合、デフォルトは443です。外部ネットワークの場所が動的ポートをサポートしている場合は、可能なポートをすべて指定する必要があります。 - すべてのポートへのアクセスを許可するには、ポートを0と定義します。例えば、 - example.com:0です。- 値がドメインに解決される場合は、ワイルドカード文字として単一のアスタリスクを使用できます。アスタリスクは英数字とハイフン( - -)にのみ一致します。- ワイルドカードは、以下の例のように、サブドメインの単一レベルにのみ対応しています。 - *.google.com
- snowflake-*.google.comおよび- snowflake*abc.google.com
 - 以下の例のように、 - 0.0.0.0を指定することで、ドメインとして すべての アウトバウンドエンドポイントへのリクエストを許可できます。ドメインとして- 0.0.0.0を指定する場合、ポート値として443と80のみを使用できます。- ポート80ですべてのエンドポイントへのアクセスを許可する - value_list = ('0.0.0.0:80');
- ポート443ですべてのエンドポイントへのアクセスを許可する - value_list = ('0.0.0.0:443');- value_list = ('0.0.0.0');
- ポート80と443の両方ですべてのエンドポイントへのアクセスを許可する - value_list = ('0.0.0.0:80', '0.0.0.0:443');
 
- TYPE = PRIVATE_HOST_PORTの場合、有効なドメインを1つ指定します。- ほとんどの場合、有効なポート範囲は1~65535です。ポートを指定しない場合、デフォルトは443です。外部ネットワークの場所が動的ポートをサポートしている場合は、可能なポートをすべて指定する必要があります。 - すべてのポートへのアクセスを許可するには、ポートを0と定義します。例えば、 - example.com:0です。
 
- MODE = { INGRESS | INTERNAL_STAGE | EGRESS }
- ネットワークルールによって制限されるものを指定します。 - INGRESS
- INGRESSモードの動作は、ネットワークルールの- TYPEプロパティの値に依存します。- TYPE=IPV4の場合、デフォルトでネットワークルールはSnowflakeサービスへのアクセスのみを制御します。- アカウント管理者が ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES パラメーターを有効にした場合、 - MODE=INGRESSと- TYPE=IPV4は AWS 内部ステージも保護します。
- TYPE=AWSVPCEIDの場合、ネットワークルールはSnowflakeサービスへのアクセスのみを制御します。
 
- INTERNAL_STAGE
- Snowflakeサービスへのアクセスを制限することなく、 AWS 内部ステージへのリクエストを許可またはブロックします。このモードを使用するには、以下が必要です。 - アカウント管理者は ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES パラメーターを有効にする必要があります。 
- ネットワークルールの - TYPEプロパティは- AWSVPCEIDにする必要があります。
 
- EGRESS
- Snowflakeが外部宛先にリクエストを送信できるようにします。 
 - デフォルト: - INGRESS
オプションのパラメーター¶
- COMMENT = 'string_literal'
- ネットワークルールのコメントを指定します。 - デフォルト: 値なし 
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
| 権限 | オブジェクト | 注意 | 
|---|---|---|
| CREATE NETWORK RULE | スキーマ | デフォルトでは、 ACCOUNTADMIN と SECURITYADMIN のロールとスキーマ所有者のみがこの権限を持ちます。権限は必要に応じて追加のロールに付与できます。 | 
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
- ネットワークルールに IP アドレスを指定する場合、Snowflakeは クラスレスドメイン間ルーティング(CIDR)表記 を使用して IP アドレスの範囲をサポートします。 - たとえば、 - 192.168.1.0/24は、- 192.168.1.0〜- 192.168.1.255の範囲内のすべての IPv4 アドレスを表します。
- CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。 
- メタデータについて: - 注意 - Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。 
例¶
AWS S3エンドポイントから内部ステージへのトラフィックを許可またはブロックするためのネットワークルールを作成します。
CREATE NETWORK RULE corporate_network
  TYPE = AWSVPCEID
  VALUE_LIST = ('vpce-123abc3420c1931')
  MODE = INTERNAL_STAGE
  COMMENT = 'corporate privatelink endpoint';
IP アドレスの範囲からSnowflakeサービスおよび内部ステージへのトラフィックを許可またはブロックするために使用するネットワークルールを作成します。
CREATE NETWORK RULE cloud_network
  TYPE = IPV4
  VALUE_LIST = ('47.88.25.32/27')
  COMMENT ='cloud egress ip range';
Snowflakeが外部宛先にリクエストを送信するときに、ドメインとドメイン/ポートの組み合わせを許可するために使用するネットワークルールを作成します。
CREATE NETWORK RULE external_access_rule
  TYPE = HOST_PORT
  MODE = EGRESS
  VALUE_LIST = ('example.com', 'example.com:443');
外部ネットワークアクセス用 のアウトバウンドプライベート接続を有効にするネットワークルールを作成します。
CREATE OR REPLACE NETWORK RULE ext_network_access_db.network_rules.azure_sql_private_rule
  MODE = EGRESS
  TYPE = PRIVATE_HOST_PORT
  VALUE_LIST = ('externalaccessdemo.database.windows.net');