Google Cloud Private Service ConnectとSnowflake¶
このトピックでは、 Google Cloud Virtual Private Cloud (VPC) ネットワークのサブネットを、パブリックインターネットを経由せずに Google Cloud でホストされている Snowflake アカウントに接続するための概念と Google Cloud Private Service Connect の構成方法について説明します。
Google Cloud Private Service Connect は Snowflake が提供するサービスでは ありません。Snowflakeが、Snowflakeアカウントで使用できるようにするGoogleのサービスです。
概要¶
Google Cloud Private Service Connect は、Snowflake へのアクセスがプライベート IP アドレスを経由するようにすることで、プライベート接続を提供します。Snowflakeはお客様のネットワーク(つまり顧客ネットワーク)のリソースとして表示されますが、トラフィックはお客様の VPC からGoogleネットワークのバックボーンを経由してSnowflake VPC に一方通行で流れます。この設定により、安全でプライベートな通信を提供しながら、ネットワーク構成が大幅に簡素化されます。
次の図は、顧客 Google Cloud VPC および Snowflake サービスに関する Google Cloud Private Service Connect アーキテクチャをまとめたものです。

Google Compute Engine(つまり仮想マシン)は、転送ルール(1)にルーティングされたプライベートな仮想アドレス (IP) に接続します。転送ルールは、プライベート接続(2)を介してサービスアタッチメントに接続します。接続は、Snowflake(4)にリダイレクトするロードバランサー(3)を介してルーティングされます。
制限事項¶
1プロジェクトにつき最大10接続。
アカウントあたり最大50接続。
セルフサービス管理のための一部のSnowflakeシステム関数はサポートされていません。詳細については、 Google Cloud のアカウントの現在の制限 をご参照ください。
詳細については、以下をご参照ください。
Google Cloud VPC 環境の構成¶
このセクションでは、 Google Cloud VPC 環境を構成するための Snowflake 固有の詳細について説明します。
重要
Snowflake は Google Cloud 環境の構成について責任を負い ません。このプロシージャは、 Google Cloud CLI の基本的な使い方を示していますが、決定的なガイドではありません。例:
Google Cloud CLI の代わりに Google Cloud console を使って Google Cloud 環境を構成することもできますが、その場合は手順が変わります。例えば、 Google Cloud console を使用する場合、転送ルールではなくエンドポイントを作成することになります。
必要なファイアウォールの更新や DNS レコードの構成方法は紹介されていません。
他のリージョンでエンドポイントを利用可能にする方法は紹介されていません(Private Service Connectエンドポイントはリージョンリソースです)。エンドポイントを他のリージョンでも利用できるようにするための詳細情報については、 Google ドキュメント を参照してください。
その他ご不明な点がございましたら、 Google Cloud 管理者までご連絡ください。
Snowflake アカウント管理者 (つまり、 ACCOUNTADMIN システムロールを持つユーザー) として、ワークシートを開き、 SYSTEM$GET_PRIVATELINK_CONFIG 関数を呼び出します。以降のステップのために出力を保存しておく必要があります。
例:
USE ROLE ACCOUNTADMIN; SELECT key, value FROM TABLE(flatten(input=>parse_json(system$get_privatelink_config())));
Google Cloud CLI を使用して、 gcloud library を最新バージョンに更新します。
gcloud components update
以下のコマンドを使用して Google Cloud に 認証します。
gcloud auth login
Google Cloud VPC で、転送ルールが存在するプロジェクト ID をセットします。
gcloud config set project <project_id>
プロジェクト IDs のリストを取得するには、次のコマンドを実行します。
gcloud projects list --sort-by=projectId
Google Cloud VPC で、仮想 IP アドレスを 作成します。
gcloud compute addresses create <customer_vip_name> \ --subnet=<subnet_name> \ --addresses=<customer_vip_address> --region=<region>
条件:
customer_vip_name
は、仮想 IP ルールの名前を指定します (例:psc-vip-1
)。subnet_name
はサブネットの名前を指定します。customer_vip_address
は、すべてのプライベート接続 URLs が解決する IP アドレスを指定します。ネットワークから IP アドレスを指定するか、 CIDR 表記を使用して IP アドレスの範囲を指定します。region
は、Snowflakeアカウントが配置されているクラウドリージョンを指定します。
例:
gcloud compute addresses create psc-vip-1 \ --subnet=psc-subnet \ --addresses=192.168.3.3 \ --region=us-central1
出力:
Created [https://www.googleapis.com/compute/v1/projects/docstest-123456/regions/us-central1/addresses/psc-vip-1].
転送ルール を作成して、サブネットをPrivate Service Connectエンドポイントにルーティングし、次にSnowflakeサービスエンドポイントにルーティングします。
gcloud compute forwarding-rules create <name> \ --region=<region> \ --network=<network_name> \ --address=<customer_vip_name> \ --target-service-attachment=<privatelink-gcp-service-attachment>
条件:
name
は、転送ルールの名前を指定します。region
は、Snowflakeアカウントが配置されているクラウドリージョンを指定します。network_name
は、この転送ルールのネットワーク名を指定します。customer_vip_name
は、前のステップで作成した仮想 IP アドレスの<名前>
値 (つまりpsc-vip-1
) を指定します。privatelink-gcp-service-attachment
は、以前のステップで SYSTEM$GET_PRIVATELINK_CONFIG 関数を実行したときに取得した Snowflake サービスのエンドポイントを指定します。
例:
gcloud compute forwarding-rules create test-psc-rule \ --region=us-central1 \ --network=psc-vpc \ --address=psc-vip-1 \ --target-service-attachment=projects/us-central1-deployment1-c8cc/regions/us-central1/serviceAttachments/snowflake-us-central1-psc
出力:
Created [https://www.googleapis.com/compute/projects/mdlearning-293607/regions/us-central1/forwardingRules/test-psc-rule].
次のコマンドを使用して、転送ルールが 正常に 作成されたことを確認します。
gcloud compute forwarding-rules list --regions=<region>
条件:
region
は、Snowflakeアカウントが置かれているクラウドのリージョンです。たとえば、Snowflakeアカウントがeurope-west2
リージョンにある場合は、<リージョン>
をeurope-west2
に置き換えます。
Google Cloud リージョンの完全なリストとその形式については、 利用可能なリージョンのリストを見る をご参照ください。
DNS 設定を更新します。
SnowflakeへのリクエストはすべてPrivate Service Connectエンドポイントを経由してルーティングされる必要があり、 SYSTEM$GET_PRIVATELINK_CONFIG 関数によって返された URLs が、作成した VIP アドレスに解決されます (
<customer_vip_address>
)。SYSTEM$GET_PRIVATELINK_CONFIG の出力から取得する値は、プライベート接続でアクセスするSnowflakeの機能によって異なります。取り得る値の説明については、 戻り値 を参照してください。
regionless-snowsight-privatelink-url
とsnowsight-privatelink-url
の値により、プライベート接続を使用して Snowsight と Snowflake Marketplace にアクセスできることに注意してください。ただし、 URL リダイレクトを有効にする場合は、追加の構成があります。情報については、 Snowsightおよびプライベート接続 をご覧ください。注釈
DNS 構成の詳細な説明は、この手順の範囲外です。たとえば、 クラウド DNS を使用して、ご利用の環境にプライベート DNS ゾーンを統合することを選択できます。DNS の URLs を適切に構成および解決するために、社内の Google Cloud およびクラウドインフラ管理者にご相談ください。
Snowflakeに接続する¶
Snowflakeに接続する前に、 オプションで SnowCD (Snowflake接続性診断ツール)を活用して、SnowflakeおよびPrivate Service Connectとのネットワーク接続を評価することができます。詳細については、 SnowCD および SYSTEM$ALLOWLIST_PRIVATELINK をご参照ください。
プライベート接続アカウントで Snowflake に接続するには、 URL での接続 を参照してください。
Google Private Service Connectでの SSO の使用¶
Snowflake は Google Cloud Private Service Connect での SSO の使用をサポートしています。詳細については、次をご参照ください。
Google Cloud Private Service Connect でのクライアントリダイレクトの使用¶
Snowflakeは、 Google Cloud Private Service Connectでのクライアントリダイレクトの使用をサポートしています。
詳細については、 クライアント接続のリダイレクト をご参照ください。
プライベート接続での複製とTri-Secret Secureの使用¶
Snowflakeは、ターゲットアカウントで Tri-Secret Secure またはこの機能を有効にするかどうかに関係なく、ソースアカウントからターゲットアカウントへのデータの複製をサポートします。
一般アクセスの遮断 --- 推奨¶
Google Cloud Private Service Connect と Snowflake の接続をテストした後、 オプションで ネットワークポリシーを使用して Snowflake へのパブリックアクセスをブロックすることができます。詳細については、 ネットワークポリシーを使用したネットワークトラフィックの制御 をご参照ください。
組織の IP アドレス範囲 を使用してSnowflakeへのパブリックアクセスをブロックするように CIDR ブロック範囲を設定します。この範囲は、ご利用の仮想ネットワーク内から指定できます。
CIDR ブロック範囲が設定されると、 CIDR ブロック範囲内の IP アドレスのみがSnowflakeにアクセスできます。
ネットワークポリシーを使用してパブリックアクセスをブロックするには、
IPv4 ネットワークルールを作成するか、既存の IPv4 ネットワークルールを編集して、組織の CIDR ブロック範囲を追加します。
IPv4 ネットワークルールを使用するネットワークポリシーを作成または変更します。
アカウントのネットワークポリシーをアクティブにします。