ネットワークポリシー

ネットワークポリシーは、Snowflakeサービスにネットワーク構成を管理するためのオプションを提供します。

ネットワークポリシーにより、ユーザー IP アドレスに基づいたアカウントへのアクセス制限ができるようになります。事実上、ネットワークポリシーを使用すると、 IP 許可リスト 、および必要に応じて IP ブロックリスト を作成できます。

注釈

現在 プレビュー にある ネットワークルール は、ネットワークポリシーと組み合わせてネットワークアクセスを制限できます。ネットワークルールには、次のような利点があります。

  • ネットワークポリシーを使用して識別子をブロックまたは許可する前に、ネットワーク識別子を論理ユニットにグループ化します。

  • プライベート接続エンドポイント(AWS VPC エンドポイントおよびAzureプライベートエンドポイント)から発信されるリクエストを制限できます。

  • Snowflakeサービス および 内部ステージ の両方へのアクセスを制限します。

Snowflakeは、許可またはブロックされる識別子を指定するネットワークルールを使用して、すべての新しいネットワークポリシーを実装することを強く推奨します。

詳細については、 ネットワークルールの操作 をご参照ください。

このトピックの内容:

概要

デフォルトでは、Snowflakeはユーザーが任意のコンピューターまたはデバイス IP アドレスからサービスに接続できるようにします。セキュリティ管理者(またはそれ以上)は、単一のIPアドレスまたはアドレスのリストへのアクセスを許可または拒否するネットワークポリシーを作成できます。ネットワークポリシーは現在、インターネットプロトコルバージョン4(つまり、 IPv4)アドレスのみをサポートしています。

十分な権限を持つ管理者は、任意の数のネットワークポリシーを作成できます。ネットワークポリシーは、アカウントまたは個々のユーザーレベルで アクティブ化 されるまで有効になりません。ネットワークポリシーをアクティブ化するには、アカウントまたはユーザーのプロパティを変更し、ネットワークポリシーをオブジェクトに適用します。アカウントまたは特定のユーザーに一度に適用できるネットワークポリシーは1つだけです。

ネットワークポリシーは、一部のタイプのセキュリティ統合にも適用できます。

ネットワークポリシーの優先順位

ネットワークポリシーは、アカウント、セキュリティ統合、またはユーザーに適用できます。複数のネットワークポリシーが適用されている場合、最も具体的なネットワークポリシーが、一般的なネットワークポリシーよりも優先されます。優先順位をまとめると次のようになります。

アカウント

アカウントに適用されるネットワークポリシーは、最も一般的なネットワークポリシーです。これらのポリシーよりも、セキュリティ統合またはユーザーに適用されるネットワークポリシーが優先されます。

セキュリティ統合

セキュリティ統合に適用されるネットワークポリシーは、アカウントに適用されるネットワークポリシーよりも優先されますが、ユーザーに適用されるネットワークポリシーのほうが優先されます。

ユーザー

ユーザーに適用されるネットワークポリシーは、最も具体的なネットワークポリシーです。これらのポリシーは、アカウントとセキュリティ統合の両方よりも優先されます。

CIDR 表記

Snowflakeは、 クラスレスドメイン間ルーティング(つまり、CIDR)表記 を使用したIPアドレスの範囲の指定をサポートしています。CIDR 表記では、オプションのサブネットはプレフィックスの長さを表す10進数として表されます。

ip_address[/prefix_length]

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

許可/ブロックされたアドレスリストの例

Snowflakeでは、現在のIPアドレスをブロックするネットワークポリシーを設定することはできません。現在のIPアドレスをブロックするネットワークポリシーを作成しようとすると、エラーメッセージが表示されます。

以下は、Snowflakeネットワークポリシーを使用して許可およびブロックされるIPアドレスの範囲を定義する代表的な例です。

明示的にブロックされている 192.168.1.99 を除き、 192.168.1.0 から 192.168.1.255 の範囲のすべてのIPアドレスを許可します。さらに、他のすべてのIPアドレスがブロックされます。

