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 政策情報 アクションは、一覧表示されているサービス アカウントのデータを見つけられませんでした。
アクション「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 エンコードが使用され、最後のエンコードが使用されるまで続けられます。
複数の文字列を検索 チェックボックス オフ いいえ 有効にすると、「検索値」は単一の文字列ではなく、カンマ区切りの値のリストとして機能します。
返されるフィールド 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」の値が含まれます。

まず、[重大度フィールド名] パラメータで 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 にヘッダーがあります チェックボックス オン ○ CSV ファイルにヘッダーが含まれているかどうかを示します。
ファイルのエンコード タイプ 文字列 utf-8 ○ CSV のエンコードタイプを設定します。例:iso-8859-1、latin1、utf-8、utf-16。
アラートフィールド名 文字列 なし いいえ アラート名に関する情報を含むフィールドの名前。
重大度フィールド名 文字列 なし いいえ

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

コネクタ ルール

プロキシのサポート

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

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