Slide 1

Slide 1 text

Splunk Enterpriseで S3のデータを直接検索してみた! 株式会社リクルート セキュリティオペレーションセンター 嶋寺 克彰 1

Slide 2

Slide 2 text

自己紹介 2 ◆名前 嶋寺 克彰 Katsuaki SHIMADERA, CISSP ◆所属 リクルートSOC ◆Splunk歴 9年くらい Ver.5 あたりから でも何もわかりません・・ ◆好きなことなど けん玉(ギネス世界記録持ってます)、 天体写真、カラオケ、育児(娘+息子) ◆ひとこと LT or Kendama?

Slide 3

Slide 3 text

リクルートグループについて 3 創業 グループ 従業員数 51,373名 連結売上収益 34,164億円 連結営業利益 4,025億円 グループ 企業数 連結子会社 227社 関連会社8社 ビジョン・ミッ ション 「大学新聞広告社」としてスタート (2024年3月31日時点) (2023年4月1日~2024年3月31日) (2023年4月1日~2024年3月31日) (2024年3月31日時点) 1960年3月31日

Slide 4

Slide 4 text

リクルートについて 4 他、多数 R-SOC

Slide 5

Slide 5 text

Splunk活用事例の紹介 ■ リクルート執務環境におけるSplunkの活用例です 5 個人情報なし環境 個人情報あり環境 サーバログ NWログ 端末操作ログ サーバログ NWログ 端末操作ログ セキュリティ 監視 脅威 ハンティング 監査レポート 執務環境 ログ分析基盤 SOC業務 Advanced Security Unified “L”og Analysis シン: 新・真・神・進・深、などいろんな意味 ∀: 数学記号で「すべて」を表す

Slide 6

Slide 6 text

システム構成概念図 6 ポイント ・Splunk本体はAWS上 ・SVAで言うC3+C1構成 ・オンプレ・クラウドのログ ・ほぼ全てIaCによる構成管理 SHC シングルSH IDX-C License Deployment Monitor Console S3 SmartStore CodeCommit 各種クラウドサービス群 オンプレDC Forwarder群 ロジック開発 アラート・レポート ※SVA: Splunk Validated Architectures ※IaC: Infrastructure as Code 構成管理 ※概念図につき、実際の構成とは 多少異なる部分があります。 m5a系 i3en系

Slide 7

Slide 7 text

本編 7 キーワード ■ Federated Search for S3 ■ Splunk DB Connect Add-on ■ Amazon Athena

Slide 8

Slide 8 text

(おさらい)Federated Search for S3 とは ■ (1行で言うと)Splunk CloudからS3にあるデータをIndexingせずに検索で きる機能です。 ■ 「sdselect」 というSQLライクなSPLコマンドを使って検索することができ ます。 ■ DSU(Data Scan Unit)という単位でスキャンしたデータのサイズに応じて課 金されます。 ■ DSUはあらかじめ使用量を予測して購入しておく必要があります(前払い)。 ■ (2024/10時点で)Splunk Enterpriseでは使えません。 参考: Announcing Splunk Federated Search for Amazon S3 Now Generally Available in Splunk Cloud Platform | Splunk 8

Slide 9

Slide 9 text

Federated Search for S3 概念図 ■ FS-S3の概念図です。 9 AWS Cloud AWS Glue Data Catalog Amazon S3 Search Head | sdselect … FROM … WHERE … Federated Index IAM User CSV, JSON など

Slide 10

Slide 10 text

これってよく見ると ■ Athenaに似ているのでは? 10 AWS Cloud AWS Glue Data Catalog Amazon S3 Amazon Athena CSV, JSON など

Slide 11

Slide 11 text

