CSV を Google SecOps と統合する

このドキュメントでは、CSV を Google Security Operations と統合する方法について説明します。

このドキュメントでは、CSV を Google Security Operations と統合する方法について説明します。

ユースケース

Google SecOps の CSV 統合は、次のユースケースをサポートしています。

  • ファイルベースの脅威ハンティング: ローカルまたはリモートの CSV ログファイルから特定の文字列や悪意のあるエンティティを迅速に検索し、過去に記録された脅威を特定します。

  • アラートの自動生成: CSV 形式でデータを出力するレガシー システムからレコードを自動的に取り込み、カスタムの重大度マッピングを使用して、実用的なアラートに変換します。

  • データのポータビリティとレポート: 他のプレイブック アクションからの JSON 結果をプログラムで CSV 形式に変換し、外部レポートツールまたはローカル ストレージへのエクスポートを効率化します。

  • エンティティの自動拡充: CSV ファイルをローカルの脅威インテリジェンス ソースとして使用し、プレイブックの実行中にエンティティを自動的に拡充して、疑わしいエンティティとしてマークします。

  • システム間のデータ同期: 以前の Excel 形式など、さまざまな文字エンコードのファイルを効率的に処理し、異なるセキュリティ ツール間でデータの整合性を確保します。

始める前に

Google SecOps で統合を構成する前に、次のものが揃っていることを確認してください。

  • 内部プラットフォーム機能: この統合は、組み込みのファイル処理機能を提供し、認証に外部のサードパーティ API キーや認証情報を必要としません。

  • ファイル システムの権限: リモート エージェントを使用する場合、統合では、ホストシステムのファイルにアクセスして管理するための特定の権限が必要です。エージェント マシンで次のコマンドを実行して、ターゲット ディレクトリに必要な権限を付与します。chown scripting:scripting "directory_path"

統合のパラメータ

CSV 統合には、次のパラメータが必要です。

パラメータの表示名 種類 デフォルト値 必須 説明
インスタンス名 文字列 なし いいえ 統合を構成するインスタンスの名前。
説明 文字列 なし いいえ インスタンスの説明。
リモートで実行 チェックボックス オフ いいえ 構成した統合をリモートで実行するには、フィールドのチェックボックスをオンにします。オンにすると、リモート ユーザー(エージェント)を選択するオプションが表示されます。

Google SecOps で統合を構成する手順については、統合を構成するをご覧ください。

必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できるようになります。複数のインスタンスの構成とサポートの方法については、複数のインスタンスのサポートをご覧ください。

操作

アクションの詳細については、 デスクから保留中のアクションに対応する手動アクションを実行するをご覧ください。

JSON を CSV に保存

JSON オブジェクトを CSV に保存します。

パラメータ

パラメータ名 種類 デフォルト値 必須 説明
JSON オブジェクト JSON なし CSV として保存する JSON オブジェクトを指定します。
上書き ブール値 False いいえ 有効にすると、アクションは既存のファイルを上書きします。
ファイルパス 文字列 なし 新しく作成された CSV ファイルの絶対ファイルパスを指定します。ファイル名のみが指定されている場合、アクションはファイルを /tmp/ フォルダに保存します。

実行

なし

アクションの結果

スクリプトの結果
スクリプトの結果名
is_success True/False
JSON の結果
{"filepath": "{file name}"}
ケースウォール

このアクションでは、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明
JSON オブジェクトを変換し、指定されたファイルパスに保存しました。 アクションが成功しました。
指定されたパスにファイルが見つかりませんでした。 そのファイルは存在しません。
指定されたサービス アカウントのアクティビティが Google Cloud Policy Intelligence で見つかりませんでした アクションは、一覧表示されているサービス アカウントのデータを見つけられませんでした。
アクション「JSON を CSV に保存」の実行エラー。

アクションがエラーを返しました。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

文字列で検索する

CSV ファイル内の文字列を検索します。

パラメータ

