Ansible AWX のログを収集する

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

概要

このパーサーは、Ansible AWX から JSON 形式のログデータを抽出し、Unified Data Model(UDM)に変換します。さまざまなログ形式を処理し、タイムスタンプ、IP アドレス、ホスト情報、イベントの詳細などの関連フィールドを抽出し、対応する UDM フィールドにマッピングします。また、特定のエッジケースを処理し、ラベルとメタデータでデータを拡充します。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス。
  • Ansible AWX への特権アクセス。

フィードを設定する

Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。

  • [SIEM 設定] > [フィード]
  • [Content Hub] > [Content Packs]

[SIEM 設定] > [フィード] でフィードを設定する

フィードを構成する手順は次のとおりです。

  1. [SIEM Settings] > [Feeds] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで [単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Ansible AWX Logs)。
  5. [ソースタイプ] として [Webhook] を選択します。
  6. [Log type] として [Ansible AWX] を選択します。
  7. [次へ] をクリックします。
  8. 省略可: 次の入力パラメータの値を指定します。
    • Split delimiter: ログ行を区切るために使用される区切り文字(\n など)。
  9. [次へ] をクリックします。
  10. [Finalize] 画面でフィードの設定を確認し、[Submit] をクリックします。
  11. [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
  12. 秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
  13. [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。
  14. [完了] をクリックします。

コンテンツ ハブからフィードを設定する

次のフィールドに値を指定します。

  • Split delimiter: ログ行を区切るために使用される区切り文字(\n など)。

詳細オプション

  • フィード名: フィードを識別する事前入力された値。
  • ソースタイプ: Google SecOps にログを収集するために使用される方法。
  • アセットの名前空間: フィードに関連付けられた名前空間。
  • Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。

  • [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。

  • 秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。

  • [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。

Webhook フィード用の API キーを作成する

  1. Google Cloud コンソール > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] をクリックして [API キー] を選択します。

  3. API キーのアクセスを Google Security Operations API に制限します。

エンドポイント URL を指定する

  1. クライアント アプリケーション内で、Webhook フィードで提供される HTTPS エンドポイント URL を指定します。
  2. 次の形式でカスタム ヘッダーの一部として API キーと秘密鍵を指定して、認証を有効にします。

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    推奨事項: API キーは URL 内ではなくヘッダーとして指定してください。Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーと秘密鍵を指定できます。

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

以下を置き換えます。

  • ENDPOINT_URL: フィード エンドポイントの URL。
  • API_KEY: Google Security Operations に対する認証に使用する API キー。
  • SECRET: フィードの認証用に生成した秘密鍵。

Ansible AWX で Webhook を構成する

  1. AWX インスタンスにログインします。
  2. [管理] の [通知] セクションに移動します。
  3. [追加] をクリックします。
  4. Webhook の設定を構成します。

    • 名前: Webhook のわかりやすい名前を指定します(例: Google SecOps Webhook)。
    • タイプ: リストから [Webhook] を選択します。
    • ターゲット URL: Google SecOps API エンドポイント URL を入力します。
    • HTTP Method: [POST] を選択します。

    省略可: HTTP ヘッダー: 認証またはコンテンツ タイプに必要なヘッダーを追加します。たとえば、署名なしトークンを含む Authorization ヘッダーを含める必要がある場合があります。特定のヘッダー要件については、Google SecOps のドキュメントをご覧ください。

  5. [保存] をクリックして、Webhook を作成します。

  6. [リソース] の [プロジェクト] に移動します。

  7. Webhook を関連付けるプロジェクトを選択します。

  8. 選択したプロジェクト内で、[通知] タブに移動します。

  9. 先ほど作成した Webhook 通知の Start | Success | Failure で、どのトリガーをオンにするかを選択します。

通知は、プロジェクトに関連付けられているすべてのテンプレートに適用されるようになります。各テンプレートの [通知] フィールドに移動して、手動で無効にできます。

UDM マッピング テーブル

ログフィールド UDM マッピング 論理
agent.ephemeral_id observer.labels.value 未加工ログの agent.ephemeral_id の値。
agent.hostname observer.hostname 未加工ログの agent.hostname の値。
agent.id observer.asset_id 「filebeat:」と未加工ログの agent.id の値を連結したものです。
agent.name observer.user.userid 未加工ログの agent.name の値。
agent.type observer.application 未加工ログの agent.type の値。
agent.version observer.platform_version 未加工ログの agent.version の値。
cloud.availability_zone principal.resource.attribute.labels.value 未加工ログの cloud.availability_zone の値。
cloud.instance.id principal.resource.product_object_id 未加工ログの cloud.instance.id の値。
cloud.instance.name principal.resource.name 未加工ログの cloud.instance.name の値。
cloud.machine.type principal.resource.attribute.labels.value 未加工ログの cloud.machine.type の値。
cloud.provider principal.resource.attribute.labels.value 未加工ログの cloud.provider の値。
event1 metadata.description 未加工ログの event1 の値。event1 が存在しない場合は、message の値が使用されます。
event1_data.host principal.hostname 未加工ログの event1_data.host の値。host_namehost が存在しない場合のフォールバックとして使用されます。
event1_data.remote_addr principal.ip grok パターンを使用して event1_data.remote_addr から抽出された IP アドレス。
event1_data.task security_result.detection_fields.value 未加工ログの event1_data.task の値。
event1_data.task_path principal.process.file.full_path 未加工ログの event1_data.task_path の値。
event1_data.task_uuid security_result.detection_fields.value 未加工ログの event1_data.task_uuid の値。
event1_data.uuid metadata.product_log_id 未加工ログの event1_data.uuid の値。
event1_display security_result.description 未加工ログの event1_display の値。
host principal.hostname 未加工ログの host の値。host_name が存在しない場合、代替として使用されます。数値の場合は文字列に変換されます。
host.architecture target.asset.hardware.cpu_platform 未加工ログの host.architecture の値。
host.fqdn target.administrative_domain 未加工ログの host.fqdn の値。
host.hostname target.hostname 未加工ログの host.hostname の値。
host.id target.asset.asset_id 「Host Id: 」と未加工ログの host.id の値を連結した値。
host.ip target.asset.ip 未加工ログの host.ip 配列の値。
host.mac target.mac 未加工ログの host.mac 配列の値。
host.os.codename target.asset.attribute.labels.value 未加工ログの host.os.codename の値。
host.os.kernel target.platform_patch_level 未加工ログの host.os.kernel の値。
host.os.name target.asset.attribute.labels.value 未加工ログの host.os.name の値。
host.os.platform target.platform host.os.platform の値が「debian」の場合、UDM フィールドは「LINUX」に設定されます。
host.os.version target.platform_version 未加工ログの host.os.version の値。
host_name principal.hostname 未加工ログの host_name の値。
input.type network.ip_protocol input.type の値が「tcp」の場合、UDM フィールドは「TCP」に設定されます。
level security_result.severity level の値に基づいて、「DEBUG」、「INFO」、「AUDIT」は「INFORMATIONAL」に、「ERROR」は「ERROR」に、「WARNING」は「MEDIUM」にマッピングされます。
level security_result.severity_details 未加工ログの level の値。
log.source.address principal.ip grok パターンを使用して log.source.address から抽出された IP アドレス。
log.source.address principal.port grok パターンを使用して log.source.address から抽出されたポート。
logger_name intermediary.application 未加工ログの logger_name の値。
message metadata.description 未加工ログの message の値。event1 が存在しない場合、代替として使用されます。
metadata.event_type metadata.event_type 特定のフィールドの有無に基づいてパーサー ロジックによって決定されます。log.source.addresshost.ip が存在する場合は「NETWORK_CONNECTION」。principal_hostname または event1_data.remote_addr が存在する場合は「STATUS_UPDATE」。それ以外の場合は「GENERIC_EVENT」。
metadata.log_type metadata.log_type 「ANSIBLE_AWX」にハードコードされています。
metadata.product_name metadata.product_name 「ANSIBLE_AWX」にハードコードされています。
metadata.vendor_name metadata.vendor_name 「ANSIBLE_AWX」にハードコードされています。
parent_uuid security_result.detection_fields.value 未加工ログの parent_uuid の値。
principal.resource.resource_type principal.resource.resource_type cloud.instance.name が存在する場合は「VIRTUAL_MACHINE」にハードコードされました。
observer.labels.key observer.labels.key 「ephemeral_id」にハードコードされています。
principal.resource.attribute.labels.key principal.resource.attribute.labels.key マッピングされるフィールドに応じて、「machine_type」、「provider」、「availability_zone」にハードコードされます。
security_result.detection_fields.key security_result.detection_fields.key マッピングされるフィールドに応じて、「parent_uuid」、「task」、「task_uuid」にハードコードされます。
target.asset.attribute.labels.key target.asset.attribute.labels.key マッピングされるフィールドに応じて、「codename」または「os_name」にハードコードされます。
timestamp metadata.event_timestamp 未加工ログの timestamp の値。解析され、タイムスタンプに変換されます。
timestamp timestamp 未加工ログの timestamp の値。解析され、タイムスタンプに変換されます。

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