CData Sync からSnowflake へAWS PrivateLink 経由で接続する

by 宇佐美格 | December 12, 2025

Cover

CData Sync から Snowflake への接続を行う際、パブリックインターネット経由ではなく AWS PrivateLink を利用することで、よりセキュアな接続を実現できます。AWS PrivateLink を使用すると、データトラフィックが AWS のプライベートネットワーク内に閉じられ、外部への露出を最小限に抑えることができます。

本記事では、CData Sync がデプロイされている VPC から Snowflake へ AWS PrivateLink を経由して接続する手順を詳しく解説します。

また本記事では検証にCData Sync 25.3.9396.0 を使用しています。

設定の必須要件

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

  • Snowflake ACCOUNTADMIN ロールの権限

  • AWS 環境と VPC(CData Sync がデプロイされている VPC環境)

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

Snowflake 側の設定

1. PrivateLink の有効化

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

AWS 認証情報の取得

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

aws sts get-federation-token --name 

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

出力例:

{"Credentials":{"AccessKeyId":"ASI...","SecretAccessKey":"enw...","SessionToken":"Fwo...","Expiration":"2025-12-03T19:06:23\u002B00: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 VPC エンドポイント有効化

内部ステージ PrivateLink の有効化

またCData Sync ではSnowflake を同期先とする場合、内部ステージを利用します。この際Amazon S3 へのプライベート接続も設定する必要があります。そのために、Snowflake コンソールで以下の SQL を実行して内部ステージ PrivateLink の有効化します。

USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET ENABLE_INTERNAL_STAGES_PRIVATELINK = true;

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","snowpark-connect-privatelink-url":"*.snowpark.abc123.privatelink.snowflakecomputing.com","openflow-privatelink-url":"abc123-xyz456.openflow.abc123.privatelink.snowflakecomputing.com","app-service-privatelink-url":"*.abc123.privatelink.snowflake.app","regionless-snowsight-privatelink-url":"app-abc123-xyz456.privatelink.snowflakecomputing.com","privatelink-internal-stage":"sfc-ap-ne1-customer-stage.s3.ap-northeast-1.amazonaws.com","external-telemetry-privatelink-url":"abc123-xyz456.telemetry.abc123.privatelink.snowflakecomputing.com","privatelink-dashed-urls-for-duo":[],"snowsight-privatelink-url":"app.ap-northeast-1.privatelink.snowflakecomputing.com","regionless-privatelink-ocsp-url":"ocsp.abc123-xyz456.privatelink.snowflakecomputing.com","privatelink-account-url":"xy12345.ap-northeast-1.privatelink.snowflakecomputing.com","spcs-registry-privatelink-url":"abc123-xyz456.registry.privatelink.snowflakecomputing.com","regionless-privatelink-account-url":"abc123-xyz456.privatelink.snowflakecomputing.com","spcs-auth-privatelink-url":"sfc-endpoint-login.abc123.privatelink.snowflakecomputing.com","privatelink_ocsp-url":"ocsp.xy12345.ap-northeast-1.privatelink.snowflakecomputing.com"}

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

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

  • privatelink-account-url: CData Sync の接続設定で使用

  • privatelink-internal-stage: 内部ステージのプライベート接続設定で使用

  • *-privatelink*-url: 各種サービスの PrivateLink エンドポイント(DNS 設定で使用)

VPC エンドポイントの設定

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

AWS 管理者として、CData Sync がデプロイされている VPC に VPC エンドポイントを作成します。

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

  1. VPC コンソールを開く

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

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

  4. 以下の設定を行う

    • 名前: 任意

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

    • サービス名: 予め取得したprivatelink-vpce-id の値

    • VPC: CData Sync がインストールされたマシンを含むVPC

    • サブネット: CData Sync がインストールされたマシンを含むサブネット

    • セキュリティグループ: CData Sync がインストールされたマシンから443 ポートのインバウンドアクセスを許可しているセキュリティグループ

VPC エンドポイント作成
 

2. VPC エンドポイントの作成 (S3 内部ステージ用)

先程と同様の手順で次の設定を行ったVPC エンドポイントを作成します。

  • 名前: 任意

  • タイプ: AWS のサービス

  • サービス: com.amazonaws.{リージョン名}.s3 (※タイプはInterface)

  • VPC: CData Sync がインストールされたマシンを含むVPC

  • サブネット: CData Sync がインストールされたマシンを含むサブネット

  • セキュリティグループ: CData Sync がインストールされたマシンから443 ポートのインバウンドアクセスを許可しているセキュリティグループ

  • ポリシー: フルアクセス

VPC エンドポイント (S3 ステージファイル) 作成

3. VPC エンドポイントのDNS 名及びIPv4 アドレスの取得

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

VPC エンドポイントDNS

また2で作成した VPC エンドポイントが「使用可能」状態になることを確認し、サブネットのIPv4 アドレスを取得の上、控えておきます。

サブネットIP

DNS (Route 53) の設定

PrivateLink を使用する場合、Snowflake への接続 URL を適切に解決するための DNS 設定が必要です。今回はRoute 53 でプライベートホストゾーンを作成し細かくルーティングを制御していきます。

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

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

  2. 以下を設定

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

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

    • リージョン: CData Sync がインストールされたマシンを含むリージョン

    • VPC: CData Sync がインストールされたマシンを含むVPC

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

  3. ホストゾーン作成後、先程の[VPC エンドポイント情報の取得]で取得したJSON 内にある~~privatelink.snowflakecomputing.com の値すべてに関してCNAME レコードを作成。ルーティング先はすべて[1. VPC エンドポイントの作成] で取得したVPC エンドポイントのDNS 名を設定

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

2. プライベートホストゾーンの作成 (S3 内部ステージ用)

S3 内部ステージ用に作成したVPC エンドポイントへもルーティングするようもう一つプライベートホストゾーンを作成します。

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

  2. 以下を設定

    • ドメイン名: privatelink-internal-stageの値

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

    • リージョン: CData Sync がインストールされたマシンを含むリージョン

    • VPC: CData Sync がインストールされたマシンを含むVPC

      S3ステージ VPC エンドポイント用プライベートホストゾーン設定

  3. ホストゾーン作成後、先程の[VPC エンドポイント情報の取得]で取得したサブネットのIPv4 アドレスの値が設定されているA レコードを作成

    S3ステージ Aレコード作成

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

Snowflake 側でVPC エンドポイントからの通信のみに制限するためSnowflake コンソールで次のようなSQL を実行します。Snowflake コンソールへのアクセス経路も制限するため、自社の端末からアクセスするIPも許可するようにします。

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}', '{VPC エンドポイントID(S3 ステージ)}');

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;

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

CData Sync の設定

CData Sync のコンソール画面から新しい Snowflake 接続を作成します。

  1. CData Sync へログイン

  2. 画面左側の[接続]タブをクリック

  3. [接続を追加]をクリック

  4. Snowflake を検索しクリック

    Snowflake接続作成

  5. 各接続情報を入力。ここで重要なのはPrivateLink 経由での接続のため、URL に先程取得していたprivatelink-account-urlの値を入力します。

    Snowflake接続作成

  6. [作成およびテスト]をクリックし接続が成功することを確認

ネットワークポリシーを設定後に接続が成功していることからPrivateLink 経由での接続がうまくいっていることがわかります。

Snowflakeの接続が作成できたら後は通常通りジョブを作成し、任意のデータソースからSnowflake への連携を試してみます。予めSalesforce の接続も作成し、Salesforce -> Snowflake のジョブを作成します。

ジョブ作成画面

作成後、Account テーブルの連携タスクを作成し、ジョブを実行すると、ジョブ実行も問題なく動作することが確認できます。

タスク画面

同期先のログからもPrivateLink を経由してアクセスしていることが確認できます。

ログ画面

まとめ

CData Sync から Snowflake へ AWS PrivateLink 経由で接続することで、データトラフィックがインターネットに露出しない、セキュアなデータ連携環境を構築できます。初期設定には複数のステップが必要ですが、一度設定すれば安定した接続が維持されます。CData Sync は 30 日間の無償トライアルが可能ですので、ぜひお試しください! https://jp.cdata.com/sync/trial

参考リンク