Connect AI: Connect Gateway を使って Snowflake へ AWS PrivateLink 経由で接続する

by 宇佐美格 | July 10, 2026

カバー画像

セキュリティ要件の厳しい企業では、データ連携の通信を一切パブリックインターネットに出したくないというニーズがあります。接続先が Snowflake のようなクラウド上でホストされるサービスであっても、同様です。社内のセキュリティポリシーやコンプライアンス要件により、通信をすべて閉域網内で完結させたいという要望は少なくありません。

こうしたニーズに応える手段として、Snowflake は AWS PrivateLink 経由でのプライベート接続に対応しています。この仕組みを使えば、Snowflake への接続経路を AWS のプライベートネットワーク内に閉じることができます。しかし Connect AI 自体はクラウド上で稼働するサービスであり、単体では VPC 内のプライベートネットワークに直接参加できません。

ここで役立つのが Connect Gateway 機能です。Connect Gateway を VPC 内に配置すれば、クラウド側の Connect AI とは安全なリバーストンネルで接続できます。これにより、VPC のファイアウォールでインバウンドポートを開放することなく、Connect AI と VPC 内の通信経路を確立できます。さらにこの VPC 内の Connect Gateway から Snowflake までを AWS PrivateLink でつなぎます。この二段構えにより、VPC 側のインバウンドポート開放を不要にしつつ、Connect Gateway から Snowflake までの通信は AWS のセキュアなプライベートネットワーク内に閉じられます。本記事では、この構成の具体的な設定手順を解説します。

構成の全体像

本記事で構築する構成の全体像は以下の通りです。

構成図

クラウド上の CData Connect AI は、VPC 内に Docker コンテナとしてデプロイされた Connect Gateway に対して接続します。この接続には Azure Relay テクノロジーを用いたリバーストンネルを使用します。このリバーストンネルは Connect Gateway 側から確立されます。そのため、VPC のファイアウォールでインバウンドポートを開放する必要はありません。

Connect Gateway は、VPC 内に作成された VPC エンドポイントと Route53 のプライベートホストゾーンによる DNS 解決を経由します。これにより、AWS PrivateLink 経由で Snowflake へアクセスします。このため、Connect Gateway から Snowflake へ向かうクエリ通信は、AWS のプライベートネットワーク内に閉じられます。一方、Connect AI から Connect Gateway までの区間はリバーストンネルによる暗号化された通信であり、VPC 側でインバウンドポートを開放する必要もありません。

設定の必須要件

  • Snowflake Business Critical 以上のエディション

  • Snowflake ACCOUNTADMIN ロールの権限

  • AWS 環境と VPC(Connect Gateway をデプロイする予定の VPC)

  • AWS VPC および Route53 の設定ができる権限

  • Docker または Kubernetes の実行環境

  • CData Connect AI のアカウント

Snowflake 側の設定

1. PrivateLink の有効化

Snowflake アカウント管理者として、以下のステップで PrivateLink を有効化します。

AWS認証情報の取得

まず、AWS CLI を使用してフェデレーショントークンを取得します。

aws sts get-federation-token --name your-name

このコマンドは、IAM ユーザーまたは AWS アカウントルートユーザーで実行する必要があります。

出力例です。

{
  "Credentials": {
    "AccessKeyId": "ASI...",
    "SecretAccessKey": "enw...",
    "SessionToken": "Fwo...",
    "Expiration": "2025-12-03T19:06:23+00:00"
  },
  "FederatedUser": {
    "FederatedUserId": "123456789012:your-name",
    "Arn": "arn:aws:sts::123456789012:federated-user/your-name"
  },
  "PackedPolicySize": 0
}

PrivateLinkの承認

Snowflake コンソールで以下のような SQL を実行します。SYSTEM$AUTHORIZE_PRIVATELINK の第 1 引数に先程出力された FederatedUserId、第 2 引数に出力された JSON 文字列を入力してください。

USE ROLE ACCOUNTADMIN;

SELECT SYSTEM$AUTHORIZE_PRIVATELINK(
    '123456789012',  -- 12桁のAWSアカウントID
    '{
      "Credentials": {
        "AccessKeyId": "ASI...",
        "SecretAccessKey": "enw...",
        "SessionToken": "Fwo...",
        "Expiration": "2025-12-03T19:06:23+00:00"
      },
      "FederatedUser": {
        "FederatedUserId": "123456789012:your-name",
        "Arn": "arn:aws:sts::123456789012:federated-user/your-name"
      },
      "PackedPolicySize": 0
    }'
);

次のようなメッセージが出力されている場合、正しく有効化されています。

Snowflake PrivateLink 承認完了メッセージ

2. VPC エンドポイント情報の取得

次に PrivateLink の設定情報を取得します。Snowflake コンソールで以下の SQL を実行してください。

SELECT SYSTEM$GET_PRIVATELINK_CONFIG();

出力例です。