パラメータ名 種類 デフォルト値 必須 説明
CSV パス 文字列 なし CSV ファイルのファイルパス、またはすべての CSV ファイルを含むフォルダのパスを指定します。フォルダが指定されている場合、アクションはフォルダ内のすべての CSV ファイルに対して反復処理されます。
CSV 列 文字列 なし いいえ エンティティ情報を含むことができる列のカンマ区切りリストを指定します。何も指定しない場合、アクションはすべての列を検索します。
遡る日数 文字列 10 いいえ CSV ファイルを処理する日数を遡って指定します。
検索値 文字列 なし いいえ 検索する文字列を指定します。「複数の文字列を検索」が有効になっている場合、このパラメータは、検索対象の文字列のカンマ区切りリストとして扱われます。
最初の行のみを返します。 チェックボックス オフ いいえ 有効の場合、アクションはエンティティに一致した最初のファイル内の 1 行のみを返します。
ファイル エンコード タイプ 文字列 utf-8、latin-1、iso-8859-1 CSV ファイルのデコードに使用される CSV エンコード タイプのカンマ区切りのリスト。例: utf-8、latin-1、iso-8859-1、utf-16。エンコード タイプを指定する順序により、ファイルのデコードの順序が決まります。たとえば、上記の例では、utf-8 が最も優先され、すべてのファイルのデコードに主に使用されます。別のエンコードを使用する CSV ファイルがある場合、順序内の次のエンコード latin-1 エンコードが使用され、最後のエンコードが使用されるまで続けられます。
Search Multiple String チェックボックス オフ いいえ 有効にすると、「検索値」は単一の文字列ではなく、値のカンマ区切りリストとして機能します。
返されるフィールド CSV なし いいえ 返す必要のある値のカンマ区切りのリストを指定します。

ユースケース

CSV ファイル内の文字列を検索します。

実行

このアクションはすべてのエンティティに対して実行されます。

アクションの結果

スクリプトの結果
スクリプトの結果名 値のオプション
count_rows_csv 行数に制限なし count_rows += 1
JSON の結果
[
    {
        "EntityResult": {
            "Field2": "Value2",
            "Field3": "Value3",
            "Field1": "Value1",
            "Field4": "Value4",
            "Field5": "Value5"
        },
        "Entity": "host"
    }, {
        "EntityResult": {
            "Field2": "Value2",
            "Field3": "Value3",
            "Field1": "Value1",
            "Field4": "Value4",
            "Field5": "Value5"
        }, "Entity": "1.1.1.1"
    }
]
ケースウォール
結果のタイプ 値 / 説明 タイプ
出力メッセージ *

見つかったレコードに対して: 次の文字列に関する情報が見つかりました: \n (search_string)」

一部の文字列のレコードが見つからない場合:「アクションでは、次の文字列に関する情報が見つかりませんでした:」

すべてのレコードで成功しなかった場合:「指定された項目に関する情報が見つかりませんでした。」

すべてのエンコードが無効な場合:アクション「文字列での CSV 検索」の実行エラー。指定されたエンコードが無効です。スペルを確認してください。」

一般

[エンティティ] で検索する

CSV ファイル内のエンティティを検索して拡充します。

パラメータ