- Allowed IP Addresses: 192.168.1.0/24
- Blocked IP Addresses: 192.168.1.99
Copy

次の例では、 192.168.1.0 および 192.168.1.100 IPアドレスのみがアカウントにアクセスできます。

- Allowed IP Addresses: 192.168.1.0,192.168.1.100
- Blocked IP Addresses: N/A
Copy

ネットワークポリシーのバイパス

DESCRIBE USER を実行して表示できるユーザーオブジェクトプロパティ MINS_TO_BYPASS_NETWORK_POLICY を構成することにより、設定された分数の間ネットワークポリシーを一時的にバイパスすることが可能です。このオブジェクトプロパティの値を設定できるのはSnowflakeだけです。このプロパティの値を設定するには、 Snowflakeサポート に連絡してください。

ネットワークポリシーの作成

注釈

ネットワークポリシーを作成できるのは、セキュリティ管理者(つまり、 SECURITYADMIN ロールを持つユーザー)以上、 または CREATE NETWORK POLICY グローバル権限のあるロールのみです。ネットワークポリシーの所有権は、別のロールに譲渡できます。

Snowsight、 Classic Console、または SQL を使用して、ネットワークポリシーを作成できます。

Snowsight
  1. Admin » Security » Network Policies をクリックします。

  2. ページの右上隅にある + Network Policy ボタンをクリックします。 New network policy ダイアログが開きます。

  3. 次のプロパティを指定します。

    プロパティ

    説明

    ポリシー名

    ネットワークポリシーの識別子。アカウントに対して一意である必要があります。

    識別子はアルファベットで始まる必要があり、識別子の文字列全体が二重引用符で囲まれている場合を除き、スペースや特殊文字を含めることはできません(例: "My object")。

    二重引用符で囲まれた識別子も大文字と小文字が区別されます。

    詳細については、 識別子の要件 をご参照ください。

    許可された IP アドレス

    Snowflakeアカウントへのアクセスが許可された、1つ以上の IPv4 アドレスのコンマ区切りリスト。これは 許可リスト と呼ばれます。Snowflakeは、許可リストに含まれていないすべての IP アドレスを自動的にブロックします。

    各 IP アドレス は、クラスレスドメイン間ルーティング(CIDR)表記を使用してアドレス範囲をカバーできます。

    詳細については、 CIDR 表記 (このトピック内)をご参照ください。

    例えば、 許可/ブロックされたアドレスリストの例 (このトピック内)をご参照ください。

    ブロックされた IP アドレス

    Snowflakeアカウントへのアクセスが拒否された、1つ以上の IPv4 アドレスのコンマ区切りリスト。これはブロックリストと呼ばれます。

    このパラメーターは、 Allowed IP Addresses リストにある IP アドレスの範囲へのアクセスを許可し、その範囲内の1つ以上の IP アドレスへのアクセスを拒否する場合にのみ設定します。

    各 IP アドレス は、クラスレスドメイン間ルーティング(CIDR)表記を使用してアドレス範囲をカバーできます。

    詳細については、 CIDR 表記 (このトピック内)をご参照ください。

    例えば、 許可/ブロックされたアドレスリストの例 (このトピック内)をご参照ください。

    コメント

    ネットワークポリシーのコメントを指定します。

  4. Create network policy ボタンをクリックします。

