Bindplane エージェントを使用する

以下でサポートされています。

Bindplane エージェント(収集エージェントとも呼ばれます)は、OpenTelemetry Collector(OTel)に基づくオープンソース エージェントです。Microsoft Windows イベントログなど、さまざまなソースからログを収集し、Google Security Operations に送信します。

Bindplane OP 管理コンソールは、Google SecOps と Google Cloudで OTel コレクタのデプロイを管理するための包括的で統合されたプラットフォームを提供します。Bindplane(旧称 observiq)は、管理コンソールの Bindplane(Google エディション)を提供します。管理コンソールは省略可能です。エージェントは、管理コンソールの有無にかかわらず使用できます。

詳細は下記のページをご覧ください。

管理コンソールは省略可能です。エージェントは、コンソールを使用しても使用しなくてもかまいません。コンソールの詳細については、Bindplane OP 管理コンソールをご覧ください。

これは、オンプレミス デプロイの Cloud Logging で使用されるソリューションと同じです。

始める前に

エージェントをインストールするには、次のものが必要です。

  • Google SecOps の取り込み認証ファイル

    ファイルをダウンロードするには、次の手順に従います。

    1. Google SecOps コンソールを開きます。
    2. [SIEM 設定] > [収集エージェント] に移動します。
    3. Google SecOps の取り込み認証ファイルをダウンロードします。
  • Google SecOps のお客様 ID

    お客様 ID を確認する手順は次のとおりです。

    1. Google SecOps コンソールを開きます。
    2. [SIEM 設定] > [プロファイル] に移動します。
    3. [組織の詳細情報] セクションからお客様 ID をコピーします。
  • Windows 2012 SP2 以降、または systemd を使用する Linux ホスト

  • インターネット接続

  • GitHub へのアクセス

ファイアウォール構成を確認する

エージェントとインターネットの間にあるファイアウォールまたは認証プロキシには、次のホストへのアクセス権を開放するルールが必要です。

接続タイプ 宛先 ポート
TCP malachiteingestion-pa.googleapis.com 443
TCP asia-northeast1-malachiteingestion-pa.googleapis.com 443
TCP asia-south1-malachiteingestion-pa.googleapis.com 443
TCP asia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP australia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP europe-malachiteingestion-pa.googleapis.com 443
TCP europe-west2-malachiteingestion-pa.googleapis.com 443
TCP europe-west3-malachiteingestion-pa.googleapis.com 443
TCP europe-west6-malachiteingestion-pa.googleapis.com 443
TCP europe-west12-malachiteingestion-pa.googleapis.com 443
TCP me-central1-malachiteingestion-pa.googleapis.com 443
TCP me-central2-malachiteingestion-pa.googleapis.com 443
TCP me-west1-malachiteingestion-pa.googleapis.com 443
TCP northamerica-northeast2-malachiteingestion-pa.googleapis.com 443
TCP accounts.google.com 443
TCP oauth2.googleapis.com 443

Bindplane OP 管理コンソール

Bindplane OP 管理コンソールには、次の主な機能があります。

  • 一元管理: コンソールを使用すると、 Google Cloud全体で OTel コレクタのすべてのデプロイを管理できます。各デプロイのステータスを表示したり、コレクタの起動、停止、再起動などの一般的な管理タスクを実行したりできます。
  • リアルタイム モニタリング: コンソールでは、OTel コレクタのデプロイのリアルタイム モニタリングが提供されます。CPU 使用率、メモリ使用率、スループットなどの指標を追跡し、ログとトレースを表示して問題をトラブルシューティングできます。
  • アラートと通知: コンソールでは、コレクタがダウンしたときや指標のしきい値を超えたときなど、重要なイベントのアラートと通知を設定できます。
  • 構成管理: コンソールを使用すると、OTel コレクタの構成を一元的に管理できます。構成ファイルの編集、環境変数の設定、セキュリティ ポリシーのすべてのデプロイへの適用を行うことができます。
  • Google Cloudとの統合: Google Cloud で OTel コレクタのデプロイを作成して管理し、コンソールを使用して Google Cloud リソースにアクセスできます。