パラメータ名 種類 デフォルト値 必須 説明
CSV パス 文字列 なし CSV ファイルのファイルパス、またはすべての CSV ファイルを含むフォルダのパスを指定します。フォルダが指定されている場合、アクションはフォルダ内のすべての CSV ファイルに対して反復処理されます。
CSV 列 文字列 なし エンティティ情報を含むことができる列のカンマ区切りリストを指定します。何も指定しない場合、アクションはすべての列を検索します。
遡る日数 文字列 10 CSV ファイルを処理する日数を遡って指定します。
不審としてマーク チェックボックス オフ いいえ 有効の場合、ファイル内で検出された場合に、アクションはエンティティを不審としてマークします。
最初の行のみを返します。 チェックボックス オフ いいえ 有効の場合、アクションはエンティティに一致した最初のファイル内の 1 行のみを返します。
ファイル エンコード タイプ 文字列 utf-8、latin-1、iso-8859-1 CSV ファイルのデコードに使用される CSV エンコード タイプのカンマ区切りのリスト。例: utf-8、latin-1、iso-8859-1、utf-16。エンコード タイプを指定する順序により、ファイルのデコードの順序が決まります。たとえば、上記の例では、utf-8 が最も優先され、すべてのファイルのデコードに主に使用されます。別のエンコードを使用する CSV ファイルがある場合、順序内の次のエンコード latin-1 エンコードが使用され、最後のエンコードが使用されるまで続けられます。
エンティティの拡充 チェックボックス オン いいえ 有効にした場合、アクションは CSV ファイルから情報を追加し、エンティティの拡充テーブルに追加します。
インサイトの作成 チェックボックス オン いいえ 有効の場合、アクションは、ファイル内でエンティティが見つかった場合に分析情報を作成します。
返されるフィールド CSV なし いいえ 返す必要のある値のカンマ区切りのリストを指定します。

実行

このアクションはすべてのエンティティに対して実行されます。

アクションの結果

スクリプトの結果
スクリプトの結果名 値のオプション
count_rows_csv 行数に制限なし count_rows += 1
JSON の結果
[
    {
        "EntityResult": [{
            "domain": "example.dom",
            "fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
            "reporter": "Symantec Antivirus",
            "app": "Arcsight",
            "id": "1011",
            "eventTime": "9/4/2017 10:00",
            "antivirusAction": "blocked",
            "virusName": "ECAT",
            "rule": "malicious",
            "eventName": "Virus detected",
            "User": "Ziv",
            "eventHostName": "WS-ZivDevComp",
            "File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
            "machineAddress": "192.168.11.11"
        }, {
            "domain": "SmartCompany.dom",
            "fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
            "reporter": "Symantec Antivirus",
            "app": "ESM",
            "id": "1012",
            "eventTime": "9/4/2017 10:00",
            "antivirusAction": "allowed",
            "virusName": "ECAT",
            "rule": "malicious",
            "eventName": "Virus detected",
            "User": "GG",
            "eventHostName": "WS-GGDevComp",
            "File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
            "machineAddress": "192.168.11.11"
        }],
        "Entity": "192.168.11.11"
    }
]
ケースウォール
結果のタイプ 値 / 説明 タイプ
出力メッセージ *

見つかったレコードに対して: 次のエンティティに関する情報が見つかりました: \n (entity.identifier)」

見つからなかったエンティティに対して:「次のエンティティに関する情報が見つかりませんでした: \n (entity.identifier)」

すべてのエンティティで成功しなかった場合:「指定されたエンティティに関する情報が見つかりませんでした。」

すべてのエンコードが無効な場合:「アクション「文字列での CSV 検索」の実行エラー。指定されたエンコードが無効です。スペルを確認してください。」

一般

Ping

接続をテストします。

パラメータ

なし

実行

このアクションはすべてのエンティティに対して実行されます。

アクションの結果

スクリプトの結果

なし

JSON の結果
N/A

コネクタ

CSV コネクタ

特定のフォルダにある CSV ファイルからデータを取得し、このデータを Google SecOps システムのアラートに変換します。

このトピックでは、Google SecOps が CSV ファイルを生成するメカニズムと構成、サポートされている作業フローとプラットフォーム内で実行されるアクションについて説明します。

ユースケース

お客様がシステムから取得した CSV を取得しており、ファイルはさまざまなエンコードの可能性があります。

*   Add support for comma-separated encodings in the Encoding field in the
    connector.
    *   The connector should try the different encodings by their order in
        the field (first encoding - highest priority, last - lowest
        priority) with try/except. If no matching encoding was found -
        consider the file as an error and notify.
    *   Put a default value for the fields - a list of most common CSV
        encodings by priority (utf8, latin1, and iso...)