Classic Console
  1. Account Account tab » Policies をクリックします。 Policies ページが表示されます。

  2. Create ボタンをクリックします。 Create Network Policy ダイアログが表示されます。

  3. Name フィールドに、ネットワークポリシーの名前を入力します。

  4. Allowed IP Addresses フィールドに、このSnowflakeアカウントへのアクセスを許可する1つ以上の IPv4 アドレスをコンマで区切って入力します。

    注釈

    特定のアドレスセット 以外 のすべての IP アドレスをブロックするには、許可された IP アドレスリストのみを定義する必要があります。Snowflakeは、許可リストに含まれていないすべての IP アドレスを自動的にブロックします。

  5. Blocked IP Addresses フィールドに、オプションで、このSnowflakeアカウントへのアクセスを拒否される1つ以上の IPv4 アドレスをコンマで区切って入力します。このフィールドは必須ではなく、許可リストのアドレス範囲内にある特定のアドレスを拒否するために主に使用します。

    ご用心

    • ネットワークポリシーに許可されたIPアドレスとブロックされた IP アドレスリストの両方の値が含まれている場合、Snowflakeは最初に ブロックされた IP アドレスリストを適用します。

    • ブロックされた IP アドレスリストには、 0.0.0.0/0 を追加 しない でください。 0.0.0.0/0 は、「ローカルマシン上のすべての IPv4 アドレス」と解釈されます。Snowflakeはこのリストを最初に解決するため、これによりユーザー自身のアクセスがブロックされます。また、許可された IP アドレスリストにこの IP アドレスを含める必要はありません。

  6. 必要に応じて、ネットワークポリシーの他の情報を入力し、 Finish をクリックします。

SQL

CREATE NETWORK POLICY ステートメントを実行します。

ネットワークポリシーの表示

Snowsight、 Classic Console、または SQL を使用して、ネットワークポリシーに関する情報を表示します。

注釈

ネットワークポリシーの詳細を表示できるのは、ネットワークポリシーの OWNERSHIP 権限を持つロールまたはそれ以上のロールのみです。

Snowsight

Select Admin » Security » Network Policies » <ポリシー名>

Classic Console

Account Account tab » Policies » <ポリシー名> をクリックします

SQL

次のステートメントのいずれかを実行します。

アカウントのネットワークポリシーのアクティブ化

Snowflakeアカウントのすべてのユーザーにネットワークポリシーを適用するには、アカウントのネットワークポリシーをアクティブにします。

注釈

個々のユーザーに対してネットワークポリシーがアクティブ化されている場合は、ユーザーレベルのネットワークポリシーが優先されます。ユーザーレベルでのネットワークポリシーのアクティブ化については、 個々のユーザーに対するネットワークポリシーのアクティブ化 (このトピック内)をご参照ください。

注釈

このアクションは、次のロールの いずれか に限定されます。

  • セキュリティ管理者(つまり、 SECURITYADMIN ロールを持つユーザー)またはそれ以上のロール。

  • グローバル ATTACH POLICY 権限を付与されたロール。

ポリシーがアカウントに関連付けられると、Snowflakeは許可された IP アドレスリストとブロックされた IP アドレスリストに基づいて、アカウントへのアクセスを制限します。ルールによって制限されている IP アドレスからログインしようとするユーザーは、アクセスを拒否されます。さらに、ネットワークポリシーがアカウントに関連付けられている場合、既にSnowflakeにログインしている制限されたユーザーは、それ以上のクエリを実行できません。

セキュリティ管理者(またはそれ以上)は、複数のネットワークポリシーを作成できます。ただし、一度に1つのネットワークポリシーのみをアカウントに関連付けることができます。ネットワークポリシーをアカウントに関連付けると、現在関連付けられているネットワークポリシー(存在する場合)は自動的に削除されます。

現在の IP アドレスは、ポリシーの許可された IP アドレスリストに含まれている必要があることに注意してください。それ以外の場合は、ポリシーをアクティブ化するとSnowflakeがエラーを返します。また、現在の IP アドレスをブロックする IP アドレスリストに含めることはできません。

Snowsight、 Classic Console、または SQL を使用して、ネットワークポリシーをアカウントに関連付けることができます。

Snowsight
  1. Admin » Security » Network Policies をクリックします。

  2. 有効化するポリシー名の右側にある Activate Policy ボタンをクリックします。

Classic Console
  1. Account Account tab » Policies をクリックします。

  2. ポリシーをクリックして選択し、右側のサイドパネルに入力します。

  3. 右側のパネルの Activate ボタンをクリックします。

SQL

