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)を介してルーティングされます。

制限事項

アカウントのPrivate Service Connectを承認します。

このセクションでは、Private Service Connectを介してネットワークトラフィックを受け入れるようにSnowflakeを認証する方法について説明します。

  1. 認証する予定のプロジェクトにアクセスできる Google Cloud アカウントにサインインします。 Google Cloud CLI 環境を使用して以下を実行できます。

    gcloud auth login
    
    Copy

    現在のアカウントを確認したい場合は、以下を実行してください。

    gcloud auth list
    
    Copy
  2. Google Cloud CLI を使用して、以下のコマンドを実行してアクセストークンを作成します。

    gcloud auth print-access-token
    
    Copy

    このコマンドは Google Cloud アカウントのアクセストークンを生成します。デフォルトでは、トークンの有効期限は1時間です。トークンの有効期限が切れた後にPrivate Service Connectの承認、検証、または承認の取り消しが必要な場合は、この手順を繰り返して新しいトークンを生成する必要があります。

    Google Cloud プロジェクトのサービスアカウントを持っている場合は、代わりに 短命アクセストークン を生成することができますが、トークンの寿命がこれらの構成ステップを完了するのに十分な長さであることを確認してください。

  3. Snowflakeアカウント管理者 (つまり、 ACCOUNTADMIN システムロールを持つユーザー) として、 SYSTEM$AUTHORIZE_PRIVATELINK 関数を呼び出して、SnowflakeアカウントのPrivate Service Connectを承認(つまり、有効化)します。Private Service Connectのこの関数の構文は次のとおりです。

    SELECT SYSTEM$AUTHORIZE_PRIVATELINK ( '<gcp_project_id>' , '<access_token>' )
    
    Copy

    条件:

    • gcp_project_id は、エンドポイントを作成し、Snowflake にセキュアに接続する予定の Google Cloud プロジェクト ID です。

    • access_token は、この構成プロシージャの前のステップで生成したアクセストークンです。

    例:

    USE ROLE ACCOUNTADMIN;
    
    SELECT SYSTEM$AUTHORIZE_PRIVATELINK (
     'my-gcp-project-id',
     'ya29.a0AcM612zT4pJaXdYfwgY8aiMoDE9W_xkqQ20coFTB1TJcImKDPo...'
    );
    
    Copy
  4. SYSTEM$GET_PRIVATELINK 関数を呼び出して、Private Service Connect が Snowflake アカウントで正常に認証されたことを確認します。認証に使ったのと同じ引数を渡してください。例:

    SELECT SYSTEM$GET_PRIVATELINK(
     'my-gcp-project-id',
     'ya29.a0AcM612zT4pJaXdYfwgY8aiMoDE9W_xkqQ20coFTB1TJcImKDPo...'
    );
    
    Copy

    Snowflakeは、アカウントがPrivate Service Connectの認可を受けている場合、 Account is authorized for PrivateLink を返します。

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 管理者までご連絡ください。

  1. Snowflake アカウント管理者 (つまり、 ACCOUNTADMIN システムロールを持つユーザー) として、ワークシートを開き、 SYSTEM$GET_PRIVATELINK_CONFIG 関数を呼び出します。以降のステップのために出力を保存しておく必要があります。

    例:

    USE ROLE ACCOUNTADMIN;
    
    SELECT key, value FROM TABLE(flatten(input=>parse_json(system$get_privatelink_config())));
    
    Copy
  2. Google Cloud CLI を使用して、 gcloud library を最新バージョンに更新します。

    gcloud components update
    
    Copy
  3. 以下のコマンドを使用して Google Cloud に 認証します

    gcloud auth login
    
    Copy
  4. Google Cloud VPC で、転送ルールが存在するプロジェクト ID をセットします。

    gcloud config set project <project_id>
    
    Copy

    プロジェクト IDs のリストを取得するには、次のコマンドを実行します。

    gcloud projects list --sort-by=projectId
    
    Copy
  5. Google Cloud VPC で、仮想 IP アドレスを 作成します

    gcloud compute addresses create <customer_vip_name> \
    --subnet=<subnet_name> \
    --addresses=<customer_vip_address>
    --region=<region>
    
    Copy

    条件:

    • 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
    
    Copy

    出力:

    Created [https://www.googleapis.com/compute/v1/projects/docstest-123456/regions/us-central1/addresses/psc-vip-1].
    
  6. 転送ルール を作成して、サブネットを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>
    
    Copy

    条件:

    • 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
    
    Copy

    出力:

    Created [https://www.googleapis.com/compute/projects/mdlearning-293607/regions/us-central1/forwardingRules/test-psc-rule].
    
  7. 次のコマンドを使用して、転送ルールが 正常に 作成されたことを確認します。

    gcloud compute forwarding-rules list --regions=<region>
    
    Copy

    条件:

    • region は、Snowflakeアカウントが置かれているクラウドのリージョンです。たとえば、Snowflakeアカウントが europe-west2 リージョンにある場合は、 <リージョン>europe-west2 に置き換えます。

    Google Cloud リージョンの完全なリストとその形式については、 利用可能なリージョンのリストを見る をご参照ください。

  8. DNS 設定を更新します。

    SnowflakeへのリクエストはすべてPrivate Service Connectエンドポイントを経由してルーティングされる必要があり、 SYSTEM$GET_PRIVATELINK_CONFIG 関数によって返された URLs が、作成した VIP アドレスに解決されます (<customer_vip_address>)。

    SYSTEM$GET_PRIVATELINK_CONFIG の出力から取得する値は、プライベート接続でアクセスするSnowflakeの機能によって異なります。取り得る値の説明については、 戻り値 を参照してください。

    regionless-snowsight-privatelink-urlsnowsight-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 での接続 を参照してください。

承認の取り消し

SnowflakeアカウントのPrivate Service Connectを無効にする必要がある場合は、アカウントの認証に使用したのと同じ引数値を使用して、 SYSTEM$REVOKE_PRIVATELINK 関数を呼び出します。例:

SELECT SYSTEM$REVOKE_PRIVATELINK(
 'my-gcp-project-id',
 'ya29.a0AcM612zT4pJaXdYfwgY8aiMoDE9W_xkqQ20coFTB1TJcImKDPo...'
);
Copy

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 またはこの機能を有効にするかどうかに関係なく、ソースアカウントからターゲットアカウントへのデータの複製をサポートします。