Amazon Athenaとは ■ (1行で言うと)S3にあるデータをSQLで検索できるAWSのサービスです。 11 Amazon Athena は、オープンソースフレームワーク上に構築さ れたサーバーレスのインタラクティブな分析サービスで、オープ ンテーブルとファイル形式をサポートしています。Athena は、 ペタバイト規模のデータが存在する場所で分析するための簡素化 された柔軟な方法を提供します。Amazon Simple Storage Service (S3) データレイクと 25 以上のデータソース (オンプレ ミスデータソースや SQL または Python を使用した他のクラウ ドシステムを含む) からデータを分析したり、アプリケーション を構築したりできます。Athena は、オープンソースの Trino お よび Presto エンジンと Apache Spark フレームワーク上に構築 されており、プロビジョニングや設定は不要です。 参考:Amazon Athena(SQL を使用した S3 でのデータクエリ)| AWS Amazon Athena

Slide 12

Slide 12 text

構想 ■ こんなことができればよいのでは? 12 AWS Cloud AWS Glue Data Catalog Amazon S3 Search Head DB Connect Add-on Amazon Athena CSV, JSON など

Slide 13

Slide 13 text

DB Connect Add-onとは(1) ■ (1行で言うと)SplunkからRDB(など)に接続することができるAdd-onです。 ■ Splunk社作成の長年実績のある無償のAdd-onです。 ■ 内部ではJavaのプログラムが動作し、JDBCでDBに接続します。 ■ 以下のようなことができます。 – SPL内でSQLによる検索(dbxquery) → 今回はこちらを使用します。 – SQLによるルックアップ(dbxlookup) – DBからのInput – DBへのOutput(dbxoutput) 13 参考: ・Splunk DB Connect | Splunkbase ・How Splunk DB Connect works - Splunk Documentation

Slide 14

Slide 14 text

DB Connect Add-onとは(2) ■ Athenaは2024/10時点でサポート対象にないですが、サポート対象にないDBでも、 JDBC Driverがあれば使えるだろうと公式ドキュメントにも記載があります。 14 Supported Databases • AWS RDS Aurora • AWS RedShift • MemSQL • Oracle Database • MySQL • PostgreSQL • Snowflake • Microsoft SQL Server • IBM DB2 • InfluxDB • MongoDB • Informix • SAP SQL Anywhere • Sybase ASE • Sybase IQ • Hive • Google BigQuery 参考: Install database drivers - Splunk Documentation

Slide 15

Slide 15 text

JDBCとは ■ (1行で言うと)JavaからDBにアクセスするためのAPIです。 ■ Java Data Base Connectivityの略です。 ■ 各DBに対応したJDBC Driverがあれば統一的なインタフェースでアクセス可能です。 ■ Amazon Athena用のJDBCドライバも公開されています。 15 参考: JDBC で Amazon Athena に接続する - Amazon Athena Java Application JDBC API JDBC Driver Manager JDBC Driver for Oracle DB JDBC Driver for PostgreSQL JDBC Driver for MSSQL Oracle DB MSSQL PostgreSQL

Slide 16

Slide 16 text

アーキテクチャ概要 ■ あらためて情報を統合すると以下のようなアーキテクチャになります。 16 AWS Cloud AWS Glue Data Catalog Amazon S3 Search Head DB Connect Add-on Amazon Athena JDBC Driver for Athena | dbxquery connection=athena-test query="SELECT … FROM … WHERE …" IAM User IAM Role CSV, JSON など

Slide 17

Slide 17 text

DB Connect導入のワークフロー 1. 前提条件 – Amazon Athenaのセットアップが完了している – Splunk Enterpriseのセットアップが完了している(AWS上でなくても可) 2. JRE(Java Runtime Environment)のインストール 3. DB Connect Add-onのインストール(用途に応じてSearch HeadもしくはHeavy Forwarderにインストールする) 4. JDBC Driverのインストール(jarファイルをコピーする) 5. 接続・認証の設定 – DBによって異なりますが、基本的にはJDBCの接続パラメータを設定するこ とになります。 – 今回は、AthenaのJDBC Driverを利用します。 17 参考: ・Athena JDBC 3.x ドライバー - Amazon Athena

Slide 18

Slide 18 text