NETWORK_POLICY アカウントパラメーターを使用して、ネットワークポリシーを設定する ALTER ACCOUNT ステートメントを実行します。

個々のユーザーに対するネットワークポリシーのアクティブ化

Snowflakeアカウントの特定のユーザーにネットワークポリシーを適用するには、そのユーザーのネットワークポリシーをアクティブにします。一度にアクティブにできるネットワークポリシーは、ユーザーごとに1つだけです。ただし、きめ細かい制御のために、ユーザーごとに異なるネットワークポリシーをアクティブ化できます。ネットワークポリシーをユーザーに関連付けると、現在関連付けられているネットワークポリシー(存在する場合)は自動的に削除されます。

注釈

個々のユーザーのネットワークポリシーをアクティブにできるのは、ユーザー および ネットワークポリシーの両方に対する OWNERSHIP 権限を持つロールまたはそれ以上のロールのみです。

ポリシーがユーザーに関連付けられると、Snowflakeは許可された IP アドレスリストとブロックされた IP アドレスリストに基づいて、ユーザーへのアクセスを制限します。有効化されたユーザーレベルのネットワークポリシーを持つユーザーが、ルールによって制限されている IP アドレスからログインしようとすると、そのユーザーはSnowflakeへのアクセスを拒否されます。

さらに、ユーザーレベルのネットワークポリシーがユーザーに関連付けられていて、ユーザーがすでにSnowflakeにログインしている場合、ユーザーの IP アドレスがユーザーレベルのネットワークポリシールールに一致しないと、Snowflakeはユーザーがそれ以上クエリを実行できないようにします。

個々のユーザーのネットワークポリシーをアクティブにするには、 ALTER USER を使用して、ユーザーの NETWORK_POLICY パラメーターを設定します。

ネットワークポリシーの変更

ネットワークポリシーは、 Snowsight、 Classic Console、 または SQL を使用して変更できます。具体的には、許可およびブロックされたアドレスのリストから IP アドレスを追加または削除します。

ネットワークポリシープロパティの説明については、 ネットワークポリシーの作成 (このトピック内)をご参照ください。

Snowsight
  1. Admin » Security » Network Policies をクリックします。

  2. ネットワークポリシー » Edit Policy の行のアクション(...)ボタンをクリックします。 Edit Policy ダイアログが開きます。

  3. 任意のプロパティを編集します。

  4. Save changes ボタンをクリックします。

Classic Console
  1. Account Account tab » Policies をクリックします。

  2. ポリシーをクリックして選択し、右側のサイドパネルに入力します。

  3. 右側のパネルの Edit ボタンをクリックします。

  4. 必要に応じてフィールドを変更します。

    • Allowed IP Addresses または Blocked IP Addresses リストから IP アドレスを削除するには、エントリの横にある x をクリックします。

    • いずれかのリストに IP アドレスを追加するには、適切なフィールドに1つ以上のコンマ区切りの IPv4 アドレスを入力し、 Add ボタンをクリックします。

  5. Save をクリックします。

SQL

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

アカウントまたはユーザーレベルで有効化されたネットワークポリシーの識別

ネットワークポリシーが使用するアカウントまたは特定のユーザーに設定されているかどうかを確認するには、 SHOW PARAMETERS コマンドを実行します。

アカウント
SHOW PARAMETERS LIKE 'network_policy' IN ACCOUNT;
Copy
ユーザー
SHOW PARAMETERS LIKE 'network_policy' IN USER <username>;
Copy

例:

SHOW PARAMETERS LIKE 'network_policy' IN USER jsmith;
Copy

ネットワークポリシーでの複製の使用

Snowflakeは、ネットワークポリシーの複製とフェールオーバー/フェールバック、およびソースアカウントからターゲットアカウントへのそれらの割り当てをサポートしています。

詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。

ネットワークルールの操作

Snowflakeへの受信リクエストの制限は、最終的にネットワークポリシーでアカウントまたはユーザーに適用されますが、管理者はスキーマレベルのオブジェクトである ネットワークルール を使用して、これらの制限を整理できます。

