收集 Ansible AWX 記錄
總覽
這個剖析器會從 Ansible AWX 擷取 JSON 格式的記錄資料,並轉換為 Unified Data Model (UDM)。可處理各種記錄格式、擷取時間戳記、IP 位址、主機資訊和事件詳細資料等相關欄位,並將這些欄位對應至相應的 UDM 欄位,同時處理特定極端情況,以及使用標籤和中繼資料擴充資料。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體。
- Ansible AWX 的特殊存取權。
設定動態饋給
在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:
- 「SIEM 設定」>「動態消息」
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態饋給」,設定動態饋給
如要設定動態消息,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態消息」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態消息名稱」欄位中,輸入動態消息的名稱 (例如「Ansible AWX Logs」)。
- 選取「Webhook」做為「來源類型」。
- 選取「Ansible AWX」做為「記錄類型」。
- 點選「下一步」。
- 選用:指定下列輸入參數的值:
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
\n
。
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
- 點選「下一步」。
- 在「Finalize」畫面中檢查動態饋給設定,然後按一下「Submit」。
- 按一下「產生密鑰」,產生驗證這個動態消息的密鑰。
- 複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。
- 在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。
- 按一下 [完成]。
從內容中心設定動態饋給
為下列欄位指定值:
- 分割分隔符號:用於分隔記錄行的分隔符號,例如
\n
。
進階選項
- 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
- 來源類型:將記錄收集到 Google SecOps 的方法。
- 資產命名空間:與動態饋給相關聯的命名空間。
擷取標籤:套用至這個動態饋給所有事件的標籤。
按一下「產生密鑰」,產生驗證這個動態消息的密鑰。
複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。
在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。
為 Webhook 資訊提供建立 API 金鑰
依序前往 Google Cloud 控制台 >「憑證」。
按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)。
將 API 金鑰存取權限制在 Google Security Operations API。
指定端點網址
- 在用戶端應用程式中,指定 webhook 動態饋給中提供的 HTTPS 端點網址。
如要啟用驗證,請在自訂標頭中指定 API 金鑰和私密金鑰,格式如下:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
建議:請將 API 金鑰指定為標頭,而非在網址中指定。如果 Webhook 用戶端不支援自訂標頭,您可以使用查詢參數指定 API 金鑰和密鑰,格式如下:
ENDPOINT_URL?key=API_KEY&secret=SECRET
更改下列內容:
ENDPOINT_URL
:動態消息端點網址。API_KEY
:用於向 Google Security Operations 進行驗證的 API 金鑰。SECRET
:您產生的密鑰,用於驗證動態饋給。
在 Ansible AWX 中設定 Webhook
- 登入 AWX 執行個體。
- 前往「管理」下方的「通知」部分。
- 按一下「新增」。
設定 Webhook:
- 名稱:提供 Webhook 的描述性名稱 (例如「Google SecOps Webhook」)。
- 類型:從清單中選取「Webhook」。
- 目標網址:輸入 Google SecOps API 端點網址。
- HTTP 方法:選取「POST」。
選用:HTTP 標頭:新增驗證或內容類型所需的任何標頭。舉例來說,您可能需要加入含有不記名權杖的
Authorization
標頭。如需具體標頭需求,請參閱 Google SecOps 說明文件。按一下「儲存」即可建立 Webhook。
前往「資源」下方的「專案」。
選取要與 Webhook 建立關聯的專案。
在所選專案中,前往「通知」分頁。
選取要開啟的觸發條件,包括先前建立的 Webhook 通知「開始 | 成功 | 失敗」。
現在,通知會套用至與專案相關聯的所有範本。如要手動停用通知,請前往各範本的「通知」欄位。
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_name 和 host ,系統會使用這個值做為備用值。 |
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.address 和 host.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 專業人員尋求答案。