Elastic Auditbeat ログを収集する

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

このドキュメントでは、Amazon S3 を使用して Elastic Auditbeat ログを Google Security Operations に取り込む方法について説明します。パーサーは JSON ログからフィールドを抽出し、統合データモデル(UDM)に正規化して、ホスト情報、ネットワークの詳細、セキュリティ結果の分類などの追加コンテキストでデータを拡充します。event1.action などのフィールドを特定の UDM メタデータ イベントタイプにマッピングすることで、さまざまなイベントタイプを処理します。可能な場合は、デフォルトで GENERIC_EVENT またはより具体的なカテゴリが使用されます。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス。
  • Elastic Auditbeat サーバーへの特権アクセス。
  • Logstash サーバーへの特権アクセス。
  • AWS(S3、Identity and Access Management(IAM))への特権アクセス。

Elastic Auditbeat の前提条件を取得する

  1. Elastic Auditbeat がサーバーにインストールされ、構成されていることを確認します。
  2. 専用サーバーまたは Auditbeat とともに Logstash をインストールします。
  3. Auditbeat 構成ファイルの場所(通常は /etc/auditbeat/auditbeat.yml)をメモします。

Google SecOps 用に AWS S3 バケットと IAM を構成する

  1. バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
  2. 後で参照できるように、バケットの名前リージョンを保存します(例: elastic-auditbeat-logs)。
  3. IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
  4. 作成したユーザーを選択します。
  5. [セキュリティ認証情報] タブを選択します。
  6. [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
  7. [ユースケース] として [サードパーティ サービス] を選択します。
  8. [次へ] をクリックします。
  9. 省略可: 説明タグを追加します。
  10. [アクセスキーを作成] をクリックします。
  11. [.csv ファイルをダウンロード] をクリックし、[アクセスキー] と [シークレット アクセスキー] を保存して、今後の参照に備えます。
  12. [完了] をクリックします。
  13. [権限] タブを選択します。
  14. [権限ポリシー] セクションの [権限を追加] をクリックします。
  15. [権限を追加] を選択します。
  16. [ポリシーを直接アタッチする] を選択します。
  17. AmazonS3FullAccess ポリシーを検索します。
  18. ポリシーを選択します。
  19. [次へ] をクリックします。
  20. [権限を追加] をクリックします。

Logstash に送信するように Auditbeat を構成する

  1. Auditbeat 構成ファイル /etc/auditbeat/auditbeat.yml を編集します。
  2. 既存の出力構成(Elasticsearch など)をコメントアウトします。
  3. Logstash 出力構成を追加します。

    # ==================== Outputs ====================
    output.logstash:
      hosts: ["localhost:5044"]
      # If Logstash is on a different server, use its IP/hostname
      # hosts: ["logstash-server:5044"]
    
      # Optional: Enable load balancing if using multiple Logstash instances
      loadbalance: true
    
      # Optional: Configure bulk settings (default is 2048)
      bulk_max_size: 2048
    
      # Optional: Configure SSL if needed
      # ssl.enabled: true
      # ssl.certificate_authorities: ["/path/to/ca.crt"]
    
  4. Auditbeat を再起動して変更を適用します。

    sudo systemctl restart auditbeat
    

Logstash パイプラインを構成する

  1. 新しい Logstash パイプライン構成ファイル /etc/logstash/conf.d/auditbeat-to-s3.conf を作成します。

    input {
      beats {
        port => 5044
        # Optional: Configure SSL
        # ssl => true
        # ssl_certificate => "/path/to/server.crt"
        # ssl_key => "/path/to/server.key"
      }
    }
    
    filter {
      # Add any necessary transformations here
      # The data should remain in raw JSON format for Chronicle parsing
    
      # Optional: Add metadata for debugging
      mutate {
        add_field => { "[@metadata][pipeline]" => "auditbeat-to-s3" }
      }
    }
    
    output {
      s3 {
        # AWS credentials
        access_key_id => "YOUR_AWS_ACCESS_KEY_ID"
        secret_access_key => "YOUR_AWS_SECRET_ACCESS_KEY"
    
        # S3 bucket configuration
        region => "us-east-1"  # Replace with your bucket region
        bucket => "elastic-auditbeat-logs"  # Replace with your bucket name
    
        # Organize logs by date using Logstash timestamp interpolation
        prefix => "auditbeat/%{+YYYY}/%{+MM}/%{+dd}/"
    
        # File rotation settings
        size_file => 10485760  # 10MB files
        time_file => 5  # Rotate every 5 minutes
    
        # Compression for cost optimization
        encoding => "gzip"
    
        # Output format - keep as JSON for Chronicle
        codec => "json_lines"
    
        # Optional: Server-side encryption
        # server_side_encryption => true
        # server_side_encryption_algorithm => "AES256"
      }
    
      # Optional: Keep a local copy for debugging
      # stdout { 
      #   codec => rubydebug 
      # }
    }
    
    • YOUR_AWS_ACCESS_KEY_IDYOUR_AWS_SECRET_ACCESS_KEY は、実際の AWS 認証情報に置き換えます。
    • S3 構成に合わせて regionbucket の値を更新します。
    • Logstash を起動または再起動します。
    sudo systemctl restart logstash
    

(省略可)Google SecOps 用の読み取り専用の IAM ユーザーと鍵を作成する

  1. AWS コンソール > IAM > ユーザーに移動します。
  2. [ユーザーを追加] をクリックします。
  3. 次の構成の詳細を入力します。
    • ユーザー: 「secops-reader」と入力します。
    • アクセスの種類: [アクセスキー - プログラムによるアクセス] を選択します。
  4. [ユーザーを作成] をクリックします。
  5. 最小限の読み取りポリシー(カスタム)を関連付ける: [ユーザー] > [secops-reader] > [権限] > [権限を追加] > [ポリシーを直接関連付ける] > [ポリシーを作成]
  6. JSON:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::elastic-auditbeat-logs/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::elastic-auditbeat-logs"
        }
      ]
    }
    
  7. 名前 = secops-reader-policy

  8. [ポリシーを作成> 検索/選択> 次へ> 権限を追加] をクリックします。

  9. secops-reader のアクセスキーを作成します。[セキュリティ認証情報] > [アクセスキー] に移動します。

  10. [アクセスキーを作成] をクリックします。

  11. .CSV をダウンロードします。(これらの値はフィードに貼り付けます)。

