Splunk を Google SecOps と統合する
このドキュメントでは、Splunk を Google SecOps と統合する方法について説明します。
始める前に
Splunk を Google SecOps と統合する前に、デプロイ アーキテクチャに適した取り込み方法を決定し、環境がすべての必要な依存関係、ネットワーク パス、アクセス権限を満たしていることを確認します。
Google SecOps は、次の 2 つの取り込み方法をサポートしています。
プッシュベースの取り込み: Splunk はアラートをローカルで評価し、TA-Siemplify アドオンとアラート トリガー アクションを使用して、イベントを Google SecOps に直接プッシュします。Google SecOps でコネクタの構成は必要ありません。
pull ベースの取り込み: Google SecOps コネクタは、Splunk REST API エンドポイントを定期的にクエリして、アラート、SPL 検索結果、Splunk ES Notable Events を取得します。
push ベースの取り込み
push ベースの取り込みでは、Splunk から Google SecOps への直接アウトバウンド HTTPS 接続と、Splunk 検索ヘッドでの特定のアドオン構成が必要です。
プッシュベースの取り込みを構成する前に、次の要件を確認してください。
Splunkbase から TA-Siemplify パッケージをダウンロードして、すべてのターゲット Splunk 検索ヘッドにインストールします。分散環境では、Splunk Deployer または Deployment Server を使用して、Search Head Cluster 全体にアドオンをデプロイします。
モジュラー アラートとロギングをサポートするために、互換性のあるバージョンの Splunk 共通情報モデル(Splunk_SA_CIM)が検索ヘッドにインストールされていることを確認します。
Splunk 検索ヘッドが、Google SecOps インスタンスの URL への HTTPS(TCP ポート 443)経由のアウトバウンド ネットワーク アクセス権を持っていることを確認します。
API キーを生成する管理者権限を持つ Google SecOps のアカウントがあることを確認します([設定] > [詳細設定] > [API])。生成された API キーに、アラートとケースの作成権限を持つロールが割り当てられていることを確認します。
変換検索(
stats、chart、timechartを使用した検索など)から未加工のイベントを取り込む場合は、Search Heads のsavedsearches.confでdispatch.buckets = 1が構成されていることを確認してください。
pull ベースの取り込み
プルベースの取り込み、プレイブック アクション、同期ジョブでは、Google SecOps(またはリモート エージェント)が Splunk へのインバウンド管理接続を確立する必要があります。
プル コネクタ、アクション、ジョブを構成する前に、次の要件を確認してください。
ネットワーク接続: Google SecOps(またはリモート エージェント)から Splunk 管理 REST API ポート(デフォルト:
8089/TCP)へのネットワークの可視性を確認します。カスタム CA 証明書: Splunk インスタンスがプライベート CA 証明書または内部 CA 証明書を使用している場合は、Google SecOps で Splunk インテグレーション バージョン 26.0 以降を実行していることを確認します。
認証: 有効な Splunk ユーザー認証情報(ユーザー名とパスワード)を取得するか、Splunk ベアラー トークンを生成します(Splunk プラットフォームでこの認証方法を有効にするには、トークン認証が必要です)。
Splunk ロールの権限: 認証を行う Splunk アカウントに、次の権限を持つロールがあることを確認します。
searchschedule_searchedit_tcp(イベントを送信アクションを使用する場合にのみ必須)edit_notable_events(Update Notable Events アクションまたは Splunk ES 同期ジョブを使用する場合にのみ必須)
データストアとルックアップの権限: 認証アカウントが、選択したコンポーネントに関連する Splunk データストアにアクセスできることを確認します。
- Splunk プルコネクタ:
siemplify_alertsルックアップ テーブルに対する読み取り権限(プルモードでTA-Siemplifyがインストールおよび構成されたときに設定されます)。 - Splunk クエリ コネクタとアクション:
- ターゲット イベント インデックスに対する検索権限(
TA-Siemplifyは不要)。 - Submit Event アクションを使用する場合は、ターゲット インデックスに対する書き込み権限と入力権限。
- ターゲット イベント インデックスに対する検索権限(
- Splunk ES - 注目すべきイベントのコネクタとジョブ: アクティブな Splunk Enterprise Security(ES)のインストール、
notableインデックスに対する読み取り権限、get_notable_indexマクロへのアクセス権(TA-Siemplifyは不要)。
- Splunk プルコネクタ:
統合のパラメータ
次のパラメータを使用して統合を構成します。
| パラメータの表示名 | 種類 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| サーバー アドレス | 文字列 | {SCHEMA}://{IP}:{PORT} | ○ | Splunk サーバーのアドレス。 |
| ユーザー名 | 文字列 | なし | × | Splunk への接続に使用するべきユーザーのメールアドレス。 |
| パスワード | パスワード | なし | × | 対応するユーザーのパスワード。 |
| API トークン | パスワード | なし | × | Splunk API トークン。このフィールドが空でない場合、API トークンは他の認証方法よりも優先されます。 |
| SSL を確認する | チェックボックス | オフ | × | Splunk 接続で SSL の検証が必要な場合は、このチェックボックスをオンにします(デフォルトではオフになっています)。 |
| CA 証明書ファイル | 文字列 | なし | いいえ | Base64 でエンコードされた CA 証明書ファイル。 |
Google SecOps で統合を構成する手順については、統合を構成するをご覧ください。
必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できるようになります。複数のインスタンスの構成とサポートの詳細については、複数のインスタンスのサポートをご覧ください。
操作
アクションの詳細については、 デスクから保留中のアクションに対応すると手動による対策を実行するをご覧ください。
ホストイベントを取得する
Splunk でホストに関連するイベントを取得します。
パラメータ
| パラメータの表示名 | 種類 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| ホストあたりのイベントの制限 | Integer | 100 | ○ | ホストごとに返されるイベントの数を指定します。 |
| 結果の取得元 | 文字列 | -24 時間 | ○ | イベントの開始時刻を指定します。 |
| 結果の送信先 | 文字列 | 参加する | ○ | イベントの終了時刻を指定します。 |
| 結果フィールド | CSV | なし | × | 返す必要があるフィールドのカンマ区切りのリストを指定します。 |
| インデックス | 文字列 | なし | × | ホストに関連するイベントを検索するときに使用するインデックスを指定します。何も指定しない場合、アクションはインデックスを使用しません。 |
| ホストキー | 文字列 | ホスト | × | ホストイベントに関する情報を取得するために使用するキーを指定します。デフォルト: host。 |
実行
このアクションはホスト名エンティティに対して実行されます。
アクションの結果
スクリプトの結果
| スクリプトの結果名 | 値のオプション | 例 |
|---|---|---|
| success | True/False | success:False |
JSON の結果
[{
"app": "SA-AccessProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087674",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:58.404 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "0",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".404",
"_time": "2021-02-02T04:01:58.404+02:00"
},
{
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087731",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms",
"_serial": "1",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "splunkd_access",
"_subsecond": ".172",
"_time": "2021-02-02T04:01:58.172+02:00"
},
{
"app": "SA-EndpointProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087653",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:57.804 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "2",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".804",
"_time": "2021-02-02T04:01:57.804+02:00"
}]
ケースウォール
| 結果のタイプ | 値 / 説明 | 種類 |
|---|---|---|
| 出力メッセージ * | アクションが失敗したり、ハンドブックの実行を停止したりすることはありません。 成功し、結果が利用可能な場合: 「Splunk で次のホストのイベントが正常に返されました: \n {0}」.format(entity.identifier) 成功し、一部の結果が利用できない場合: 「Splunk で次のホストのイベントが見つかりませんでした:\n {0}」.format(entity.identifier) 成功したが、すべての結果が利用できない場合: 「Splunk で指定されたホストのイベントが見つかりませんでした」 アクションが失敗し、ハンドブックの実行が停止します。 認証情報が誤っている、サーバーへの接続がないなどの致命的なエラーの場合: 「アクション「ホスト イベントを取得」の実行エラー。理由: {0}」.format(error.Stacktrace) 400 の場合: 「アクション「ホストイベントの取得」の実行エラー。理由: {0}」.format(messages/text) |
全般 |
| Case Wall テーブル | 名前: {Entity.identifier} イベント 列: 結果に基づきます。 |
Ping
[Google Security Operations Marketplace] タブの統合構成ページで提供されるパラメータを使用して、Splunk への接続をテストします。
パラメータ
なし
実行
このアクションはエンティティに対しては実行されず、必須入力パラメータもありません。
アクションの結果
スクリプトの結果
| スクリプトの結果名 | 値のオプション | 例 |
|---|---|---|
| is_success | True/False | is_success:False |
ケースウォール
| 結果のタイプ | 値 / 説明 | 種類 |
|---|---|---|
| 出力メッセージ * | アクションが失敗したり、ハンドブックの実行が停止したりすることはありません。 アクションが失敗し、ハンドブックの実行が停止します: |
全般 |
Splunk Csv Viewer
パラメータ
| パラメータ | 種類 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| 結果 | 文字列 | なし | ○ | 未加工の結果。 |
実行
このアクションはすべてのエンティティに対して実行されます。
アクションの結果
スクリプトの結果
| スクリプトの結果名 | 値のオプション | 例 |
|---|---|---|
| is_succeed | True/False | is_succeed:False |
SplunkQuery
Splunk でクエリを実行します。
パラメータ
| パラメータの表示名 | 種類 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| 検索モード | DDL | スマート 有効な値:
|
× | 検索を実行するモードを指定します。 |
| クエリ | 文字列 | ○ | 実行する必要のあるクエリを指定します。例: index="_internal" | |
| 結果の数の上限 | Integer | 100 | × | 返す結果の数を指定します。 |
| 付近の店舗の結果 | 文字列 | -24 時間 | × | クエリの開始時刻を指定します。デフォルト: -24h |
| 結果を | 文字列 | 今 | × | クエリの終了時刻を指定します。デフォルト: now。 |
| 結果フィールド | CSV | × | 返す必要があるフィールドのカンマ区切りのリストを指定します。 |
実行
このアクションはエンティティに対しては実行されません。
アクションの結果
スクリプトの結果
| スクリプトの結果名 | 値のオプション | 例 |
|---|---|---|
| is_succeed | True/False | is_succeed:False |
JSON の結果
[{
"app": "SA-AccessProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087674",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:58.404 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "0",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".404",
"_time": "2021-02-02T04:01:58.404+02:00"
},
{
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087731",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms",
"_serial": "1",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "splunkd_access",
"_subsecond": ".172",
"_time": "2021-02-02T04:01:58.172+02:00"
},
{
"app": "SA-EndpointProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087653",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:57.804 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "2",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".804",
"_time": "2021-02-02T04:01:57.804+02:00"
}]
Case Wall
| 結果のタイプ | 値 / 説明 | 種類 |
|---|---|---|
| 出力メッセージ * | アクションが失敗したり、ハンドブックの実行を停止したりすることはありません。 成功し、結果が利用可能な場合: 「Splunk でクエリ「{0}」の結果が正常に返されました」.format(query) 成功したが結果がない場合: 「Splunk でクエリ「{0}」の結果が見つかりませんでした」.format(query) 非同期メッセージ: 「クエリ {0} の実行が完了するのを待機しています。」.format(クエリ名) アクションが失敗し、ハンドブックの実行が停止します。 認証情報が誤っている、サーバーへの接続がないなどの致命的なエラーの場合、その他: 「アクション「SplunkQuery」の実行エラー。理由: {0}」.format(error.Stacktrace) 400 の場合: 「アクション「SplunkQuery」の実行中にエラーが発生しました。理由: {0}」.format(messages/text) |
全般 |
| Case Wall テーブル | 名前: Splunk クエリ結果 列 - 結果に基づきます。 |
全般 |
イベントを送信
Splunk にイベントを送信します。
パラメータ
| パラメータの表示名 | 種類 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| 索引 | 文字列 | main | ○ | イベントを作成するインデックスを指定します。 |
| イベント | 文字列 | なし | ○ | 送信する必要がある未加工のイベントを指定します。 |
| ホスト | 文字列 | なし | × | イベントに関連するホストを指定します。 |
| ソース | 文字列 | なし | × | イベントのソースを指定します。例: www. |
| Sourcetype | 文字列 | なし | × | イベントのソースタイプを指定します。例: web_event |
実行
このアクションはエンティティに対しては実行されません。
アクションの結果
スクリプトの結果
| スクリプトの結果名 | 値のオプション | 例 |
|---|---|---|
| success | True/False | success:False |
JSON の結果
{
"index": "default",
"bytes": 70,
"host": "dogo",
"source": "www",
"sourcetype": "web_event"
}
Case Wall
| 結果のタイプ | 値 / 説明 | 種類 |
|---|---|---|
| 出力メッセージ * | アクションが失敗したり、ハンドブックの実行を停止したりすることはありません。 成功した場合: 「Splunk のインデックス「{0}」に新しいイベントが正常に追加されました。」.format(index) アクションが失敗し、ハンドブックの実行が停止します。 認証情報が誤っている、サーバーへの接続がないなどの致命的なエラーの場合: 「アクション「イベントの送信」の実行エラー。理由: {0}」.format(error.Stacktrace) 400 の場合: 「アクション「イベントを送信」の実行エラー。理由: {0}」.format(messages/text) |
全般 |
特筆すべき出来事を更新する
Splunk ES で注目すべきイベントを更新します。
パラメータ
| パラメータの表示名 | 種類 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| 注目すべきイベント ID | CSV | なし | ○ | 注目すべきイベントの ID を指定します。例: 1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7@@notable@@cb87390ae72763679d3f6f8f097ebe2b,1D234D5B-1531-2D2B-BB94-41C439BE12B7@@notable@@cb87390ae72763679d3f6f8f097ebe2b |
| ステータス | DDL | 1 つ選択 値は次のいずれかです。 1 つ選択 未割り当て 新規 処理中 保留中 解決済み クローズ |
○ | 注目すべきイベントの新しいステータスを指定します。 |
| 緊急度 | DDL | 1 つ選択 値は次のいずれかです。 1 つ選択 重大 高 中 低 情報 |
○ | 注目すべきイベントの新しい緊急度を指定します。 |
| 新しいオーナー | 文字列 | なし | ○ | 注目すべきイベントの新しい所有者を指定します。 |
| コメント | 文字列 | なし | ○ | 注目すべきイベントのコメントを指定します。 |
実行
このアクションはエンティティに対しては実行されません。
アクションの結果
スクリプトの結果
| スクリプトの結果名 | 値のオプション | 例 |
|---|---|---|
| is_success | True/False | is_success:False |
ケースウォール
| 結果のタイプ | 値 / 説明 | 種類 |
|---|---|---|
| 出力メッセージ * | アクションが失敗したり、ハンドブックの実行を停止したりすることはありません。 成功し、データが利用可能な場合(is_success=true) 「Splunk で {0} 件の注目すべきイベントを更新しました。」と出力します。format(count(notable_events)) 更新に失敗した場合(status_code=400、is_success=false): 「アクションは重要なイベントを更新できませんでした」を印刷します。Reason:{0}".format(string_from_response) アクションが失敗し、ハンドブックの実行が停止します。 認証情報が誤っている、サーバーへの接続がないなど、致命的なエラーの場合: 「アクション「注目すべきイベントの更新」の実行エラー」を出力します。理由: {0}」.format(error.Stacktrace) |
全般 |
エンティティ クエリを実行する
Splunk でエンティティ クエリを実行します。
アクション パラメータを操作するにはどうすればよいですか?
このアクションにより、エンティティに関連する情報を簡単に取得できます。たとえば、複雑なクエリを作成しなくても、指定されたハッシュの影響を受けるエンドポイントのイベント数を確認したいというユースケースを解決できます。Splunk でこの問題を解決するには、次のクエリを準備する必要があります。index="main" | where
(device_ip="10.0.0.1" or device_ip="10.12.12.12") and (hash="bad_hash_1" or
hash="bad_hash_2") 「Execute Entity Query」アクションを使用して同じクエリを作成するには、次のようにアクション パラメータを入力する必要があります。
| クエリ | index="main" |
|---|---|
| IP エンティティ キー | device_ip |
| ファイル ハッシュ エンティティ キー | ハッシュ |
| クロス エンティティ オペレーター | AND |
その他のフィールドはすべて空欄のままにします。
ユースケースが、指定されたハッシュの影響を受けたエンドポイントの数を確認することである場合、「Execute Entity Query」の構成は次のようになります。
| クエリ | index="main" |
|---|---|
| ファイル ハッシュ エンティティ キー | ハッシュ |
この状況では、「Cross Entity Operator」は影響しません。複数の「Entity Keys」が指定されている場合にのみ、クエリに影響するためです。
パラメータ
| パラメータの表示名 | 種類 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| 検索モード | DDL | スマート 有効な値:
|
× | 検索を実行するモードを指定します。 |
| クエリ | 文字列 | ○ | 「Where」句なしで実行する必要があるクエリを指定します。例: index="_internal" | |
| 結果の数の上限 | Integer | 100 | × | 返す結果の数を指定します。注: このパラメータは、指定されたクエリに「head」というキーワードを追加します。デフォルトは 100 です。 |
| 付近の店舗の結果 | 文字列 | -24 時間 | × | クエリの開始時刻を指定します。デフォルト: -24h |
| 結果を | 文字列 | 今 | × | クエリの終了時刻を指定します。デフォルト: now。 |
| 結果フィールド | CSV | なし | × | 返す必要があるフィールドのカンマ区切りのリストを指定します。 |
| IP エンティティ キー | 文字列 | なし | × | IP エンティティで使用するキーを指定します。詳しくは、アクションのドキュメントをご覧ください。 |
| Hostname Entity Key | 文字列 | なし | × | . を準備するときに、Hostname エンティティで使用するキーを指定します。詳しくは、アクションのドキュメントをご覧ください。 |
| ファイル ハッシュ エンティティ キー | 文字列 | なし | × | ファイル ハッシュ エンティティで使用するキーを指定します。詳しくは、アクションのドキュメントをご覧ください。 |
| ユーザー エンティティキー | 文字列 | なし | × | User エンティティで使用するキーを指定します。詳しくは、アクションのドキュメントをご覧ください。 |
| URL エンティティ キー | 文字列 | なし | × | URL エンティティで使用するキーを指定します。詳しくは、アクションのドキュメントをご覧ください。 |
| メールアドレス エンティティ キー | 文字列 | なし | × | メールアドレス エンティティで使用するキーを指定します。詳しくは、アクションのドキュメントをご覧ください。 |
| エンティティが不足している場合は停止 | チェックボックス | オン | ○ | 有効にすると、指定された「.. エンティティキー」のすべてのエンティティ タイプが使用可能になるまで、アクションの実行は開始されません。例: 「IP エンティティ キー」と「ファイルハッシュ エンティティ キー」が指定されているが、スコープにファイルハッシュがない場合、このパラメータが有効になっていると、アクションはクエリを実行しません。 |
| クロス エンティティ オペレーター | DDL | または 有効な値: または AND |
○ | 異なるエンティティ タイプ間で使用する論理演算子を指定します。 |
実行
このアクションは次のエンティティに対して実行されます。
- IP アドレス
- ホスト
- ユーザー
- ハッシュ
- URL
アクションの結果
スクリプトの結果
| スクリプトの結果名 | 値のオプション | 例 |
|---|---|---|
| is_succeed | True/False | is_succeed:False |
JSON の結果
[{
"app": "SA-AccessProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087674",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:58.404 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "0",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".404",
"_time": "2021-02-02T04:01:58.404+02:00"
},
{
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087731",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms",
"_serial": "1",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "splunkd_access",
"_subsecond": ".172",
"_time": "2021-02-02T04:01:58.172+02:00"
},
{
"app": "SA-EndpointProtection",
"_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
"_cd": "425:9087653",
"_indextime": "1612231318",
"_kv": "1",
"_raw": "02-02-2021 04:01:57.804 +0200 INFO SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
"_serial": "2",
"_si": [
"splunk",
"_internal"
],
"_sourcetype": "scheduler",
"_subsecond": ".804",
"_time": "2021-02-02T04:01:57.804+02:00"
}]
Case Wall
| 結果のタイプ | 値 / 説明 | 種類 |
|---|---|---|
| 出力メッセージ * | アクションが失敗したり、ハンドブックの実行を停止したりすることはありません。 成功し、結果が利用可能な場合: 「Splunk でクエリ「{0}」の結果が正常に返されました」.format(query) 成功したが結果がない場合: 「Splunk でクエリ「{0}」の結果が見つかりませんでした」.format(query) 非同期メッセージ: 「クエリ {0} の実行が完了するのを待機しています。」.format(クエリ名) [Stop If Not Enough Entities] が有効で、指定された [Entity Keys] に十分なエンティティ タイプがない場合(is_success=false): 指定された [.. Entity Keys] に十分なエンティティ タイプが指定されていないため、アクションでクエリを作成できませんでした。「Stop If Not Enough Entities」パラメータを無効にするか、指定した「.. Entity Key」ごとに少なくとも 1 つのエンティティを指定してください。 アクションが失敗し、ハンドブックの実行が停止します。 認証情報が誤っている、サーバーへの接続がないなどの致命的なエラーの場合: 「アクション「エンティティ クエリの実行」の実行エラー。理由: {0}」.format(error.Stacktrace) 400 の場合: 「アクション「エンティティ クエリを実行」の実行中にエラーが発生しました。理由: {0}」.format(messages/text) |
全般 |
| Case Wall テーブル | 名前: Splunk クエリ結果 列: 結果に基づきます。 |
全般 |
コネクタ
Google SecOps でコネクタを構成する方法については、データを取り込む(コネクタ)をご覧ください。
Splunk クエリ コネクタ
コネクタは、動的リスト(whitelist)の一部であるクエリを送信し、結果を取得して、取得した結果に基づいてケースを作成します。
ログを表示するサンプル Splunk クエリ
クエリは動的リスト(
whitelist)ルールとして入力する必要があります。複数のフィルタを含む検索クエリでは、検索フィルタの区切り文字としてスペースを使用する必要があります(例:
index=cim_modactions sourcetype=modular_alerts:risk)。同じルールにスペース区切りの検索フィルタを複数入力するのではなく、複数の動的リスト(
whitelist)ルールを使用すると、追加されたルールごとに個別の検索が実行されます。index=cim_modactionssourcetype=modular_alerts:send_data_to_siemplifyindex=_internal sourcetype=splunkdcomponent=sendmodalertaction=send_data_to_siemplifyindex=_internal source=/opt/splunk/var/log/splunk/send_data_to_siemplify_modalert.log
コネクタ パラメータ
コネクタを構成するには、次のパラメータを使用します。
| パラメータ | |
|---|---|
Product Field Name |
必須
ソース フィールド名を入力して デフォルト値は |
Event Field Name |
必須
ソース フィールド名を入力して デフォルト値は |
API Root |
必須
Splunk インスタンスの API ルート。 デフォルト値は |
Username |
必須
Splunk アカウントのユーザー名。 |
Password |
必須
Splunk アカウントのパスワード。 |
API Token |
省略可
Splunk API トークン。 このフィールドに値がある場合、API トークンは他の認証方法よりも優先されます。 |
Verify SSL |
必須
オンにすると、CrowdStrike サーバーへの接続用の SSL 証明書が有効であることが確認されます。 デフォルトではオフになっています。 |
Environment Field Name |
省略可
環境名が保存されるフィールドの名前。 |
Rule Generator Field |
必須
ルール ジェネレータ値をマッピングするために使用されるフィールドの名前。 |
Alert Name Field Name |
必須
アラート名。 |
Events Count Limit Per Query |
Optional クエリごとに取得するイベントの最大数。 |
Max Day Backwards |
Optional イベントを取得する時点からの日数。 |
Aggregate Events Query |
Optional 有効にすると、コネクタはすべてのイベントを 1 つのアラートにまとめます。 デフォルトでは無効にされています。 |
PythonProcessTimeout (Seconds) |
必須 現在のスクリプトを実行している Python プロセスのタイムアウト上限。 デフォルト値は 60 秒です。 |
Proxy Server Address |
省略可
使用するプロキシ サーバーのアドレス。 |
Proxy Username |
省略可
認証に使用するプロキシのユーザー名。 |
Proxy Password |
省略可
認証に使用するプロキシ パスワード。 |
Environment Regex Pattern |
省略可
デフォルト値の このパラメータを使用すると、正規表現ロジックを使用して環境フィールドを操作できます。 正規表現パターンが null か空の場合、または環境値が null の場合、最終的な環境の結果はデフォルト環境になります。 |
コネクタルール
コネクタでプロキシがサポートされます。
Splunk プル コネクタ
Splunk から Google SecOps にアラートとイベントをプルします。
コネクタ パラメータ
コネクタを構成するには、次のパラメータを使用します。
| パラメータ | |
|---|---|
Product Field Name |
必須
ソース フィールド名を入力して デフォルト値は |
Event Field Name |
必須
ソース フィールド名を入力して デフォルト値は |
Environment Field Name |
省略可
環境名が保存されるフィールドの名前。 環境フィールドが見つからない場合、結果の環境は デフォルト値は |
Environment Regex Pattern |
省略可
デフォルト値の このパラメータを使用すると、正規表現ロジックを使用して環境フィールドを操作できます。 正規表現パターンが null か空の場合、または環境値が null の場合、最終的な環境の結果は |
PythonProcessTimeout (Seconds) |
必須 現在のスクリプトを実行している Python プロセスのタイムアウト上限。 デフォルト値は 60 秒です。 |
Server Address |
必須
Splunk API サーバーの IP アドレス。 |
Port |
必須
Splunk インスタンスのポート。 デフォルト値は |
Username |
必須
Splunk アカウントのユーザー名。 |
Password |
必須
Splunk アカウントのパスワード。 |
Time Frame |
省略可
アラートを取得する期間。 デフォルト値は 1 時間です。 例: 値が 1 分に設定されている場合、コネクタは 1 分前からアラートを取得します。 値が 3 時間に設定されている場合、コネクタは 3 時間前からアラートを取得します。 値が 1 日または 1 週間に設定されている場合、コネクタはそれぞれ 1 日前(24 時間前)または 1 週間前からアラートを取得します。 |
Alerts Count Limit |
省略可
1 回の反復処理でコネクタから返されるアラートの数。 デフォルト値は 100 です。 |
Use SSL |
省略可
SSL 接続または TLS 接続を有効にするには、オンにします。 デフォルトではオフになっています。 |
Proxy Server Address |
省略可
使用するプロキシ サーバーのアドレス。 |
Proxy Username |
省略可
認証に使用するプロキシのユーザー名。 |
Proxy Password |
省略可
認証に使用するプロキシ パスワード。 |
コネクタルール
コネクタでプロキシがサポートされます。
Splunk ES - Notable Events Connector
Splunk ES から重要なイベントを取り込みます。
ケースの優先度を定義する
ケースの優先度は、注目すべきイベントの Urgency パラメータで定義されます。このパラメータのみが、注目すべきイベントを Google SecOps に取り込む際に考慮されます。
コネクタ パラメータ
コネクタを構成するには、次のパラメータを使用します。
| パラメータ | |
|---|---|
Product Field Name |
必須
ソース フィールド名を入力して デフォルト値は |
Event Field Name |
必須
ソース フィールド名を入力して デフォルト値は |
Environment Field Name |
省略可
環境名が保存されるフィールドの名前。 環境フィールドがない場合、デフォルトの環境が使用されます。 デフォルト値は |
Environment Regex Pattern |
省略可
デフォルト値の このパラメータを使用すると、正規表現ロジックを使用して環境フィールドを操作できます。 正規表現パターンが null か空の場合、または環境値が null の場合、最終的な環境の結果はデフォルト環境になります。 |
Script Timeout (Seconds) |
必須 現在のスクリプトを実行している Python プロセスのタイムアウト上限。 デフォルト値は 180 秒です。 |
Server Address |
必須
Splunk インスタンスのサーバー アドレス。 デフォルト値は |
Username |
省略可
Splunk アカウントのユーザー名。 |
Password |
省略可
Splunk アカウントのパスワード。 |
API Token |
必須
Splunk API トークン。 このフィールドに値がある場合、API トークンは他の認証方法よりも優先されます。 |
Lowest Urgency To Fetch |
必須
重要なイベントの取得に使用される最も低い緊急度。 使用できる値は次のとおりです。
デフォルト値は |
Fetch Max Hours Backwards |
省略可
注目すべきイベントを取得する時点からの時間数。 デフォルト値は 1 時間です。 |
Only Drilldown Events |
省略可
有効にすると、コネクタはベースイベントを取得せずにドリルダウン イベントを取得しようとします。このパラメータを使用するには、 デフォルトでは無効にされています。 |
Padding Time |
省略可
パディングとして使用される時間数。 値が指定されていない場合、このパラメータは適用されません。 最大値は 12 時間です。 |
Max Notable Events To Fetch |
省略可
1 回のコネクタのイテレーションで処理する注目すべきイベントの数。 デフォルト値は 10 です。 |
Use whitelist as a blacklist |
必須
有効にすると、動的リストがブロックリストとして使用されます。 デフォルトでは無効にされています。 |
Verify SSL |
必須
オンにすると、CrowdStrike サーバーへの接続用の SSL 証明書が有効であることが確認されます。 デフォルトではオフになっています。 |
Proxy Server Address |
省略可
使用するプロキシ サーバーのアドレス。 |
Proxy Username |
省略可
認証に使用するプロキシのユーザー名。 |
Proxy Password |
省略可
認証に使用するプロキシ パスワード。 |
Query Filter |
省略可
注目すべきイベントを取得するために Splunk に送信される追加のクエリフィルタ。 ここで指定した値は、WHERE クエリ句に追加されます。 |
Extract Base Events |
省略可
有効にすると、コネクタはジョブに関する情報を使用して、注目すべきイベントに関連するベースイベントを抽出します。それ以外の場合、コネクタは注目すべきイベントに基づいて Google SecOps イベントを作成します。 このパラメータが デフォルトで有効になっています。 |
Multivalue Fields |
省略可
複数のエンティティを含むフィールドのカンマ区切りのリスト。 たとえば、フィールドに 2 つのホスト名が含まれている場合、エンティティを正しくマッピングするために、注目すべきイベントは 2 つの Google SecOps イベントに分割されます。 |
Notable Event Data Along Base Event |
省略可
有効にすると、コネクタはベースイベントに加えて、注目すべきイベントに基づいて Google SecOps イベントを追加します。 デフォルトでは無効になっています。 |
Rule Generator Field Name |
省略可
ルール ジェネレータ値をマッピングするために使用されるフィールドの名前。 マッピングには、注目すべきイベント自体に関する情報のみが使用され、イベントは無視されます。無効な値が指定された場合、コネクタはフィールドを |
Alert Name Source |
省略可
アラート名のソース。 次の値があります。
デフォルト値は |
Query Filter パラメータの使用方法
特定のパラメータに基づいて注目すべきイベントを絞り込む必要がある場合は、Query Filter パラメータを使用します。このパラメータで指定された値は、注目すべきイベントを取得するために送信されるクエリの WHERE 句に追加されます。
送信されたクエリの例を次に示します。
(`get_notable_index` OR `get_sequenced_index`) | eval `get_event_id_meval`,
rule_id=event_id | tags outputfield=tag | `mvappend_field(tag,orig_tag)` |
`notable_xref_lookup` | `get_correlations` | `get_current_status` | `get_owner`
| `get_urgency` | typer | where (urgency="medium" AND urgency="low") AND
(status_label="Unassigned" OR status_label="New") | tail 50 | fields *
たとえば、Query Filter = isTesting = True の場合、クエリは次のようになります。
search (`get_notable_index` OR `get_sequenced_index`) | eval epoch=_time | eval
`get_event_id_meval`,rule_id=event_id | tags outputfield=tag |
`mvappend_field(tag,orig_tag)` | `notable_xref_lookup` | `get_correlations` |
`get_current_status` | `get_owner` | `get_urgency` | typer | where
(urgency!="informational" AND urgency!="low" **AND isTesting = "True"**) |
fields *
コネクタルール
Splunk ES コネクタは、動的リストとブロックリスト(whitelist と blacklist)を使用します。コネクタは、イベントの search_name フィールドを使用して、動的リストと比較します。
コネクタ イベント
[{
"indicator": "2012/06/29_21:50",
"tlp": "TLP:RED",
"itype": "mal_url",
"severity": "very-high",
"classification": "public",
"detail": "",
"confidence": 50,
"actor": "",
"feed_name": "import",
"source": "admin",
"feed_site_netloc": "localhost",
"campaign": "",
"type": "url",
"id": "anomali:indicator-578a9be5-0e03-4ec0-940d-4b1842f40fd0",
"date_last": "2020-07-15 08:12:07 AM",
"Url": "indicator"
},{
"indicator": "2010/12/19_16:35",
"tlp": "TLP:RED",
"itype": "mal_url",
"severity": "very-high",
"classification": "public",
"detail": "",
"confidence": 50,
"actor": "",
"feed_name": "import",
"source": "admin",
"feed_site_netloc": "localhost",
"campaign": "",
"type": "url",
"id": "anomali:indicator-52cadd07-330a-45fd-962f-32e22d36a89a",
"date_last": "2020-07-15 08:12:07 AM"
}]
ジョブ
ジョブの詳細については、 新しいジョブを構成すると 高度なスケジューリングをご覧ください。
Splunk ES のクローズされたイベントを同期する
クローズされた Splunk ES の注目すべきイベントと Google SecOps のアラートを同期します。
パラメータ
| パラメータの表示名 | 種類 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| サーバー アドレス | 文字列 | https://IP:8089 |
○ | Splunk インスタンスのサーバー アドレス。 |
| ユーザー名 | 文字列 | なし | × | Splunk アカウントのユーザー名。 |
| パスワード | パスワード | なし | × | Splunk アカウントのパスワード。 |
| API トークン | パスワード | なし | ○ | Splunk API トークン。このフィールドが空でない場合、API トークンは他の認証方法よりも優先されます。 |
| 最大遡及時間 | 整数 | 24 | ○ | ステータスを同期するために遡る時間数を指定します。デフォルト: 24 時間。 |
| SSL を確認する | チェックボックス | オン | ○ | 有効になっている場合は、Splunk サーバーへの接続用の SSL 証明書が有効であることを確認します。 |
Splunk ES のコメントを同期する
このジョブは、Splunk ES イベントと Google SecOps ケースのコメントを同期します。
パラメータ
| パラメータの表示名 | 種類 | デフォルト値 | 必須 | 説明 |
|---|---|---|---|---|
| サーバー アドレス | 文字列 | https://IP:8089 |
○ | Splunk インスタンスのサーバー アドレス。 |
| ユーザー名 | 文字列 | なし | × | Splunk アカウントのユーザー名。 |
| パスワード | パスワード | なし | × | Splunk アカウントのパスワード。 |
| API トークン | パスワード | なし | ○ | Splunk API トークン。このフィールドが空でない場合、API トークンは他の認証方法よりも優先されます。 |
| SSL を確認する | チェックボックス | オン | ○ | 有効になっている場合は、Splunk サーバーへの接続用の SSL 証明書が有効であることを確認します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。