{
  "privatelink-account-principal": "arn:aws:iam::123456789012:root",
  "privatelink-account-name": "xy12345.ap-northeast-1.privatelink",
  "privatelink-vpce-id": "com.amazonaws.vpce.ap-northeast-1.vpce-svc-xxxxxxxxxxxxxxxxx",
  "privatelink-account-url": "xy12345.ap-northeast-1.privatelink.snowflakecomputing.com",
  "privatelink-internal-stage": "sfc-ap-ne1-customer-stage.s3.ap-northeast-1.amazonaws.com",
  "snowsight-privatelink-url": "app.ap-northeast-1.privatelink.snowflakecomputing.com",
  "regionless-privatelink-account-url": "abc123-xyz456.privatelink.snowflakecomputing.com",
  "regionless-privatelink-ocsp-url": "ocsp.abc123-xyz456.privatelink.snowflakecomputing.com",
  ...
}

出力された情報の中で次の情報を後々の AWS での設定で使用するため記録しておいてください。

  • privatelink-vpce-id、VPC エンドポイント作成時に使用

  • privatelink-account-url、Connect AI の Snowflake 接続設定で使用

  • privatelink.snowflakecomputing.comで終わるすべての値(privatelink-account-urlを含む)、DNS 設定で使用

VPC エンドポイントの設定

1. VPC エンドポイントの作成

AWS 管理者として、Connect Gateway をデプロイする予定の VPC に VPC エンドポイントを作成します。

AWSマネジメントコンソールでの作成手順

  1. VPC コンソールを開く

  2. 左側のナビゲーションから「エンドポイント」を選択

  3. 「エンドポイントを作成」をクリック

  4. 以下の設定を行う

    • 名前、任意

    • タイプ、PrivateLink Ready パートナーのサービス

    • サービス名、あらかじめ取得したprivatelink-vpce-idの値

    • VPC、Connect Gateway をデプロイするマシンを含む VPC

    • サブネット、Connect Gateway をデプロイするマシンを含むサブネット

    • セキュリティグループ、Connect Gateway をデプロイするマシンから 443 ポートのインバウンドアクセスを許可しているセキュリティグループ

VPC エンドポイント作成画面

2. VPC エンドポイントの DNS 名の取得

1 で作成した VPC エンドポイントが「使用可能」状態になることを確認し、DNS 名を取得の上、控えておきます。

VPC エンドポイント DNS 名

DNS(Route 53)の設定

PrivateLink を使用する場合、Snowflake への接続 URL を適切に解決するための DNS 設定が必要です。今回は Route53 でプライベートホストゾーンを作成し、接続 URL を VPC エンドポイントへ向けます。

プライベートホストゾーンの作成

  1. Route53 コンソールで「ホストゾーンの作成」を選択

  2. 以下を設定

    • ドメイン名、privatelink.snowflakecomputing.com

    • タイプ、プライベートホストゾーン

    • リージョン、Connect Gateway をデプロイするマシンを含むリージョン

    • VPC、Connect Gateway をデプロイするマシンを含む VPC

    プライベートホストゾーン作成画面

  3. ホストゾーン作成後、CNAME レコードを作成します。対象は「VPC エンドポイント情報の取得」で取得した JSON 内にある、privatelink.snowflakecomputing.comで終わる値すべてです。privatelink-internal-stageなど S3 ドメインの値は対象外です。ルーティング先には、すべて「VPC エンドポイントの作成」で取得した VPC エンドポイントの DNS 名を設定します。

    プライベートホストゾーンレコード設定画面

Snowflake ネットワークポリシーの設定

Snowflake 側で VPC エンドポイントからの通信のみに制限するため、Snowflake コンソールで次のような SQL を実行します。このポリシーはアカウント全体に適用されるため、VPC エンドポイント経由の通信に加え、Snowflake コンソールを操作する自社端末の IP も許可しておきます。許可しないと、管理者自身が Snowflake コンソールへアクセスできなくなります。

CREATE OR REPLACE NETWORK RULE allow_ip_access
  MODE = INGRESS
  TYPE = IPV4
  VALUE_LIST = ('{コンソールへのアクセス元IPアドレス}');

CREATE OR REPLACE NETWORK RULE allow_vpceid_access
  MODE = INGRESS
  TYPE = AWSVPCEID
  VALUE_LIST = ('{VPC エンドポイントID}');

CREATE OR REPLACE NETWORK POLICY allow_vpceid_block_public_policy
  ALLOWED_NETWORK_RULE_LIST = ('allow_vpceid_access', 'allow_ip_access');

ALTER ACCOUNT SET NETWORK_POLICY = allow_vpceid_block_public_policy;

ネットワークポリシー設定

Connect Gateway のデプロイ

Snowflake 側と AWS 側のプライベート接続経路が整ったら、次は VPC 内に Connect Gateway をデプロイします。

1. Connect AI 管理画面での Gateway 登録