Elastic Auditbeat のログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [+ 新しいフィードを追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Elastic Auditbeat Logs)。
  4. [ソースタイプ] として [Amazon S3 V2] を選択します。
  5. [ログタイプ] として [Elastic Audit Beats] を選択します。
  6. [次へ] をクリックします。
  7. 次の入力パラメータの値を指定します。
    • S3 URI: s3://elastic-auditbeat-logs/auditbeat/
    • Source deletion options: 必要に応じて削除オプションを選択します。
    • ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。
    • アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー。
    • シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。
  9. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
@timestamp metadata.event_timestamp イベントのタイムスタンプは @timestamp フィールドから解析されます。
agent.id observer.asset_id 「agent_id: 」の接頭辞が付いています。
agent.type observer.application オブザーバー アプリケーションはエージェント タイプに設定されます。
agent.version observer.platform_version オブザーバー プラットフォームのバージョンは、エージェントのバージョンに設定されます。
client.bytes principal.labels キー「Bytes」のラベルとして追加されます。文字列に変換されます。
client.ip principal.ip プリンシパル IP がクライアント IP に設定されます。
client.packets principal.labels キー「Packets」のラベルとして追加されます。文字列に変換されます。
client.port principal.port プリンシパル ポートはクライアント ポートに設定されます。整数に変換されます。
cloud.availability_zone principal.cloud.availability_zone プリンシパル クラウドの可用性ゾーンがクラウドの可用性ゾーンに設定されます。
cloud.instance.id principal.resource.id プリンシパル リソース ID はクラウド インスタンス ID に設定されます。
cloud.machine.type principal.resource.resource_subtype プリンシパル リソース サブタイプは、クラウド マシンタイプに設定されます。
cloud.region principal.cloud.availability_zone クラウド リージョンが存在する場合、アベイラビリティ ゾーンはオーバーライドされます。
destination.bytes target.labels キー「Bytes」のラベルとして追加されます。文字列に変換されます。
destination.ip target.ip ターゲット IP は宛先 IP に設定されます。
destination.packets target.labels キー「Packets」のラベルとして追加されます。文字列に変換されます。
destination.port target.port ターゲット ポートは宛先ポートに設定されます。整数に変換されます。
ecs.version metadata.product_version 存在する場合は、jsonPayload.@metadata.version の値をオーバーライドします。
event1.category security_result.category_details すべての値が category_details に追加されます。
event1.duration network.session_duration.seconds 整数に変換されます。
event1.id metadata.product_log_id メタデータ プロダクトログ ID がイベント ID に設定されます。
event1.outcome extensions.auth.auth_details 認証の詳細はイベントの結果に設定されます。
file.extension target.file.mime_type ターゲット ファイルの MIME タイプはファイル拡張子に設定されます。
file.hash.sha1 target.file.sha1 ターゲット ファイルの SHA-1 は、ファイルの SHA-1 ハッシュに設定されます。
file.path target.file.full_path ターゲット ファイルのフルパスがパスに設定されます。
file.size target.file.size uinteger に変換されます。
group.id principal.group.product_object_id プリンシパル グループの商品オブジェクト ID がグループ ID に設定されます。
group.name principal.group.group_display_name プリンシパル グループの表示名はグループ名に設定されます。
host.architecture principal.asset.hardware.cpu_platform 一時変数 hardware.cpu_platform に保存され、principal.asset.hardware に統合されます。
host.hostname principal.hostname プリンシパルのホスト名はホストのホスト名に設定されます。
host.id principal.asset.asset_id 「Host Id: 」の接頭辞が付いています。
host.ip principal.asset.ip すべての値がプリンシパル アセットの IP に追加されます。
host.mac principal.mac ダッシュはコロンに置き換えられます。
host.name principal.hostnameobserver.hostname 存在する場合は、host.hostname の値をオーバーライドします。
host.os.kernel principal.platform_patch_level プリンシパル プラットフォームのパッチレベルは、ホスト OS カーネルに設定されます。
host.os.version principal.platform_version プリンシパル プラットフォーム バージョンは、ホスト OS バージョンに設定されます。一時変数 host_os_version に保存されます。
httpRequest.remoteIp target.ip この値が存在し、他のターゲット IP が設定されていない場合は、この値が使用されます。
httpRequest.requestMethod network.http.method ネットワーク HTTP メソッドが HTTP リクエスト メソッドに設定されます。
httpRequest.requestSize network.sent_bytes uinteger に変換されます。
httpRequest.requestUrl network.http.referral_url ネットワーク HTTP リファラル URL が HTTP リクエスト URL に設定されます。
httpRequest.responseSize network.received_bytes uinteger に変換されます。
httpRequest.serverIp principal.ip この値が存在し、他のプリンシパル IP が設定されていない場合は、この値が使用されます。
httpRequest.status network.http.response_code 整数に変換されます。
httpRequest.userAgent network.http.user_agent ネットワーク HTTP ユーザー エージェントが HTTP リクエスト ユーザー エージェントに設定されます。
insertId network.session_id ネットワーク セッション ID は挿入 ID に設定されます。
jsonPayload.@metadata.beat metadata.product_event_type メタデータ プロダクト イベントタイプはメタデータ ビートに設定されます。
jsonPayload.@metadata.version metadata.product_version メタデータ プロダクト バージョンがメタデータ バージョンに設定されます。
jsonPayload.destination.ip target.ip この値が存在し、他のターゲット IP が設定されていない場合は、この値が使用されます。
jsonPayload.destination.port target.port この値が存在し、他のターゲット ポートが設定されていない場合は、この値が使用されます。整数に変換されます。
jsonPayload.event1.category security_result.category_details すべての値が category_details に追加されます。
jsonPayload.file.path target.file.full_path この値が存在し、他のターゲット パスが設定されていない場合は、この値が使用されます。
jsonPayload.process.executable principal.process.file.full_pathtarget.process.file.full_path 他の値が存在しない場合に、プリンシパルとターゲット プロセスの両方のフルパスを設定するために使用されます。
jsonPayload.process.name principal.application この値が存在し、他のプリンシパル アプリケーションが設定されていない場合、この値が使用されます。
jsonPayload.process.parent.pid principal.process.pid 存在し、他のプリンシパル プロセス PID が設定されていない場合、この値が使用されます。文字列に変換されます。
jsonPayload.process.parent.ppid principal.process.parent_process.pid この値が存在し、他のプリンシパルの親プロセス PID が設定されていない場合、この値が使用されます。文字列に変換されます。
jsonPayload.process.parent.process.executable principal.process.file.full_path この値が存在し、他のプリンシパル プロセスのフルパスが設定されていない場合、この値が使用されます。
jsonPayload.process.parent.process.exe principal.process.file.full_path この値が存在し、他のプリンシパル プロセスのフルパスが設定されていない場合、この値が使用されます。
jsonPayload.process.parent.process.title principal.process.command_line この値が存在し、他のプリンシパル プロセス コマンドラインが設定されていない場合、この値が使用されます。
jsonPayload.process.pid target.process.pid ターゲット プロセスの PID が JSON ペイロードのプロセス PID に設定されます。
jsonPayload.process.title target.process.command_line ターゲット プロセスのコマンドラインは、JSON ペイロードのプロセス タイトルに設定されます。
jsonPayload.user.id target.user.userid この値が存在し、他のターゲット ユーザー ID が設定されていない場合は、この値が使用されます。文字列に変換されます。
jsonPayload.user.name target.user.user_display_name この値が存在し、他のターゲット ユーザーの表示名が設定されていない場合は、この値が使用されます。
msg metadata.description メタデータの説明がメッセージに設定されます。
network.bytes network.sent_bytes uinteger に変換されます。
network.community_id network.community_id ネットワーク コミュニティ ID は、ネットワーク コミュニティ ID に設定されます。
network.transport network.ip_protocol 大文字に変換されました。
package.description security_result.description セキュリティ結果の説明は、パッケージの説明に設定されます。
package.name security_result.rule_name セキュリティ結果のルール名はパッケージ名に設定されます。
package.reference security_result.about.url セキュリティ結果の URL がパッケージ参照に設定されます。
package.size security_result.about.file.size uinteger に変換されます。
package.type security_result.about.file.mime_typesecurity_result.rule_type セキュリティ結果の MIME タイプとルールタイプはパッケージ タイプに設定されます。
process.created principal.asset.creation_time 存在する場合、この値が使用されます。ISO8601 として解析されます。
process.entity_id principal.process.product_specific_process_id 「Process:」の接頭辞が付いています。
process.executable principal.process.file.full_pathtarget.process.file.full_path 他の値が存在しない場合に、プリンシパルとターゲット プロセスの両方のフルパスを設定するために使用されます。
process.hash.sha1 principal.process.file.sha1 プリンシパル プロセスの SHA-1 がプロセス SHA-1 ハッシュに設定されます。
process.name principal.application この値が存在し、他のプリンシパル アプリケーションが設定されていない場合、この値が使用されます。
process.pid principal.process.pid 存在し、他のプリンシパル プロセス PID が設定されていない場合、この値が使用されます。文字列に変換されます。
process.ppid principal.process.parent_process.pid この値が存在し、他のプリンシパルの親プロセス PID が設定されていない場合、この値が使用されます。文字列に変換されます。
process.start principal.asset.creation_time process.created が存在せず、このフィールドが存在する場合、この値が使用されます。ISO8601 として解析されます。
resource.labels.backend_service_name target.resource.name ターゲット リソース名は、リソース バックエンド サービス名に設定されます。
resource.labels.forwarding_rule_name target.resource.attribute.labels キー「Forwarding rule name」のラベルとして追加されます。
resource.labels.project_id target.resource.product_object_id ターゲット リソース プロダクト オブジェクト ID がリソース プロジェクト ID に設定されます。
resource.labels.target_proxy_name target.resource.attribute.labels キー「Target proxy name」のラベルとして追加されます。
resource.labels.url_map_name target.resource.attribute.labels キー「URL map name」のラベルとして追加されます。
server.bytes intermediary.labels キー「Bytes」のラベルとして追加されます。文字列に変換されます。
server.ip intermediary.ip 仲介 IP はサーバー IP に設定されます。
server.packets intermediary.labels キー「Packets」のラベルとして追加されます。文字列に変換されます。
server.port intermediary.port 仲介ポートはサーバーポートに設定されます。整数に変換されます。
service.type target.application ターゲット アプリケーションはサービスタイプに設定されます。
source.bytes src.labels キー「Bytes」のラベルとして追加されます。文字列に変換されます。
source.ip src.ip 送信元 IP が送信元 IP に設定されます。
source.packets src.labels キー「Packets」のラベルとして追加されます。文字列に変換されます。
source.port src.port 送信元ポートは送信元ポートに設定されます。整数に変換されます。
system.audit.host.boottime about.asset.last_boot_time ISO8601 として解析されます。
system.audit.host.hostname about.hostname about hostname がシステム監査ホストのホスト名に設定されます。
system.audit.host.id principal.user.userid プリンシパル ユーザー ID はシステム監査ホスト ID に設定されます。
system.audit.host.mac.0 about.mac about MAC アドレスは、最初のシステム監査ホストの MAC アドレスに設定されます。
trace target.process.file.full_path この値が存在し、他のターゲット プロセスのフルパスが設定されていない場合は、この値が使用されます。
user.effective.id target.user.userid この値が存在し、他のターゲット ユーザー ID が設定されていない場合は、この値が使用されます。
user.effective.name target.user.user_display_name この値が存在し、他のターゲット ユーザーの表示名が設定されていない場合は、この値が使用されます。
user.id target.user.userid この値が存在し、他のターゲット ユーザー ID が設定されていない場合は、この値が使用されます。文字列に変換されます。
user.name target.user.user_display_name この値が存在し、他のターゲット ユーザーの表示名が設定されていない場合は、この値が使用されます。
なし metadata.event_type 最初は「GENERIC_EVENT」に設定されます。パーサーコードのコメントに記載されているロジックに基づいて変更されました。
なし metadata.log_type 「ELASTIC_AUDITBEAT」に設定されます。
なし metadata.product_name 「Auditbeat」に設定します。
なし metadata.vendor_name 「Elastic」に設定します。
なし extensions.auth.type USER_LOGIN イベントと USER_LOGOUT イベントの場合は、「AUTHTYPE_UNSPECIFIED」に設定されます。
auditd.data.syscall metadata.product_event_type メタデータ プロダクト イベントタイプは auditd syscall に設定されます。

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