DB Connect設定例(1) ■ db_connection_types.conf: DB種別の設定 18 [athena] displayName = AWS Athena serviceClass = com.splunk.dbx2.DefaultDBX2JDBC jdbcUrlFormat = jdbc:athena://WorkGroup=primary;Region=ap-northeast-1;Database=athena_db; jdbcUrlSSLFormat = jdbc:athena://WorkGroup=primary;Region=ap-northeast-1;Database= athena_db; jdbcDriverClass = com.amazon.athena.jdbc.AthenaDriver supportedVersions = 3.0

Slide 19

Slide 19 text

DB Connect設定例(2) ■ db_connections.conf: 接続の設定(Web画面でも設定できます) ■ identities.conf: 認証情報(user/pass)の設定(Web画面でも設定できます) 19 [athena-database] disabled = 0 connection_properties = {} connection_type = athena customizedJdbcUrl = jdbc:athena://WorkGroup=athena-database;Region=ap-northeast-1;Database=glue- database;EnableResultReuseByAge=TRUE;CredentialsProvider=InstanceProfile identity = athena-instance-profile jdbcUseSSL = true ... [athena-instance-profile] disabled = 0 identity_type = normal password = xxxx username = nouser ↑EC2にInstance Profileを付けてアクセスできる。 IAM Userを使うことも可能。 ←Instance Profileを使う場合はここでの認証情報は使われない。IAM Userを指定することも可能。

Slide 20

Slide 20 text

S3にデータを置く方式の例 1. 直接置く – CSVやJSON等のファイルを直接S3に置けばAthenaで扱えます。 – AWSのログはJSONで出力されることが多くAthenaで扱いやすいです。(この 後、VPC Flow Logを使ったデモを行いたいと思います) – 参考:Amazon VPC フローログのテーブルを作成し、クエリする - Amazon Athena 2. SplunkのIngest Actions/Edge Processorを利用する – Splunkの機能で、Indexerにデータを送らずにS3に置くことができます。 – 参考: ■ Ingest Actions: Data Access When, Where and How You Need It | Splunk ■ Improving data ingestion using the Edge Processor solution - Splunk Documentation 3. その他のETLツールなどを利用する – AWS Glue, Kinesis Data Firehose, Fluentd, LogStash なども利用可能です。 20

Slide 21

Slide 21 text

Ingest Actionsとは ■ (1行で言うと)Indexing前にデータを加工したり送信先を変えたりする機能です。 21 参考:Ingest Actions for Splunk platform - Splunk Documentation

Slide 22

Slide 22 text

ダッシュボードデモ ■ SplunkにIndexingして「いない」データをダッシュボードで可視化してみます。 22 補足事項:上記の例では、ダッシュボードでdbxqueryコマンドを使うために、SPL safeguardの対象 から外しています。SPL safeguardは、リスクのあるSPLコマンドを意図せずダッシュボードで使わな いようにするための機能です(例えば、delete, collect, outputcsv などが対象)。 参考:SPL safeguards for risky commands - Splunk Documentation

Slide 23

Slide 23 text

SPLの例(1) ■ dbxqueryでタイムピッカーの日付時刻を使うTipsについて紹介します。 – SplunkのIndexのように日付時刻のフィールド(_time)が決まっているわけではないので一工夫必要です。 – ポイントはサブサーチとaddinfoコマンドです。 – なお、ダッシュボードだけで使うならトークンを使って参照する方法もあります。 23 | dbxquery connection="athena-test" [ | makeresults | addinfo ``` info_min_time, info_max_timeというタイムピッカーの値が入ったフィールドが追加される ``` | eval tz_offset=strftime(info_min_time, "%z") ``` パーティションのタイムゾーンがUTCなので補正する ``` | eval tz_offset=tz_offset*36 ``` 秒に変換する ``` | eval min_date_p=strftime(info_min_time -tz_offset, "%Y/%m/%d") | eval max_date_p=strftime(info_max_time -tz_offset-1, "%Y/%m/%d") ``` 翌日の日付にならないように-1 ``` | eval query="SELECT * FROM vpcflowlogs WHERE … ". ``` SQLを組み立てる(クォートに要注意) ``` " date>='".min_date_p."' AND date<='".max_date_p."'". ``` パーティションの絞り込み ``` " AND start>=".info_min_time." AND start<=".info_max_time ``` ログの日付時刻の絞り込み ``` | return query ] ``` サブサーチの結果が「query="SELECT ..."」という文字列に展開される ``` 補足事項: addinfoコマンドで、info_min_time/info_max_timeというフィールドが追加されます。値はタイムピッ カーで指定した検索範囲に対応するUnixtimeです。なお、SPL内で検索範囲を指定するearliest/latestという特殊な変 数がありますが、これらは代入はできますが参照はできないのでaddinfoを使いました。 参考:addinfo - Splunk Documentation