Bindplane OP 管理コンソールをデプロイするには、次の 2 つの方法があります。

Bindplane(Google エディション)と Bindplane Enterprise(Google エディション)の違い

デプロイのニーズに応じて、Bindplane(Google エディション)または Bindplane Enterprise(Google エディション)のいずれかを使用できます。

違いを次の表に示します。

特徴 Bindplane(Google エディション) Bindplane Enterprise(Google エディション)
費用 Google SecOps のすべてのお客様は、追加料金なしで Bindplane(Google エディション)を利用できます。 Google SecOps Enterprise Plus のお客様は、Bindplane Enterprise(Google エディション)を無料で利用できます
ルーティング / 宛先 Google のみ(Google SecOps、Cloud Logging、BigQuery、Cloud Logging 経由の Cloud Storage など) Google(SIEM 移行のための Google 以外の宛先への 12 か月間のルーティングを含む)
フィルタリング 正規表現を使用した基本フィルタ 高度なフィルタリング プロセッサ(条件、フィールド、重大度などでフィルタリング)、データの削減、ログ サンプリング、重複除去
秘匿化 なし 個人情報(PII)のマスキング
変換 フィールドの追加、フィールドの移動、データの解析(KV、JSON、CSV、XML、タイムスタンプ、正規表現による解析)、フィールドの名前変更、イベント ブレーカー フィールドの削除、空の値の削除、coalesce
一般的なプラットフォーム レベルの機能 ゲートウェイ(エージェントからのデータを集計)、収集用の Bindplane エージェント、オンプレミスまたはクラウド ホスト用の Bindplane Managementlayer(Bindplane OP)、すべてのソース、SecOps プロセッサによるサイレント ホスト モニタリング、永続キュー、テレメトリーの拡充、HA、RBAC、両方の SecOps 取り込み API のサポート、認証情報の難読化、エージェントのグループ化、動的ログタイプ割り当てなどの高度なフリート管理

Bindplane エージェントをインストールする

このセクションでは、さまざまなホスト オペレーティング システムにエージェントをインストールする方法について説明します。

Windows

Windows に Bindplane エージェントをインストールするには、次の PowerShell コマンドを実行します。

msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet

インストール ウィザードを使用してインストールする場合は、Windows 用の最新のインストーラをダウンロードします。

インストーラをダウンロードしたら、インストール ウィザードを開き、手順に沿って Bindplane エージェントを構成してインストールします。インストールの詳細については、Windows へのインストールをご覧ください。

Linux

インストールするパッケージを自動的に決定するスクリプトを使用して、Linux にエージェントをインストールできます。同じスクリプトを使用して、既存のインストールを更新することもできます。

インストール スクリプトを使用してインストールするには、次のスクリプトを実行します。

sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh

ローカル パッケージからのインストール

ローカル パッケージからエージェントをインストールするには、-f を使用してパッケージのパスを指定します。

sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh -f path_to_package

RPM のインストール

リリース ページからアーキテクチャ用の RPM パッケージをダウンロードし、rpm を使用してパッケージをインストールします。amd64 パッケージをインストールする例を次に示します。

sudo rpm -U ./observiq-otel-collector_v${VERSION}_linux_amd64.rpm
sudo systemctl enable --now observiq-otel-collector

VERSION は、ダウンロードしたパッケージのバージョンに置き換えます。

DEB のインストール

リリース ページからアーキテクチャ用の DEB パッケージをダウンロードし、dpkg を使用してパッケージをインストールします。amd64 パッケージのインストールについては、次の例を参照してください。

sudo dpkg -i --force-overwrite ./observiq-otel-collector_v${VERSION}_linux_amd64.deb
sudo systemctl enable --now observiq-otel-collector

VERSION は、ダウンロードしたパッケージのバージョンに置き換えます。

詳細については、Bindplane エージェントのインストールをご覧ください。

エージェントを構成する

エージェントは、手動または Bindplane OP 管理コンソールを使用して構成できます。エージェントを手動で構成する場合は、エージェントが Google SecOps で認証されるようにエクスポーター パラメータを更新する必要があります。