各ネットワークルールは、特定のタイプのリクエスト元の識別子をグループ化します。たとえば、あるネットワークルールには、Snowflakeへのアクセスを許可するすべての IPv4 アドレスを含めることができ、別のネットワークルールには、ブロックするすべてのプライベートエンドポイントをグループ化できます。

しかしながら、ネットワークルールは、リクエストの発信元を許可するかブロックするかを指定しません。ネットワークルールは、単に関連するオリジンを論理的な単位に整理したものです。管理者が、ネットワークポリシーを作成または変更するときに、そのユニットを許可するかブロックするかを指定します。

一般的なワークフローは次のようになります。

  1. 特定のタイプのネットワーク識別子と目的用に、ネットワークルールを作成します。

  2. そのネットワークルールを、ネットワークポリシーの許可ルールリストまたはブロックルールリストに追加します。

  3. ネットワークポリシーを、アカウント、ユーザー、またはセキュリティ統合に適用します。

ネットワークポリシー機能の変更

ネットワークルールの導入により、管理者が次のようなネットワークポリシーを使用してネットワークトラフィックを制御する方法が変わります。

  • ネットワークポリシーがネットワークルールを使用している場合、ポリシーは ALLOWED_IP_LIST と BLOCKED_IP_LIST パラメーターを使用して個々の IP アドレスを指定すべきではありません。アクセスを制限するため、両方の方法を使用することはしないでください。

  • 管理者は、 Snowsight または Classic Console を使用してネットワークルールを作成することや、ネットワークルールをネットワークポリシーに追加することはできません。

  • ネットワークルールは複製できません。これは、ネットワークルールなしでネットワークポリシーを複製する現在の機能には影響しません。

制限事項

このプレビューでは、 GET_PRESIGNED_URL 関数で生成された URL を使用して内部ステージにアクセスするリクエストには、ネットワークルールの制限は適用されません。

ベストプラクティス

  • 範囲を限定します。ネットワークルールは、関連するネットワーク識別子の小さな単位をグループ化するように設計されています。以前は、ネットワークポリシーには、許可またはブロックする必要がある IP アドレスの大規模で単一的なリストが含まれていることがよくありました。ネットワークルールの導入により、この戦略は変わります。たとえば、ネットワーク識別子を次のように分割できます。

    • 北米地域のクライアント IP アドレスを含むネットワークルールを作成し、ヨーロッパおよび中東地域には別のルールを作成します。

    • 高度な権限を持つユーザーやサービスアカウントのユーザーなど、特別なユーザーのアクセスを許可することを目的としたネットワークルールを作成します。このネットワークルールは、個々のユーザーに適用されるネットワークポリシーに追加できます。

    • 1つまたは複数のデータアプリにスコープされるネットワークルールを作成します。

    ネットワークルールの導入に伴い、Snowflakeではネットワークポリシーの範囲も制限することを推奨しています。可能な限り、ネットワークポリシーの適用範囲を、アカウント全体ではなくユーザーグループまたはセキュリティ統合に絞り込みます。

  • コメントを追加。ネットワークルールを作成するときは、 COMMENT プロパティを使用して、ルールの目的を追跡します。Snowflakeでは、少数のモノリシックなルールよりも、多数の小さなターゲットを絞ったルールが推奨されているため、コメントは重要です。

    SHOW NETWORK RULES コマンドを使用すると、コメントも含めてすべてのネットワークルールをリストできます。

サポートされている識別子

各ネットワークルールには、同じタイプの1つまたは複数のネットワーク識別子のリストが含まれます(IPv4 アドレスルールやプライベートエンドポイントルールなど)。

ネットワークルールの TYPE プロパティは、ネットワークルールに含まれる識別子のタイプを識別し、 VALUE_LIST プロパティはそれらの識別子を指定します。

ネットワークルールを使用して制限できる識別子のタイプの完全なリストについては、 サポートされているネットワーク識別子 をご参照ください。

