SnowflakeとSplunk Enterprise版をSplunk DB Connectを使用して接続してみた

SnowflakeとSplunk Enterprise版をSplunk DB Connectを使用して接続してみた

2025.12.08

かわばたです。

今回は表題のとおり、SnowflakeとSplunk Enterprise版をSplunk DB Connectを使用して接続を試していきたいと思います。

【Splunk DB Connect公式ドキュメント】

https://help.splunk.com/en/splunk-cloud-platform/connect-relational-databases/deploy-and-use-splunk-db-connect/4.1/introduction/about-splunk-db-connect

【Snowflake用JDBCドライバー公式ドキュメント】

https://help.splunk.com/en/splunk-cloud-platform/connect-relational-databases/jdbc-driver-for-the-snowflake-database/4.0/introduction/about-the-jdbc-driver-for-snowflake

対象読者

  • SnowflakeとSplunk Enterpriseの接続に興味のある方

検証環境と事前準備

検証環境

  • Snowflake トライアルアカウント Enterprise版
  • Splunk Enterprise トライアルアカウント

【Splunk Enterprise版インストール手順】

https://dev.classmethod.jp/articles/splunk-enterprise-wsl2/

事前準備

ロールやSplunk用のユーザーを作成します。

-- SECURITYADMINロールに切り替え
USE ROLE SECURITYADMIN;

-- Splunk接続用のロールを作成
CREATE OR REPLACE ROLE splunk_role;

-- SYSADMINロールに切り替え
USE ROLE SYSADMIN;

-- Splunk専用の仮想ウェアハウスを作成
CREATE OR REPLACE warehouse SPLUNK_WH
  warehouse_size = 'SMALL' 
  auto_suspend = 5
  auto_resume = true
  initially_suspended = true
  comment = 'SPLUNK ONLY' ;

-- splunk_roleに、作成したウェアハウス(SPLUNK_WH)の使用権限と操作権限を付与
GRANT USAGE, OPERATE on warehouse SPLUNK_WH to role splunk_role;

-- 再びSECURITYADMINロールに切り替え
USE ROLE SECURITYADMIN;

-- Splunk接続用のサービスユーザーを作成
CREATE OR REPLACE USER SPLUNK_DBX_USER
   default_warehouse = splunk_wh
   default_role = splunk_role
   type = 'service' 
;

-- splunk_roleに、SNOWFLAKEデータベース(アカウントの使用状況などのメタデータ)へのアクセス権を付与
GRANT IMPORTED PRIVILEGES on database SNOWFLAKE to ROLE splunk_role;

-- SPLUNK_DBX_USERユーザーに、splunk_roleロールを割り当て
GRANT ROLE splunk_role TO USER splunk_dbx_user;

-- ネットワークポリシーを作成
-- 注意:'0.0.0.0/0' は全てのIPアドレスからのアクセスを許可します。
-- 本番環境では、SplunkサーバーのIPアドレスなど、特定のIPに限定することを強く推奨します。
CREATE OR REPLACE NETWORK POLICY splunk_network_policy
    ALLOWED_IP_LIST = ('0.0.0.0/0');

-- SPLUNK_DBX_USERユーザーに、作成したネットワークポリシーを適用
ALTER USER SPLUNK_DBX_USER SET NETWORK_POLICY = splunk_network_policy;

-- ⑫ SPLUNK_DBX_USERユーザーに対して、プログラムアクセス・トークン(PAT)を作成
-- このトークンは、パスワードの代わりとなるセキュアな認証情報として使用します。
-- 実行結果として表示されるトークン文字列は再表示できないため、必ず控えてください。
ALTER USER SPLUNK_DBX_USER
  ADD PROGRAMMATIC ACCESS TOKEN SPLUNK_TOKEN
  ROLE_RESTRICTION = splunk_role
  DAYS_TO_EXPIRY = 365;

Splunk DB Connectの仕組み

Splunk DB Connectは、Java Database Connectivity(JDBC)を介してSplunk Enterpriseとリレーショナルデータベースを接続するアドオンです。これにより、Splunk EnterpriseはMySQL、Microsoft SQL Server、Informix、DB2など、様々なデータベースに接続し、データを交換できるようになります。

Snowflakeも専用のドライバーが存在するのでこの仕組みを活用することができます。

2025-12-05_14h43_53

実際に試してみた

接続にあたって、Snowflakeコミュニティページを参考にしています。

【参考】
https://community.snowflake.com/s/article/Integrating-Snowflake-and-Splunk-with-DBConnect

Splunk DBConnectのインストール

下記URLよりSplunk DBConnectをインストールします。
【Splunk DBConnect】
https://splunkbase.splunk.com/app/2686

2025-12-08_09h49_45