エージェントをインストールすると、observiq-otel-collector サービスが実行され、構成の準備が整います。エージェントはデフォルトで C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log にログを記録します。

エージェント プロセスの標準エラーログは C:\Program Files\observIQ OpenTelemetry Collector\log\observiq_collector.err にあります。

デフォルトでは、エージェント構成ファイルは C:\Program Files\observIQ OpenTelemetry Collector\config.yaml にあります。構成を変更する場合は、構成の変更を有効にするためにエージェント サービスを再起動する必要があります。

エージェントで使用されるサンプル構成ファイルと認証トークンは、[Google SecOps コンソール] > [SIEM 設定] > [収集エージェント] からダウンロードできます。

構成ファイルで次の 2 つのセクションをカスタマイズします。

  • レシーバー: エージェントが収集して Google SecOps に送信するログを指定します。
  • エクスポーター: エージェントがログを送信する宛先を指定します。次のエクスポーターがサポートされています。
    • Google SecOps エクスポーター: ログを Google SecOps 取り込み API に直接送信します。
    • Google SecOps フォワーダー エクスポーター: Google SecOps フォワーダーにログを送信します。
    • Cloud Logging エクスポーター: ログを(Cloud Logging)に送信します。

エクスポーターで、次のようにカスタマイズします。

  • customer_id: Google SecOps の顧客 ID
  • endpoint: Google SecOps リージョン エンドポイント
  • creds: 認証トークン

    または、creds_file_path を使用して認証情報ファイルを直接参照することもできます。Windows 構成の場合は、バックスラッシュでパスをエスケープします。

  • log_type: ログタイプ

  • ingestion_labels: 省略可能な取り込みラベル

  • namespace: オプションの名前空間。

    各ログタイプにはエクスポーターを構成する必要があります。

アーキテクチャ

エージェント アーキテクチャには次のオプションがあります。

収集エージェントがゲートウェイとして機能する収集エージェントにログを送信する

収集エージェントがゲートウェイとして機能する収集エージェントにログを送信する

収集エージェントがログを Google SecOps 取り込み API に直接送信する

収集エージェントがログを Google SecOps 取り込み API に直接送信する

収集エージェントがログを Cloud Logging に直接送信する

収集エージェントがログを Cloud Logging に直接送信する

収集エージェントが複数の宛先にログを送信する

収集エージェントが複数の宛先にログを送信する

スケーラビリティ

通常、エージェント コレクタは最小限のリソースを使用しますが、システムで大量のテレメトリー(ログまたはトレース)を処理する場合は、他のサービスに影響を与えないようにリソース消費量に注意してください。詳細については、エージェントのサイジングとスケーリングをご覧ください。

サポート

コレクタ エージェントに関する問題については、 Google Cloud サポートにお問い合わせください。

Bindplane OP Management に関する問題については、Bindplane サポートにお問い合わせください。

その他のログ収集構成のサンプル

以降のセクションでは、追加のログ収集構成のサンプルを示します。

Windows イベントと sysmon を Google SecOps に直接送信する

サンプルで次のパラメータを構成します。

構成の例:

receivers:
  windowseventlog/sysmon:
    channel: Microsoft-Windows-Sysmon/Operational
    raw: true
  windowseventlog/security:
    channel: security
    raw: true
  windowseventlog/application:
    channel: application
    raw: true
  windowseventlog/system:
    channel: system
    raw: true

processors:
  batch:

exporters:
  chronicle/sysmon:
    endpoint: malachiteingestion-pa.googleapis.com
    creds: '{
  "type": "service_account",
  "project_id": "malachite-projectname",
  "private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
  "private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
  "client_email": "account@malachite-projectname.iam.gserviceaccount.com",
  "client_id": "123456789123456789",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.iam.gserviceaccount.com",
  "universe_domain": "googleapis.com"
}' 
    log_type: 'WINDOWS_SYSMON'
    override_log_type: false
    raw_log_field: body
    customer_id: 'dddddddd-dddd-dddd-dddd-dddddddddddd'
  chronicle/winevtlog:
    endpoint: malachiteingestion-pa.googleapis.com
    creds: '{
  "type": "service_account",
  "project_id": "malachite-projectname",
  "private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
  "private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
  "client_email": "account@malachite-projectname.iam.gserviceaccount.com",
  "client_id": "123456789123456789",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.iam.gserviceaccount.com",
  "universe_domain": "googleapis.com"
}'
    log_type: 'WINEVTLOG'
    override_log_type: false
    raw_log_field: body
    customer_id: 'dddddddd-dddd-dddd-dddd-dddddddddddd'

service:
  pipelines:
    logs/sysmon:
      receivers: [windowseventlog/sysmon]
      processors: [batch]
      exporters: [chronicle/sysmon]
    logs/winevtlog:
      receivers: 
        - windowseventlog/security
        - windowseventlog/application
        - windowseventlog/system
      processors: [batch]
      exporters: [chronicle/winevtlog]

Windows イベントと syslog を Google SecOps に直接送信する

サンプルで次のパラメータを構成します。

構成の例:

receivers:
    tcplog:
      listen_address: "0.0.0.0:54525"
    windowseventlog/source0__application:
        attributes:
            log_type: windows_event.application
        channel: application
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__security:
        attributes:
            log_type: windows_event.security
        channel: security
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__system:
        attributes:
            log_type: windows_event.system
        channel: system
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
exporters:
    chronicle/chronicle_w_labels:
        compression: gzip
        creds: '{ json blob for creds }'
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
            env: dev
        log_type: <applicable_log_type>
        namespace: testNamespace
        raw_log_field: body
service:
    pipelines:
        logs/source0__chronicle_w_labels-0:
            receivers:
                - windowseventlog/source0__system
                - windowseventlog/source0__application
                - windowseventlog/source0__security
            exporters:
                - chronicle/chronicle_w_labels
        logs/source1__chronicle_w_labels-0:
            receivers:
                - tcplog
            exporters:
                - chronicle/chronicle_w_labels

Windows イベントと syslog を Google SecOps フォワーダーに送信する

サンプルで次のパラメータを構成します。

構成の例:

receivers:
tcplog:
    listen_address: "0.0.0.0:54525"
    windowseventlog/source0__application:
        attributes:
            log_type: windows_event.application
        channel: application
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__security:
        attributes:
            log_type: windows_event.security
        channel: security
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__system:
        attributes:
            log_type: windows_event.system
        channel: system
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
exporters:
    chronicleforwarder/forwarder:
        export_type: syslog
        raw_log_field: body
        syslog:
            endpoint: 127.0.0.1:10514
            transport: udp
service:
    pipelines:
        logs/source0__forwarder-0:
            receivers:
                - windowseventlog/source0__system
                - windowseventlog/source0__application
                - windowseventlog/source0__security
            exporters:
                - chronicleforwarder/forwarder
        logs/source1__forwarder-0:
            receivers:
                - tcplog
            exporters:
                - chronicleforwarder/forwarder

syslog を Google SecOps に直接送信する

サンプルで次のパラメータを構成します。

構成の例:

receivers:
  tcplog:
    listen_address: "0.0.0.0:54525"

exporters:
    chronicle/chronicle_w_labels:
        compression: gzip
        creds: '{ json blob for creds }'
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
            env: dev
        log_type: <applicable_log_type>
        namespace: testNamespace
        raw_log_field: body
service:
    pipelines:
        logs/source0__chronicle_w_labels-0:
            receivers:
                - tcplog
            exporters:
                - chronicle/chronicle_w_labels

Windows イベントをリモートで収集し、Google SecOps に直接送信する

サンプルで次のパラメータを構成します。

  • windowseventlogreceiver
    • username
    • password
    • server
  • chronicleexporter
    • namespace
    • ingestion_labels
    • log_type
    • customer_id
    • creds

構成の例:

receivers:
    windowseventlog/system:
        channel: system
        max_reads: 100
        start_at: end
        poll_interval: 10s
        raw: true
        remote:
            username: "username"
            password: "password"
            server: "remote-server"
    windowseventlog/application:
        channel: application
        max_reads: 100
        start_at: end
        poll_interval: 10s
        raw: true
        remote:
            username: "username"
            password: "password"
            server: "server-ip"
    windowseventlog/security:
        channel: security
        max_reads: 100
        start_at: end
        poll_interval: 10s
        raw: true
        remote:
            username: "username"
            password: "password"
            server: "server-ip"
exporters:
    chronicle/chronicle_w_labels:
        compression: gzip
        creds: '{ json blob for creds }'
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
            env: dev
        log_type: WINEVTLOG
        namespace: testNamespace
        raw_log_field: body
service:
    pipelines:
        logs/source0__chronicle_w_labels-0:
            receivers:
                - windowseventlog/system
                - windowseventlog/application
                - windowseventlog/security
            exporters:
                - chronicle/chronicle_w_labels

Cloud Logging にデータを送信する

サンプルで credentials_file パラメータを構成します。

構成の例:

exporters:
  googlecloud:
    credentials_file: /opt/observiq-otel-collector/credentials.json

SQL データベースにクエリを実行し、結果を Google SecOps に送信する

サンプルで次のパラメータを構成します。

構成の例:

receivers:
  sqlquery/source0:
    datasource: host=localhost port=5432 user=postgres password=s3cr3t sslmode=disable
    driver: postgres
    queries:
      - logs:
          - body_column: log_body
        sql: select * from my_logs where log_id > $$1
        tracking_column: log_id
        tracking_start_value: "10000"
processors:
  transform/source0_processor0__logs:
    error_mode: ignore
    log_statements:
      - context: log
        statements:
          - set(attributes["chronicle_log_type"], "POSTGRESQL") where true
exporters:
  chronicle/chronicle_sql:
    compression: gzip
    creds: '{
  "type": "service_account",
  "project_id": "malachite-projectname",
  "private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
  "private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
  "client_email": "account@malachite-projectname.iam.gserviceaccount.com",
  "client_id": "123456789123456789",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.iam.gserviceaccount.com",
  "universe_domain": "googleapis.com"
}' 
    customer_id: customer_id
    endpoint: malachiteingestion-pa.googleapis.com
    log_type: POSTGRESQL
    namespace: null
    raw_log_field: body
    retry_on_failure:
      enabled: false
    sending_queue:
      enabled: false
service:
  pipelines:
    logs/source0_chronicle_sql-0:
      receivers:
        - sqlquery/source0
      processors:
        - transform/source0_processor0__logs
      exporters:
        - chronicle/chronicle_sql

正規表現に一致するログを削除する

正規表現に一致するログを削除するようにコレクタを構成できます。これは、既知のエラーやデバッグ メッセージなど、不要なログを除外するのに役立ちます。

正規表現に一致するログを削除するには、filter/drop-matching-logs-to-Chronicle タイプのプロセッサを構成に追加します。このプロセッサは、IsMatch 関数を使用して、ログ本文を正規表現と照合して評価します。関数が true を返すと、ログは破棄されます。

次の構成例では、ログ本文に文字列 <EventID>10</EventID> または <EventID>4799</EventID> を含むログをドロップします。

正規表現をカスタマイズして、必要なパターンに一致させることができます。IsMatch 関数は、RE2 正規表現構文を使用します。

構成の例:

processors:
    filter/drop-matching-logs-to-Chronicle:
        error_mode: ignore
        logs:
            log_record:
                - (IsMatch(body, "<EventID>10</EventID>")) or (IsMatch(body, "<EventID>4799</EventID>"))

次の例では、同じ構成のパイプラインにプロセッサを追加します。

service:
  pipelines:
    logs/winevtlog:
      receivers: 
        - windowseventlog/security
        - windowseventlog/application
        - windowseventlog/system
      processors: 
      - filter/drop-matching-logs-to-Chronicle # Add this line
      - batch
      exporters: [chronicle/winevtlog]

リファレンス ドキュメント

Bindplane(以前の observIQ)の詳細については、以下をご覧ください。

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