ネットワークルールをネットワークポリシーの許可リストに追加する場合は、同じ型の他の識別子を明示的にブロックする必要はありません。許可された識別子のみがアクセスできます。ただし、異なるタイプの識別子が自動的にブロックされるわけではありません。たとえば、 IPV4 ネットワークルールの許可リストに IP アドレスを1つだけ追加すると、他の IPv4 アドレスはすべてブロックされます。ただし、 VPC エンドポイントは、追加のネットワークルールが使用されない限りアクセス可能なままとなります。

例として、Azure LinkIDs や AWS VPCE IDs のようなプライベートエンドポイント識別子を使用してアクセスを制限するネットワークルールは、パブリックネットワークからのリクエストには影響しません。プライベートエンドポイント識別子に基づいてアクセスを制限し、パブリック IPv4 アドレスからのリクエストを完全にブロックする場合は、2つの別々のネットワークルールを作成する必要があります。

以下のネットワークルールをネットワークポリシーで組み合わせて、パブリックネットワークトラフィックをブロックしながら、 VPCE ID を許可することができます。

CREATE NETWORK RULE block_public_access
  MODE = INGRESS
  TYPE = IPV4
  VALUE_LIST = ('0.0.0.0/0');

CREATE NETWORK RULE allow_vpceid_access
  MODE = INGRESS
  TYPE = AWSVPCEID
  VALUE_LIST = ('vpce-0fa383eb170331202');

CREATE NETWORK POLICY allow_vpceid_block_public_policy
  ALLOWED_NETWORK_RULE_LIST = ('allow_vpceid_access')
  BLOCKED_NETWORK_RULE_LIST=('block_public_access');
Copy

Snowflakeサービスの保護

このセクションでは、ネットワークルールを使用してSnowflakeサービスのみにアクセスを制限する方法について説明します。AWS でアカウントのサービスと内部ステージの両方へのアクセスを制限する場合は、 AWS の内部ステージの保護 をご参照ください。

Snowflakeサービスへのアクセスを制限するには、ネットワークルールの MODE プロパティを INGRESS に設定します。

次に、 TYPE プロパティを使用して、許可またはブロックする 識別子 を指定できます。

AWS の内部ステージの保護

このセクションでは、ネットワークルールを使用して、 AWS の内部ステージへのアクセスを制限する方法(Snowflakeサービスと内部ステージへのアクセスを同時に制限する方法など)について説明します。説明には次が含まれます。

現在、セキュリティ統合に割り当てられたネットワークポリシーを使用して、内部ステージへのアクセスを制限することはできません。

注釈

ネットワークルールを使用して、Microsoft Azureの内部ステージへのアクセスを制限することはできません。ただし、 Azure Private Link を使用している場合は、Azureの内部ステージへのパブリックアクセスすべてをブロックできます。詳細については、 パブリックアクセスのブロック(オプション) をご参照ください。

内部ステージのガイドライン

ネットワークルールの ベストプラクティス に加えて、内部ステージへのアクセスを制限するネットワークルールを作成する場合は、次のガイドラインを遵守する必要があります。

  • 識別子の数を制限します。AWS S3セッションポリシーによる制限のため、内部ステージを保護する戦略は次の制限に準拠する必要があります。

    • IPv4 アドレスを含むネットワークルールには、 1つのルールにつき15 IP を超えるアドレス範囲 を含めることはできません。アドレス範囲が15を超える場合は、追加のネットワークルールを作成します。

    • VPC エンドポイントの VPCE IDs に基づいてトラフィックを許可またはブロックする場合、 ネットワークポリシーごとの累積制限は 10 VPCE IDs です。たとえば、あるネットワークルールに5 VPCE IDs が含まれ、別のネットワークルールに6 VPCE IDs が含まれる場合、両方のルールを同じネットワークポリシーに追加することはできません。

    AWS STS からスコープされた認証情報をフェッチするときに PolicySizeExceeded 例外が発生した場合は、ネットワーク識別子をより小さなネットワークルールに分割します。

  • サービスステージと内部ステージの両方を保護するために、同じルールを使用します。ルールに IPv4 アドレスが含まれ、ネットワークルールのモードが INGRESS の場合、1つのルールでSnowflakeサービスとアカウントの内部ステージの両方を保護できます。Snowflakeでは、サービスにアクセスする IP アドレスと内部ステージにアクセスする IP アドレスが異なる場合でも、1つのルールを使用することを推奨しています。このアプローチにより、組織、管理性、監査が改善されます。

  • ネットワークポリシーをテストします。Snowflakeでは、ユーザーレベルのネットワークポリシーを使用して、ネットワークルールをテストすることを推奨しています。AWS STS からスコープされた認証情報をフェッチするときに PolicySizeExceeded 例外が発生した場合は、ネットワーク識別子をより小さなネットワークルールに分割します。

