内部ステージ用のGoogle Private Service Connectエンドポイント¶
このトピックでは、 `Google Private Service Connectエンドポイント<https://cloud.google.com/vpc/docs/private-service-connect#endpoints>`_ を介してSnowflake内部ステージに接続するための概念と、詳細な手順について説明します。
Google Cloud Private Service Connectエンドポイント:概要¶
Google Private Service Connect(PSC)エンドポイントを構成して、Snowflake内部ステージへの安全でプライベートな接続を提供できます。この設定により、Snowflake内部ステージへのデータのロードおよびアンロード操作で、パブリックインターネットではなくGoogle PSC ネットワークが使用されるようになります。次の図は、この新しいサポートをまとめたものです。
次のリストは、図の番号に関する情報を提供します。
この図は、単一のSnowflake内部ステージ(2と3)を指す1つのGoogle VPC ネットワークからの単一の PSC エンドポイントを示しています。
注釈
同じSnowflake内部ステージにアクセスする同じ VPC ネットワーク内に複数のプライベートエンドポイントを構成できます。
オンプレミスユーザーは、番号1に示すようにSnowflakeに直接接続できます。
Snowflake内部ステージに接続するには、オンプレミス ユーザーはリクエストを VPC ネットワーク2経由でルーティングし、次にGoogle PSC ネットワーク3経由でSnowflake内部ステージに接続する必要があります。
利点¶
Snowflake内部ステージにアクセスするためにプライベートエンドポイントを実装すると、次の利点があります。
内部ステージのデータは、パブリックインターネットを通過しません。
オンプレミスのクライアントと SaaS アプリケーションは、Google PSC ネットワークを使用することで、Snowflake内部ステージバケットに安全にアクセスできます。
管理者は、内部ステージデータにアクセスするためにファイアウォール設定を変更する必要がありません。
管理者は、一貫したセキュリティと監視を実装して、内部ステージへのアクセスを制限できます。
制限事項¶
Snowflakeアカウントには最大10個の VPC ネットワークを許可リストに登録できます。
Snowflake内部ステージにアクセスするためのプライベートエンドポイントの構成¶
Snowflake内部ステージにアクセスするようにプライベートエンドポイントを構成するには、次の3つのロールを使用する必要があります。
Snowflake ACCOUNTADMIN システムロール。
Google Cloud 管理者。
ネットワーク管理者。
組織内のロール階層に応じて、構成作業で複数の人またはチームとの調整が必要になる場合があります。
次のステップを実行して、Google PSC エンドポイントを介したSnowflake内部ステージへの安全なアクセスを構成および実装します。
Google Cloud 管理者として、Google Cloudコンソールを使用して、Snowflakeがネットワークアクセスを制限するために使用する完全修飾パス値を取得します。
https://console.cloud.google.comで、Quick Access`|ra|:extui:`VPC Network に移動し、 »VPC Networks`|ra|:extui:`Name でプロジェクトを選択します。
VPC network details で、 Equivalent REST を選択します。
Equivalent REST Response で、
"selfLink"の値をコピーします。この値は
projects/vpc_network_name/global/networks/network_nameのようになります。次のステップで、この値をシステム関数の
'google_cloud_vpc_network_name'引数として指定します。
Snowflakeで、 ACCOUNTADMIN ロールを使用して SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS 関数を呼び出して、内部ステージへのアクセスを承認します。例:
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS('<google_cloud_vpc_network_name>');
Google Cloud 管理者としてhttps://console.cloud.google.com/にアクセスし、Google PSC エンドポイントを作成し、Snowflakeがアクセスする VPC ネットワークに添付します。
Network services » Private Service Connect で新しいエンドポイントを作成し、 Connect endpoint を選択します。
Target で、
All Google APIsをターゲットとして選択し、必須フィールドに入力します。注釈
All Google APIsは グローバル エンドポイントに適しています。現在のところ、グローバルエンドポイントのみがサポートされています。ADD ENDPOINT を選択します。
新しく作成されたGoogle PSC エンドポイントの IP アドレスおよびGoogle PSC エンドポイントが接続する VPC ネットワーク ID を記録します。
ネットワーク管理者として、URLs を解決するための DNS 設定を構成します。
Network services で、 Cloud DNS に移動します。
次の設定で新しい DNS ゾーンを作成します。
ゾーンタイプ:
privateDNS 名前:
storage.googleapis.comオプション:
Default (private)ネットワーク:
prod
CREATE を選択します。
新しいプライベート DNS ゾーンで、次の値を持つ新しいレコードを作成します。
内部ステージのバケット名を使用します。
リソース記録タイプ:
AIPv4 アドレス:
10.10.80.55--- 以前に作成したGoogle PSC エンドポイントの IP アドレスを使用します。CREATE を選択します。
同じ VPC のクライアントから、
nslookupまたはdigコマンドを使用して、内部ステージURL がエンドポイントの IP アドレスを解決していることを確認します。たとえば、次の
digコマンドを使用して解決を確認します。dig gcpeuropewest4-63osaw1-stage.storage.googleapis.com適切に構成されたグローバルエンドポイントは、次のような結果を返す必要があります。
DNS name: gcpeuropewest4-63osaw1-stage
内部ステージへのパブリックアクセスをブロックする --- 推奨¶
Snowflakeは、承認した VPC ネットワークを経由する場合を除き、Google PSC エンドポイントへのすべてのアクセスを拒否することをお勧めします。これには、内部ステージへのパブリックインターネットアクセスの拒否が含まれます。
内部ステージへのパブリックアクセスをブロックするには、 SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS 関数を呼び出します。
Google内部ステージへのパブリックアクセスの制御は、Snowflakeサービスへのパブリックアクセスの制御とは異なります。内部ステージへのリクエストをブロックするには、ネットワークポリシーではなく、 SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS 関数を使用します。ネットワークポリシーとは異なり、この関数は一部のパブリック IPアドレスをブロックしながら他のアドレスを許可することはできません。この関数は、すべての IP アドレスをブロックします。SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS 関数は完了するまでに数分かかる場合があります。
パブリックアクセスがブロックされていることを確認する¶
SYSTEM$INTERNAL_STAGES_PUBLIC_ACCESS_STATUS 関数を実行して、パブリック IP アドレスが内部ステージにアクセスできるかどうかを確認します。
Google Cloud 設定では現在、すべてのパブリックトラフィックがブロックされており、この関数は Public Access to internal stages is blocked を返します。このメッセージは、 SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS 関数の実行後に設定が変更されなかったことを示しています。
パブリックアクセスのブロックを解除¶
SYSTEM$UNBLOCK_INTERNAL_STAGES_PUBLIC_ACCESS 関数を実行すると、これまでブロックされていた内部ステージへのパブリックアクセスを許可できます。
この関数を実行すると、内部ステージからすべての制限が削除されます。
Snowflake内部ステージへのアクセスを取り消す¶
Google PSC プライベートエンドポイントを介してSnowflake内部ステージへのアクセスを取り消すには、次のステップを実行します。
Snowflake管理者は、 ENABLE_INTERNAL_STAGES_PRIVATELINK パラメーターが
TRUEに設定されていることを確認します。例:USE ROLE ACCOUNTADMIN; SHOW PARAMETERS LIKE 'enable_internal_stages_privatelink' IN ACCOUNT;
Snowflake管理者は、 SYSTEM$REVOKE_STAGE_PRIVATELINK_ACCESS 関数を呼び出し、プライベートエンドポイントへのアクセスを最初に承認するために使用されたのと同じ
google_cloud_vpc_network_name値を使用して、プライベートエンドポイントへのアクセスを取り消します。例:USE ROLE ACCOUNTADMIN; SELECT SYSTEM$REVOKE_STAGE_PRIVATELINK_ACCESS('<google_cloud_vpc_network_name>');
Google Cloud 管理者は、Google Cloud ポータルを通じてプライベートエンドポイントを削除します。
ネットワーク管理者として、ストレージアカウント URLs の解決に使用された DNS およびエイリアスの記録を削除します。
これらの手順を完了すると、 VPC ネットワークへのアクセスが取り消されます。