Slide 24

Slide 24 text

SPLの例(2) ■ 前ページのサブサーチの中身の結果の例 – サブサーチの中身の実行結果を見ると、SQLが生成されていることがわかります。 24

Slide 25

Slide 25 text

通常のIndexとの比較 DB Connect+Athena 通常のIndex 検索パフォーマンス 相対的に遅い - スケジュールサーチなどを活用す るのもあり 相対的に速い - TSIDX/Bloom Filterは強力 コスト 相対的に安い - Athenaの従量課金次第 相対的に高い 使い勝手 SQLの知識が必要 - SPLの中にSQLを記述するのでや やトリッキー - ダッシュボード化するのもあり 通常のSPL 25 DB Connect+AthenaはFS-S3と基本的には似た傾向があり、通常のIndexとはコストとパフォーマンスのト レードオフがあります。

Slide 26

Slide 26 text

DB Connect+Athenaの特徴の補足 26 ■ DB Connect Add-onは無償で、Athenaはデータスキャンサイズに基づく従量課金 ■ dbxqueryコマンドはサブサーチでも利用可能(sdselectはサブサーチでは使用不可) ■ dbxlookup, input/output などの機能も利用可能 ■ Splunk Enterpriseで利用可能(なお、Splunk Cloudでも利用可能)

Slide 27

Slide 27 text

参考: Splunk .conf24のセッションより ■ PLA1390B - Searching Simple Storage Service (S3) | Cost Effective Data LifeCycle with Splunk 27 Splunk .conf24 にて、Splunk EnterpriseでS3のデータを直接検索する手法について発表 がありました。 こちらは、独自のAppを開発して、S3の機能(S3 Select)を使って検索を行うという内 容でした。今回ご紹介した内容とは手法が違いますが、コンセプトは似ていると思いまし たので共有します。

Slide 28

Slide 28 text

Wrap up ■ Splunk Enterprise + DB Connect Add-on + Amazon Athena を組み合わせて、 Federated Search for S3 のようなことをやってみました。 ■ セットアップの手間は少しかかりますが、Splunk CloudでFederated Search for S3 を利用する場合も、Glue Data CatalogやIAM UserなどAWS側の準備が必要に なり、Splunk Cloud側にもFederated Indexの設定が必要になるので、手間はそ れほど変わらないと感じました。 ■ すでにS3をデータレイクとして利用しているケースなどで、パフォーマンスとコ ストのバランスを取りつつ、柔軟にデータ活用ができる手法になりうると期待し ています。 28

Slide 29

Slide 29 text

Splunk Ideas ■ すでに利用できてはいますが、DB ConnectでAthenaを公式にサポートしてほしい旨、 Splunk Ideasに投稿してみました。投票いただけると嬉しいです! ■ Splunk DB Connect: Support for Amazon Athena | Ideas – https://ideas.splunk.com/ideas/DATAMGMTID-I-1 – 次ページでQRコードを共有します 29

Slide 30

Slide 30 text

30 2024/10/2 4:39撮影 紫金山・アトラス彗星 2024/10/20 18:29撮影 ありがとうございました! https://ideas.splunk.com/ideas/DATAMGMTID-I-1