
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
}'
);
次のようなメッセージが出力されている場合、正しく有効化されています。

内部ステージ 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 マネジメントコンソールでの作成手順
VPC コンソールを開く
左側のナビゲーションから「エンドポイント」を選択
「エンドポイントを作成」をクリック
以下の設定を行う
名前: 任意
タイプ: PrivateLink Ready パートナーのサービス
サービス名: 予め取得したprivatelink-vpce-id の値
VPC: CData Sync がインストールされたマシンを含むVPC
サブネット: CData Sync がインストールされたマシンを含むサブネット
セキュリティグループ: CData Sync がインストールされたマシンから443 ポートのインバウンドアクセスを許可しているセキュリティグループ
2. VPC エンドポイントの作成 (S3 内部ステージ用)
先程と同様の手順で次の設定を行ったVPC エンドポイントを作成します。
名前: 任意
タイプ: AWS のサービス
サービス: com.amazonaws.{リージョン名}.s3 (※タイプはInterface)
VPC: CData Sync がインストールされたマシンを含むVPC
サブネット: CData Sync がインストールされたマシンを含むサブネット
セキュリティグループ: CData Sync がインストールされたマシンから443 ポートのインバウンドアクセスを許可しているセキュリティグループ
ポリシー: フルアクセス

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

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

DNS (Route 53) の設定
PrivateLink を使用する場合、Snowflake への接続 URL を適切に解決するための DNS 設定が必要です。今回はRoute 53 でプライベートホストゾーンを作成し細かくルーティングを制御していきます。
1. プライベートホストゾーンの作成
Route 53 コンソールで「ホストゾーンの作成」を選択
以下を設定
ドメイン名: privatelink.snowflakecomputing.com
タイプ: プライベートホストゾーン
リージョン: CData Sync がインストールされたマシンを含むリージョン
VPC: CData Sync がインストールされたマシンを含むVPC

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

2. プライベートホストゾーンの作成 (S3 内部ステージ用)
S3 内部ステージ用に作成したVPC エンドポイントへもルーティングするようもう一つプライベートホストゾーンを作成します。
Route 53 コンソールで「ホストゾーンの作成」を選択
以下を設定
ドメイン名: privatelink-internal-stageの値
タイプ: プライベートホストゾーン
リージョン: CData Sync がインストールされたマシンを含むリージョン
VPC: CData Sync がインストールされたマシンを含むVPC

ホストゾーン作成後、先程の[VPC エンドポイント情報の取得]で取得したサブネットのIPv4 アドレスの値が設定されている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 接続を作成します。
CData Sync へログイン
画面左側の[接続]タブをクリック
[接続を追加]をクリック
Snowflake を検索しクリック

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

[作成およびテスト]をクリックし接続が成功することを確認
ネットワークポリシーを設定後に接続が成功していることからPrivateLink 経由での接続がうまくいっていることがわかります。
Snowflakeの接続が作成できたら後は通常通りジョブを作成し、任意のデータソースからSnowflake への連携を試してみます。予めSalesforce の接続も作成し、Salesforce -> Snowflake のジョブを作成します。

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

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

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