CData Connect AI の管理画面にログインし、以下の手順で Gateway を登録します。

  1. 「Sources」から「Add Connection」を選択し Snowflake を選択

    Snowflake接続追加画面

  2. 「Connect Gateway」タブを選択し、「Add」をクリックすると、設置場所を識別する名前を入力するダイアログが表示されます。任意のLocation Nameを入力して「Confirm」をクリック。

    Gateway登録ダイアログ

登録が完了すると、以下の 3 つの値が発行されます。これらは Connect Gateway を VPC 内で起動する際に使用するため、控えておいてください。

  • ACCOUNT_ID 組織固有のアカウント ID

  • GATEWAY_LOCATION_ID この Connect Gateway インスタンスの識別子

  • GATEWAY_API_KEY Connect Gateway が Connect AI と認証するための API キー

Gateway登録値表示画面

2. VPC 内での Gateway 起動

Connect Gateway をデプロイする予定の VPC 内のサブネットに、新しく EC2 インスタンスを起動します。AMI には Amazon Linux 2023 を使用します。

EC2 起動ウィザードを進め、「高度な詳細」セクションにある「ユーザーデータ」欄に、以下のようなシェルスクリプトを貼り付けます。このスクリプトは、インスタンス起動時に Docker のインストールと起動、そして Connect Gateway のコンテナ起動までを自動的に行います。

#!/bin/bash
dnf install -y docker
systemctl enable docker
systemctl start docker
docker run -d \
    --name my-onprem-gateway \
    --restart unless-stopped \
    -e GATEWAY_LOCATION_ID=<取得したlocation_id> \
    -e GATEWAY_API_KEY=<取得したapi_key> \
    -e ACCOUNT_ID=<取得したaccount_id> \
    connectaipublic.azurecr.io/connectgateway:latest

EC2ユーザーデータ設定画面

上記はあくまで一例です。<取得したlocation_id>などのプレースホルダーの値は、「1. Connect AI 管理画面での Gateway 登録」で控えた値に置き換えてください。具体的にはGATEWAY_LOCATION_IDGATEWAY_API_KEYACCOUNT_IDの各値です。

この EC2 インスタンスに割り当てるセキュリティグループでは、VPC エンドポイントへのアウトバウンド通信、および必要に応じて SSH などの管理アクセスのみを許可すれば十分です。Connect Gateway は VPC 側からリバーストンネルを確立して Connect AI 側へ自己登録するため、インバウンドポートを開放する必要はありません。

インスタンスが起動すると、ユーザーデータスクリプトが自動的に実行され、Connect Gateway のコンテナが起動します。Connect AI の管理画面で Gateway がオンライン状態になっていることを確認できれば、起動は成功です。

なおユーザーデータはインスタンス起動後にバックグラウンドで実行されます。そのためステータスチェック通過後も、Docker のインストールやコンテナ起動が終わるまで数分程度かかり、その間は Connect AI 側で Connect Gateway がオンライン表示されないことがあります。

CData Connect AI での Snowflake 接続の作成

1. Connect Gateway の登録確認

Connect AI 側の管理画面を開き、Gateway がオンライン状態として表示されていることを確認します。すぐに表示されない場合は、数分待ってから画面を再読み込みしてください。

Gatewayステータス確認画面

この Success は、リバーストンネル経由で VPC 内の Connect Gateway と Connect AI の間の接続が確立されていることを意味します。

2. Snowflake接続の作成

Connect Gateway の登録が確認できたら、続けて Connect AI の画面で Snowflake への接続を作成します。

  1. 「Connect AI 管理画面での Gateway 登録」で作成した Snowflake の接続を選択

  2. 「Basic Settings」タブの「Connection Type」で「Connect Gateway」を選択

  3. ドロップダウンから、先程登録したロケーション名を選択

  4. Snowflake の接続情報を入力します。今回は PrivateLink 経由での接続のため、URL(Account)には通常のアカウント URL を使いません。代わりに、Snowflake 側で取得したprivatelink-account-urlの値を入力します。

  5. 「Save & Test」をクリックし、接続が成功することを確認

入力後の画面は以下の通りです。

Snowflake接続設定画面

「Save & Test」をクリックすると、以下のように成功通知が表示されます。

Snowflake接続成功通知

VPC エンドポイント経由のみに制限した状態で接続テストが成功したことは、Connect Gateway が PrivateLink 経由で Snowflake へ到達できていることを意味します。

まとめ

CData Connect AI から Connect Gateway を経由し、AWS PrivateLink 経由で Snowflake へ接続する構成には二つの効果があります。Connect Gateway のリバーストンネルはインバウンドのファイアウォール設定を不要にします。AWS PrivateLink は Connect Gateway から Snowflake までの通信を AWS のプライベートネットワーク内に閉じます。この二段構えにより、セキュリティ要件の厳しい環境でも、クラウド上の Connect AI から Snowflake へ安全にデータ連携できます。

CData Connect AI は無償トライアルでお試しいただけます。CData Connect AI | あなたのビジネスを理解するエンタープライズAI からぜひお試しください。

参考リンク