内部ステージの制限の有効化

ネットワークルールを使用してアカウントの内部ステージへのアクセスを制限するには、アカウント管理者が ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES パラメーターを有効にする必要があります。ネットワークルールは、ルールのモードに関係なく、このパラメーターが有効になるまで内部ステージを保護しません。

ネットワークルールで内部ステージングへのアクセスを制限できるようにするには、次を実行します。

USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES = true;
Copy

内部ステージのみを保護する戦略

ネットワークトラフィックがSnowflakeサービスにアクセスする方法に影響を与えずに AWS 内部ステージへのアクセスを制限するには、次の設定でネットワークルールを作成します。

  • MODE パラメーターを INTERNAL_STAGE に設定します。

  • TYPE パラメーターを AWSVPCEID に設定します。

注釈

Snowflakeサービスへのアクセスを制限することなく、リクエストの IP アドレスに基づいて内部ステージへのアクセスを制限することはできません。

サービスと社内ステージの両方を保護する戦略

Snowflakeサービスと内部ステージの両方へのアクセスを制限する場合、ネットワークトラフィックがパブリックインターネットを通過するか、 AWS Private Linkを通過するかに応じて実装戦略が異なります。

次の比較では、「パブリック」はサービスまたは内部ステージへのトラフィックがパブリックインターネットを通過していることを示し、「プライベート」はトラフィックが AWS Private Linkを使用していることを示します。自分の環境に合った組み合わせを見つけ、それに応じて実装戦略を選択します。

サービス接続

内部ステージ接続

実装戦略

パブリック

パブリック

TYPE=IPV4 および MODE=INGRESS で1つのネットワークルールを作成します。サービスおよび内部ステージにアクセスするすべての IP アドレスを含めます。

プライベート

プライベート

プライベートな IP アドレスを使用してアクセスを制限するか、 VPC エンドポイントの VPCE ID を使用してアクセスを制限するかに応じて、戦略は異なります。

  • (推奨) VPCE IDs を使用する場合は、同じ VPC エンドポイントがサービスおよび内部ステージの両方に接続する場合でも、2つのネットワークルールを作成する必要があります。

    • サービスでは、 TYPE=AWSVPCEID および MODE=INGRESS でネットワークルールを作成します。

    • 内部ステージでは、 TYPE=AWSVPCEID および MODE=INTERNAL_STAGE でネットワークルールを作成します。

  • プライベート IP アドレスを使用する場合、 TYPE=IPV4 および MODE=INGRESS でネットワークルールを作成します。サービスおよび内部ステージにアクセスするすべてのプライベート IP アドレスを含めます。

パブリック 1

プライベート

プライベートな IP アドレスを使用して内部ステージへのアクセスを制限するか、 VPC エンドポイントの VPCE ID を使用するかに応じて、戦略は異なります。

  • (推奨) VPCE IDs を使用する場合、サービスと内部ステージ用の2つのネットワークルールを作成します。

    • サービスでは、 TYPE=IPV4 および MODE=INGRESS でネットワークルールを作成します。

    • 内部ステージでは、 TYPE=AWSVPCEID および MODE=INTERNAL_STAGE でネットワークルールを作成します。

  • プライベート IP アドレスを使用する場合、 TYPE=IPV4 および MODE=INGRESS で1つのネットワークルールを作成します。サービスおよび内部ステージにアクセスするすべての IP アドレスを含めます。

