Tableau Bridge で Snowflake に PrivateLink を使って接続してみた

2023.11.27

Snowflake は SaaS 製品ですが、各クラウドサービスとのプライベート接続にも対応しており、AWS であれば AWS PrivateLink を利用できます。Tableau Cloud と組みあわせて使用する場合、プライベートネットワークからアクセスするために Tableau Bridge を使用できます。Tableau Bridge を使用したデータソースのパブリッシュまで試してみましたので、記事にしました。

前提環境

以下の環境と構成で検証しています。

  • Snowflake:Business Critical エディション
    • ※PrivatLink の設定には Business Critical 以上のエディションが必要
  • Tableau Cloud
  • Tableau Bridge:2023.2.3
  • Tableau Desktop:2023.2.3
  • AWS リージョン:ap-northeast-1

構成

Tableau Bridge と Tableau Desktop は同じサーバー(EC2)にインストールしています。以降、このサーバーを Bridge サーバーとします。
また、Snowflake とのPrivateLink 設定に関して、今回は以下のドキュメント記載の「ステップ3: Amazon S3用 AWS VPC インターフェイスエンドポイントを作成する」については扱いません。
AWS VPC 環境の構成 | Snowflake DOCUMENTATION

こちらの手順は以下の記事にわかりやすくまとまっていますので詳細はこちらをご参照ください。本記事でも同様の設定を行いました。

接続の確認

設定完了後、Bridge サーバーにログインしそれぞれ以下の接続確認を行います。

ブラウザからアクセス

アクセス先は Snowflake のSYSTEM$GET_PRIVATELINK_CONFIG コマンドで取得できるprivatelink-account-url が使用できます。(XXXXXXX.ap-northeast-1.privatelink.snowflakecomputing.comの形式)。

下図の通りアクセスできました。

Snowflake にログイン後、以下のコマンドで接続されているクライアントの IP アドレスを確認できます。上記の場合、Bridge サーバーのプライベート IPv4 アドレスが返ってきます。

select current_ip_address();

Tableau Desktop からアクセス

こちらより Snowflake ODBC ドライバーをインストールし、プライベートリンク経由で接続します。

こちらも問題なく接続できました。

Tableau Bridge と Tableau Cloud の接続

Tableau Cloud は外部のネットワークになるため、直接privatelink-account-url にアクセスすることはできません。後述するネットワークポリシーで Snowflake への接続をプライベートネットワークのみからに制限しているような場合、Tableau Bridge をプライベートネットワーク内に構築することで、Snowflake のデータを Tableau Cloud でも利用できます。

Tableau Bridge のインストール

Tableau Bridge のサーバー要件やインストール手順などは、以下の記事をご参照ください。
本記事でも同様の設定を使用しています。

インストール後、Tableau Bridge が Tableau Cloud と接続できることを確認します。
※Tableau Bridge はアウトバウンド通信のみ行うため、インバウンドルールの設定は必要ありません。

Tableau Bridge

Tableau Cloud

データソースのパブリッシュ

Tableau Bridge をインストールしたサーバーに Tableau Desktop をインストールし、Tableau Desktop から、ここでは下図の通りサンプルデータ(TPCJ_SF1 CUSTOMER テーブル)をパブリッシュします。

ライブ接続を使用する以下の設定としました。

問題なく進むと下図のポップアップが表示されます。

Tableau Cloud から確認しても、ネットワークタイプが「プライベートネットワーク」となっており Bridge 経由であることがわかります。

手順としては、以上の通りでプライベートネットワークからのみアクセス可能な Snowflake 上のデータを Tableau Cloud から参照可能となります。

ネットワークポリシーの設定(パブリックアクセスのブロック)

AWS PrivateLink を使用した Snowflake へのプライベートな接続ができましたが、この状態では、Snowflake へのパブリックアクセスは有効なままとなっているため、手元の端末などから標準アカウント URL 経由でアクセス可能です。
URL での接続 | Snowflake DOCUMENTATION

ネットワークポリシーを設定することで、Snowflake へのパブリックアクセスをブロックできるので設定してみます。
パブリックアクセスのブロック --- オプション | Snowflake DOCUMENTATION

ネットワークポリシーは、アカウント・セキュリティ統合・ユーザーレベルで設定可能です。(複数レベルで設定した場合、ユーザー・セキュリティ統合・アカウントの順に優先されます。)
ネットワークポリシーの優先順位 | Snowflake DOCUMENTATION

ここでは、ユーザーを作成しユーザーレベルでのネットワークポリシーを設定してみます。Bridge サーバーから Snowflake にログインし、以下のコマンドを実行します。
接続を許可する CIDR ブロック範囲として、Bridge サーバーを構築したプライベートサブネットの CIDR 範囲を指定しました。

--ネットワークポリシーの作成
USE ROLE SECURITYADMIN;
CREATE NETWORK POLICY mypolicy ALLOWED_IP_LIST=('<接続を許可する特定の CIDR ブロック範囲>');
--作成したネットワークポリシーの確認
DESC NETWORK POLICY mypolicy;

--ネットワークポリシーを付与するユーザーを作成
CREATE USER user1 PASSWORD='<パスワード>' DEFAULT_ROLE = SYSADMIN ;
GRANT ROLE SYSADMIN TO USER user1;

--ユーザーにネットワークポリシーを付与
ALTER USER user1 SET NETWORK_POLICY = mypolicy;

--ネットワークポリシーが付与されたことを確認
SHOW PARAMETERS LIKE 'network_policy' IN USER user1;

この状態で、user1 で以下の通りそれぞれの環境からログインしてみます。

Bridge サーバー

こちらはネットワークポリシーで許可されたネットワークのため問題なくログインできます。

許可していないネットワーク

手元のネットワークなどネットワークポリシーで明示的に許可していないネットワークから接続すると以下の表示になります。

Tableau Cloud からは、Tableau Bridge 経由での接続となるため、引き続きデータを確認できます。

NAT Gateway を削除してみる

さいごに、構成にある NAT Gateway を削除してみます。

この場合、Bridge サーバーからの Snowflake への接続は、エンドポイント経由なので引き続き問題なく可能ですが、Tableau Bridge から Tableau Cloud へ接続できなくなるため、Bridge からの応答は失われます。

そのため、データも参照できなくなります。

さいごに

Tableau Bridge を使用してプライベートネットワークからのみアクセスを許可する Snowflake 上のデータを Tableau Cloud から参照してみました。
Tableau Server を利用している場合、Tableau Bridge は不要なケースが多いかと思いますが、Tableau Cloud を利用しておりセキュリティ要件上 Snowflake にはプライベートネットワークのみからしか接続できない場面もあるかと思いますので、そういった場合に本記事の内容が何かの参考になれば幸いです。