CSV ファイルへのアクセス

Google SecOps による CSV ファイルへのアクセス: CSV ファイル用のフォルダを設定します。

Google SecOps への CSV レコードの転送

CSV ファイルのレコードを操作する

アラートソースとして CSV ファイルを使用するように Google SecOps を構成する場合は、CSV の取得元となる特定のフォルダを指定する必要があります。Google SecOps は、CSV ファイル内のレコードを取得し、変換のために転送し、ケースのアラートとしてコンテキスト化します。

コネクタで重大度をマッピングする方法

重大度をマッピングするには、[Severity Field Name] パラメータで重大度の値を取得するために使用するフィールドを指定する必要があります。レスポンスでは、整数、浮動小数点数、文字列の 3 種類の値を取得できます。整数と浮動小数点の場合、追加の構成を行う必要はありません。コネクタはこれらの値を読み取り、Google SecOps 標準に従ってマッピングします。整数値のマッピング方法を簡単に説明します。

  • 100 - 重大
  • 100 > x >= 80 高
  • 80 > x >=60 中
  • 60 > x >=40 低
  • 40 > x 情報

レスポンスで文字列を扱う場合は、追加の構成が必要です。コネクタ スクリプトが配置されているフォルダに、構成ファイル名 severity_map_config.json があります。このファイルは、重大度のマッピング ルールを定義します。

最初は、ファイルは次のようになります。1 2 3 { "Default": 50 }

たとえば、必要な値が event.severity にあるとします。 event.severity には「Malicious」、「Benign」、「Unknown」の値が含まれます。

まず、[Severity Field Name] パラメータで event.severity を使用することを指定する必要があります。次に、構成ファイルを更新する必要があります。変更後、severity_map_config.json ファイルは次のようになります。1 2 3 4 5 6 7 8 { "event.severity": { "Malicious": 100, "Unknown": 60, "Benign": -1 }, "Default": 50 }

これで、コネクタが event.severity = "Malicious" のイベントを受信すると、重大の重大度が付与されます。

Google SecOps で CSV コネクタを構成する

Google SecOps でコネクタを構成する方法の詳細については、コネクタの構成をご覧ください。

コネクタ パラメータ

次のパラメータを使用してコネクタを構成します。

パラメータ名 種類 デフォルト値 必須 説明
プロダクト フィールド名 文字列 device_product デバイス プロダクトを特定するために使用されるフィールド名。
イベント フィールド名 文字列 name いいえ イベント名(サブタイプ)を特定するために使用されるフィールド名。
スクリプトのタイムアウト(秒) 文字列 60 現在のスクリプトを実行している Python プロセスのタイムアウト上限(秒単位)。
CSV フォルダのパス 文字列 なし 取り込む必要のあるすべての CSV ファイルを含むフォルダのパス。
CSV の上限 文字列 なし いいえ 1 回のイテレーションで処理する CSV ファイルの数。
ルール生成ツール フィールド名 文字列 なし いいえ ルール ジェネレータに関する情報を含むフィールドの名前。
時間フィールド名 文字列 なし いいえ イベント時間に関する情報を含むフィールドの名前。
CSV Has Header チェックボックス オン CSV ファイルにヘッダーがあるかどうかを示します。
ファイルのエンコード タイプ 文字列 utf-8 CSV エンコード タイプ(iso-8859-1、latin1、utf-8、utf-16 など)を設定します。
アラート フィールド名 文字列 なし いいえ アラート名に関する情報を含むフィールドの名前。
重大度フィールド名 文字列 なし いいえ

重大度に関する情報を含むフィールドの名前。
注: レスポンスの値に基づいて重大度をマッピングできます。そのためには、コネクタの実行フォルダに移動して severity_mapping_config.json を変更する必要があります。ドキュメントを参照してください。

コネクタ ルール

プロキシのサポート

コネクタはプロキシをサポートしていません。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。