プライベート

パブリック 1

サービスにはプライベート IPs を使用する必要があります(VPCE IDs は使用できません)。 TYPE=IPV4 および MODE=INGRESS で1つのネットワークルールを作成します。サービスおよび内部ステージにアクセスするすべての IP アドレスを含めます。

1(1,2)

サービスまたは内部ステージのいずれかにプライベート接続を実装している場合、Snowflakeでは両方に実装することを推奨しています。

ネットワークルールの作成

管理者は 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 VALUE_LIST = ('47.88.25.32/27');
Copy

作成後、ネットワークポリシーの所有権を別のロールに譲渡できます。

ネットワークポリシーへのネットワークルールの追加

ネットワークルールはネットワーク識別子を整理し、制限される内容を定義しますが、制限を強制するものではありません。ネットワークルールは、ネットワークポリシーに追加され、アクセス制御のためにアカウントやユーザーに適用されるものです。

管理者は、ネットワークポリシーの適切なパラメーターにルールを追加することで、ネットワークルールのネットワーク識別子の許可またはブロックを指定します。ネットワークルールに大文字と小文字を区別する名前を作成した場合は、ネットワークポリシーに割り当てるときに二重引用符を使用する必要があります。

ネットワークポリシーの ALLOWED_NETWORK_RULE_LIST パラメーターは、許可されるネットワーク識別子を含むネットワークルールのリストを定義します。このパラメーターに少なくとも1つのネットワークルールを追加すると、同じタイプの他の識別子を明示的にブロックする必要はありません。許可された識別子のみがアクセスできます。ただし、異なるタイプの識別子が自動的にブロックされるわけではありません。たとえば、 IPV4 ネットワークルールの許可リストに IP アドレスを1つだけ追加すると、他の IPv4 アドレスはすべてブロックされます。ただし、 VPC エンドポイントは、追加のネットワークルールが使用されない限りアクセス可能なままとなります。

ネットワークルールを使用してネットワーク識別子を明示的にブロックする場合は、ネットワークポリシーの BLOCKED_NETWORK_RULE_LIST パラメーターにルールを追加します。

ネットワークポリシーにネットワークルールを追加したら、 DESCRIBE NETWORK POLICY コマンドを実行して検証できます。

ネットワークルールをネットワークポリシーのパラメーターの1つに追加したら、そのポリシーを アカウント または ユーザー にアタッチして制限を適用できます。

2つのネットワークルール corp_network および cloud_network を作成し、これらのルールでネットワーク識別子を許可するネットワークポリシーを作成します。

CREATE NETWORK RULE corp_network TYPE = AWSVPCEID VALUE_LIST = ('vpce-123abc3420c1931');
CREATE NETWORK RULE cloud_network TYPE = IPV4 VALUE_LIST = ('47.88.25.32/27');

CREATE NETWORK POLICY account_policy ALLOWED_NETWORK_RULE_LIST = ( 'corp_network', 'cloud_network' );
Copy

ネットワークポリシーを変更し、ブロックされていたネットワークルールを other_network という新しいネットワークルールに置き換えます。

ALTER NETWORK POLICY my_policy SET BLOCKED_NETWORK_RULE_LIST = ( 'other_network' );
Copy

既存のネットワークポリシーの許可リストに、1つのネットワークルールを追加します。以前にポリシーの許可リストに追加されたネットワークルールは、引き続き有効です。

ALTER NETWORK POLICY my_policy ADD ALLOWED_NETWORK_RULE_LIST = ( 'new_rule' );
Copy

ネットワークポリシーのブロックリストからネットワークルールを削除します。

ALTER NETWORK POLICY my_policy REMOVE BLOCKED_NETWORK_RULE_LIST = ( 'other_network' );
Copy