Splunk Enterprise版の画面からAppの管理をクリックします。
2025-12-08_09h54_58

下記画面に遷移するので、ファイルからAppをインストールをクリックします。
2025-12-08_09h56_57

ポップアップした画面に先ほどインストールしたファイルをアップロードします。

2025-12-08_09h59_12

正常にインストールできました。

2025-12-08_09h59_32

Snowflake JDBCドライバをインストール

Snowflake JDBCドライバをインストールします。
【Snowflake JDBCドライバ】
https://splunkbase.splunk.com/app/6153

2025-12-08_10h03_03

Splunk DB Connectと同様の手順でインストールします。

2025-12-08_10h18_28

Javaのインストール

Splunk DB Connectのバージョン4.1.1は、Javaバージョン17以降を必要とします。

パッケージリストを更新します。

sudo apt update

OpenJDK 17 (JRE) をインストールします。

sudo apt install openjdk-17-jre

実行中のJavaのパスを表示します。

readlink -f $(which java)

/usr/lib/jvm/java-17-openjdk-amd64/bin/javaだった場合、Splunkに設定すべきパスは**/bin/javaを除いた/usr/lib/jvm/java-17-openjdk-amd64**となります。

Splunk DBConnectの画面で、設定>Settings>General>JRE Installation Path (JAVA_HOME)にJavaのパスを記載します。

2025-12-08_10h50_47

Splunk DBConnectの画面で、設定>Settings>Drivers でインストール済のドライバーを確認することができます。
Snowflakeドライバーについても問題なくインストールできていました。

2025-12-08_10h53_21

SnowflakeのIDと接続

Splunk DBConnectの画面で、設定>Databases>Identities>New Identity>Username & Passwordをクリックします。

2025-12-08_15h46_02

ユーザー名とトークンを入力します。
2025-12-08_15h44_28

Splunk DBConnectの画面で、設定>Databases>Connections>New Connectionをクリックします。

2025-12-08_11h17_48

下記内容を入力しました。

  • Connection名称
  • Identity
  • Connection Type
  • Timezone
  • JDBC URL
jdbc:snowflake://<account>.<region>.snowflakecomputing.com/?user=splunk_dbx_user&db=snowflake&role=splunk_role&application=SPLUNK&JDBC_QUERY_RESULT_FORMAT=JSON

JDBC URLの<account>.<region>の確認は下記コマンドを実行いただくと分かりやすいと思います。

SELECT SYSTEM$ALLOWLIST();

2025-12-08_15h43_31

Snowflakeログテーブルからデータを取得する

Snowflakeはすべてのログ情報をSnowflake.Account_Usageに保存します。このスキーマは、Splunk_DBX_Userアカウントに共有データベースとして表示されます。

Splunk DBConnectの画面からData Labタブを選択し、New Inputをクリックします。
2025-12-08_11h04_16

下記内容を入力しました。

  • Connection:先ほど作成したConnection
  • Catalog:データベースを選択(SNOWFLAKE)
  • Schema:スキーマを選択(ACCOUNT_USAGE)
  • テーブル:QUERY_HISTORY

2025-12-08_15h57_40

Splunk DB Connectは、バッチモードとRising Columnモードの2つの方法で設定できます。
バッチモードでは、基本的に「Select * from table」を実行することで、毎回テーブル全体が取得されます。Rising Columnモードでは、DB Connectが入力実行ごとに新しい行を追跡するために使用する列を指定できます。「Rising Value」として選択した列は、新しい行が挿入されるたびに値が自動的に増加する列である必要があります。

下記Rising Columnモードの記入例となります。
2025-12-08_16h13_00

上記入力完了後、次へをクリックすると入力プロパティの設定の画面となります。
ここでは名称と実行頻度をメインで入力していきます。
実行頻度は、秒数または有効なCRON式で指定します。
2025-12-08_16h08_56

上記完了しましたら、下記画面となり設定が完了します。
2025-12-08_16h09_11

indexを確認すると下記のようにログが取れていることが確認できました。

2025-12-08_16h42_16

キーペア認証について

下記コミュニティページを確認するとキーペア認証についてはネイティブにサポートされていないようでした。
Snowflakeは特定の回避策があると記事が添付されていましたので興味のある方はご確認ください。

【参考URL】
https://community.splunk.com/t5/All-Apps-and-Add-ons/Key-pair-authentication-with-DB-Connect/m-p/696897

最後に

プログラムアクセス・トークンのところで躓いたり、Javaのバージョン部分で躓いたりと接続まで時間がかかってしまいましたが無事に接続することができました。
キーペア認証がネイティブでサポートされていないので、基本はプログラムアクセス・トークンを利用する形かと思っています。
この記事が何かの参考になれば幸いです!

この記事をシェアする

FacebookHatena blogX

関連記事