Snowflake Postgresネットワーク¶
デフォルトでは、Snowflake Postgresは、選択したクラウドリージョンの新しいプライベートネットワーク内で新しいインスタンスをそれぞれプロビジョニングします。各ネットワークは、同じクラウドリージョン内の他のネットワークから分離され、プライベートです。
デフォルトでは、Snowflake Postgresインスタンスは受信接続を許可しません。Snowflake Postgresインスタンスのトラフィックは、次の2つの方法のいずれかで有効にできます。
Postgresのイングレスおよび/またはエグレスネットワークルールを含むネットワークポリシーをアタッチします。このオプションは、すべてのアカウントで利用できます。
クラウドベンダープライベートネットワークとプライベートリンク接続を構成します。このオプションはBusiness Critical Edition以上のアカウントで利用可能です。
Snowflake Postgresネットワークのポリシーとルール¶
Snowflake Postgresインスタンス関数に関する ネットワークポリシー および ネットワークルール は、他のSnowflakeリソースと同様ですが、重要な違いがいくつかあります。
Snowflakeアカウント、ユーザー、およびその他のセキュリティ統合に対するのと同じように、Snowflake Postgresインスタンスと一緒に使用するために、ネットワークポリシーが アクティベートされている 必要はありません。 Snowflake Postgresインスタンスのネットワークポリシーは、代わりにインスタンスの作成時にインスタンスに直接アタッチされます。 既存のインスタンスのネットワークポリシーも変更できます。
Snowflake Postgresインスタンスは、ネットワークポリシーの ALLOWED_NETWORK_RULE_LIST および BLOCKED_NETWORK_RULE_LIST プロパティのみを使用します。BLOCKED_IP_LIST および ALLOWED_IP_LIST プロパティは無視されます。
Snowflake Postgresインスタンスのネットワークルールは、Postgres IngressまたはPostgres Egressモードのいずれかを使用する必要があります。 これらのモードを使用するルールは現在、 IPv4 型に制限されています。
ネットワークポリシーでPostgres IngressまたはPostgres Egress以外のモードを使用するネットワークルールは、それらを使用するSnowflake Postgresインスタンスでは無視されます。
権限¶
新しいネットワークポリシーを作成するには、Snowflakeユーザーは CREATE NETWORK POLICY ON ACCOUNT 権限を持っている必要があります。
新しいネットワークルールを作成するには、Snowflakeユーザーは CREATE NETWORK RULE ON SCHEMA 権限を持っている必要があります。
Snowflakeインスタンスに既存のネットワークポリシーをアタッチするには、Snowflakeユーザーがネットワークポリシーを所有するか、ポリシーの所有者がポリシーに対するUsageを GRANT する必要があります。
Snowflake Postgresネットワークポリシーとルールの例¶
例:
オフィスから新しいPostgresインスタンスへの受信トラフィックを許可したいと考えています。オフィスのネットワークルーターのパブリック IP アドレスは
23.206.171.35だとします。また、新しいPostgresインスタンスから、Postgres外部データラッパー接続を介して、オフィスのPostgresサーバーへの送信トラフィックを許可したいと考えています。
このために、Postgres IngressネットワークルールとPostgres Egressネットワークルールの両方を持つ新しいポリシーを作成します。
2つの新しいネットワークルールを作成します 。
23.206.171.35/32を両方の唯一のネットワーク識別子として使用し、片方の Mode として「Postgres Ingress」を、もう1つの Mode として「Postgres Egress」を使用します。Allowed リストに新しいルール両方を含む 新しいネットワークポリシーを作成します 。
ナビゲーションメニューで Postgres を選択します。
+ Create を選択します。
必要なインスタンス構成の詳細を選択する場合は、 Network policy 選択ボックスで新しいポリシーを選択します。 下の画像では、
OFFICE POLICY EXAMPLEという名前のポリシーを選択しています。
-- Create the ingress rule
CREATE NETWORK RULE PG_INGRESS_FROM_OFFICE
TYPE = IPV4
VALUE_LIST = ('23.206.171.35/32')
MODE = POSTGRES_INGRESS;
-- Create the egress rule
CREATE NETWORK RULE PG_EGRESS_TO_OFFICE
TYPE = IPV4
VALUE_LIST = ('23.206.171.35/32')
MODE = POSTGRES_EGRESS;
-- Create a new policy using both rules in its allowed list
CREATE NETWORK POLICY "OFFICE POLICY EXAMPLE"
ALLOWED_NETWORK_RULE_LIST = ('PG_INGRESS_FROM_OFFICE', 'PG_EGRESS_TO_OFFICE')
COMMENT = 'Traffic to/from the office.';
-- Create a new Snowflake Postgres instance that uses the new policy
CREATE POSTGRES INSTANCE SNOWFLAKE_POSTGRES_DEMO
COMPUTE_FAMILY = 'STANDARD_L'
STORAGE_SIZE_GB = 50
AUTHENTICATION_AUTHORITY = POSTGRES
POSTGRES_VERSION = 17
NETWORK_POLICY = '"OFFICE POLICY EXAMPLE"';
インスタンス作成時にイングレスルールを作成¶
Snowflake Postgresインスタンスを作成する前にネットワークポリシーとルールを作成する代わりに、Snowsightを介してSnowflake Postgresインスタンスを作成する時に、Postgresイングレスルールを使用してポリシーを作成できます。
ナビゲーションメニューで Postgres を選択します。
Postgres Instances ページで、右上にある Create ボタンを選択します。
インスタンス構成を選択しますが、 Network policy の選択は空白のままにします。
Create を選択すると、新しいダイアログに
snowflake_admin`Postgresユーザーの 接続認証情報 が表示されます。これらの認証情報を安全な場所に保存したら、 Continue to network settings を選択します。Network Settings ダイアログ(以下に表示)で、Postgresイングレスインスタンスを作成したい IP アドレスおよび/または CIDR 値を入力して、Enterを推すと、それぞれがリストに追加されます。
Details セクションを展開し、必要に応じて新しいネットワークルールおよび/またはポリシー名を編集します。
Save を選択すると、新しいPostgresイングレスネットワークポリシーが作成され、アクティブになるとインスタンスに自動的にアタッチされます。
Snowflake Postgresプライベートリンク¶
Snowflake Postgresインスタンスのプライベートリンクは、Business Critical Edition以上のアカウントで利用できます。
Snowflake Postgresインスタンスのプライベートリンクを有効にするには、次の手順に従って、クラウドベンダーアカウントとSnowflakeアカウント間でプライベートリンクを有効にします。
権限¶
Snowflake Postgresインスタンスのプライベートリンクを有効にするには、Snowflakeユーザーは以下の権限を持っている必要があります。
MANAGE POSTGRES PRIVATE CONNECTIVITY ON ACCOUNT
指定された各Snowflake Postgresインスタンスの OWNERSHIP または MANAGE
Snowflake Postgresインスタンスのプライベートリンクの設定¶
クラウドベンダーとSnowflakeアカウント間のプライベートリンクと必要な権限を有効にすると、次のようにインスタンスごとにSnowflake Postgresインスタンスのプライベートリンクを有効にできます。
プライベートリンク接続の他に、インスタンスのネットワークポリシールールを設定する予定がない場合は、 New instance ダイアログで Network Security option のプライベートリンクを選択します。ネットワークポリシーを設定または使用する場合は、代わりに Network policy を選択し、ネットワークポリシーについて前の手順に従います。
インスタンスがアクティブになると、そのインスタンスのプライベートリンクを有効にできます。
ナビゲーションメニューで、 Postgres を選択してから、インスタンスを選択します。
インスタンスの Instance details ペインで、 Private Link セクションの編集アイコンを選択します。
確認ダイアログが表示され、クラウドサービスプロバイダーのプライベートリンクの設定を確認するよう促されます。Enable を選択します。この手順は完了するまでに最大10分かかる場合があることに注意してください。
Snowflake Postgresインスタンスのプライベートリンクがアクティブになると、そのインスタンスの新しいプライベートリンク接続を確立できます。
ナビゲーションメニューで Postgres を選択して、詳細ページを表示するインスタンスを選択します。
右側にある Private Link セクションの編集アイコンを選択して、Private Linkペインを展開します(以下を参照)。
表示された Service address を使用して、クラウドベンダーアカウントのプライベートネットワークからプライベートリンク接続リクエストを行います。
Snowflake Postgresインスタンスの詳細ページを更新します。Private Linkペインには、リクエストに対する新しい接続エントリが表示されるはずです。 check mark (承諾)も x mark (拒否)も選択されていません。check mark を選択して承諾します。
クラウドサービスプロバイダーのプライベートネットワークのホストからSnowflake Postgresインスタンスに接続することはできません。
次のように、Snowflake SQL でアクティブなインスタンスに対してプライベートリンクを有効にすることができます。
ALTER POSTGRES INSTANCE <name> ENABLE PRIVATELINK;
その非同期操作には、最大10分かかることがあります。ステータスを追跡するには、 DESCRIBE POSTGRES INSTANCE が返す privatelink_service_identifier の値を確認します。
DESCRIBE POSTGRES INSTANCE <name>;
インスタンスエントリの同じ privatelink_service_identifier が SHOW POSTGRES INSTANCES の出力に表示されます。
SHOW POSTGRES INSTANCES;
その privatelink_service_identifier 列が非 NULL 値を示している場合、その識別子を使用して、Snowflakeアカウントへのプライベートリンク接続を有効にしたクラウドサービスプロバイダーアカウントのプライベートネットワークから、プライベートリンク接続リクエストを行うことができます。
クラウドベンダーアカウントのプライベートネットワークからその接続リクエストを行った後、Snowflake Postgresインスタンスのリクエストを確認します。
SHOW PRIVATELINK CONNECTIONS IN POSTGRES INSTANCE <name>;
このコマンドは、次の列を返します。
endpointconnection_idstatus
接続リクエストは、クラウドベンダーのプライベートネットワークのプライベートリンク endpoint 値と pending の status 値を持つエントリになります。
ALTER POSTGRES INSTANCE コマンドを実行することで、1つ以上の保留中のプライベートリンク接続リクエストを承諾できます。
ALTER POSTGRES INSTANCE [IF EXISTS] <name> AUTHORIZE PRIVATELINK CONNECTIONS = ('<connection_id' [ , ... ]);
このコマンドを実行すると、1つ以上の保留中、または以前に承認されたプライベートリンク接続リクエストを取り消すことができます。
ALTER POSTGRES INSTANCE [IF EXISTS] <name> REVOKE PRIVATELINK CONNECTIONS = ('<connection_id' [ , ... ]);