收集 Versa Networks Secure Access Service Edge (SASE) 記錄
本文說明如何收集 Versa Networks Secure Access Service Edge (SASE) 記錄。剖析器會在初始 grok 篩選器後擷取鍵/值組合。接著,這些值會對應至統一資料模型 (UDM),處理各種記錄格式 (例如防火牆事件、應用程式記錄和警報記錄),並針對特定欄位 (例如 IP 通訊協定和風險評分) 執行轉換和擴充作業。
事前準備
- 確認您有 Google Security Operations 執行個體。
- 確認您使用的是 Windows 2016 以上版本,或是搭載
systemd的 Linux 主機。 - 如果透過 Proxy 執行,請確認防火牆通訊埠已開啟。
- 確認您具備 Versa SASE 的特殊權限。
取得 Google SecOps 擷取驗證檔案
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「收集代理程式」。
- 下載擷取驗證檔案。將檔案安全地儲存在要安裝 Bindplane 代理程式的系統上。
取得 Google SecOps 客戶 ID
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「設定檔」。
- 複製並儲存「機構詳細資料」專區中的客戶 ID。
安裝 Bindplane 代理程式
Windows 安裝
- 以系統管理員身分開啟「命令提示字元」或「PowerShell」。
執行下列指令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 安裝
- 開啟具有根層級或 sudo 權限的終端機。
執行下列指令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安裝資源
- 如需其他安裝選項,請參閱這份安裝指南。
設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps
存取設定檔:
- 找出
config.yaml檔案。通常位於 Linux 的/etc/bindplane-agent/目錄,或 Windows 的安裝目錄。 - 使用文字編輯器 (例如
nano、vi或記事本) 開啟檔案。
- 找出
按照下列方式編輯
config.yaml檔案:receivers: tcplog: # Replace the port and IP address as required listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: `/path/to/ingestion-authentication-file.json` # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: SYSLOG namespace: versa_networks_sase raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels視基礎架構需求,替換通訊埠和 IP 位址。
將
<customer_id>替換為實際的客戶 ID。將
/path/to/ingestion-authentication-file.json更新為「取得 Google SecOps 擷取驗證檔案」一節中儲存驗證檔案的路徑。
重新啟動 Bindplane 代理程式,以套用變更
在 Linux 中,如要重新啟動 Bindplane 代理程式,請執行下列指令:
sudo systemctl restart bindplane-agent在 Windows 中,如要重新啟動 Bindplane 代理程式,可以使用「服務」主控台,也可以輸入下列指令:
net stop BindPlaneAgent && net start BindPlaneAgent
設定 Versa Networks SASE
管理員必須在每個 Versa Analytics 節點上設定遠端收集器,才能將記錄轉送至第三方系統。
如要設定 Versa Analytics 節點,請按照下列步驟操作:
- 啟用記錄轉送功能
- 啟用工作階段 ID 記錄功能
啟用記錄轉送功能
- 登入 Versa Analytics 伺服器。
- 執行
cli指令,前往 CLI。 - 執行
configure指令,切換至「設定模式」,然後輸入load merge terminal。 複製並貼上下列指令,設定記錄轉送:
- 將
<collector_ip>和<collector_port>替換為系統記錄收集器 (Bindplane) 的 IP 位址和通訊埠。
set system analytics log-collector-exporter destination-address <collector_ip> set system analytics log-collector-exporter destination-port <collector_port> set system analytics log-collector-exporter transport tcp set system analytics log-collector-exporter log-types firewall-log set system analytics log-collector-exporter log-types threat-log commit- 將
儲存設定:
save
啟用工作階段 ID 記錄功能
如要記錄 IP 相關資訊,請啟用工作階段 ID 記錄功能。
- 登入 Versa Director。
- 切換至「導演模式」。
- 依序前往「Configuration」>「Devices」>「Tenant」>「Device」,存取「Appliance View」。
- 依序選取「Configuration」>「Others」>「System」>「Configuration」>「Configuration」。
- 在「參數」窗格中,按一下「編輯」。
- 在「編輯參數」視窗中,選取「LEF」。
在「Firewall」(防火牆) 專區中,選取「Include session ID logging」(包含工作階段 ID 記錄) 核取方塊。
按一下 [確定]。
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
accCkt |
additional.fields[].key: "accCkt"additional.fields[].value.string_value: accCkt |
直接從 accCkt 欄位取得的值。 |
accCktId |
additional.fields[].key: "accCktId"additional.fields[].value.string_value: accCktId |
直接從 accCktId 欄位取得的值。 |
accCktName |
additional.fields[].key: "accCktName"additional.fields[].value.string_value: accCktName |
直接從 accCktName 欄位取得的值。 |
accessType |
additional.fields[].key: "accessType"additional.fields[].value.string_value: accessType |
直接從 accessType 欄位取得的值。 |
action |
security_result.action:action |
如果 action、type、idpAction、avAction 或 urlAction 為「允許」,則為 ALLOW。如果 action、type、idpAction、avAction 或 urlAction 為「拒絕」、「捨棄」、「封鎖」或「拒絕」,則為 BLOCK。如果 idpAction 是其他值,則為 UNKNOWN_ACTION。 |
alarmCause |
security_result.detection_fields[].key: "alarmCause"security_result.detection_fields[].value: alarmCause |
直接從 alarmCause 欄位取得的值。 |
alarmClass |
security_result.detection_fields[].key:「alarmClass」security_result.detection_fields[].value:alarmClass |
直接從 alarmClass 欄位取得的值。 |
alarmClearable |
security_result.detection_fields[].key: "alarmClearable"security_result.detection_fields[].value: alarmClearable |
直接從 alarmClearable 欄位取得的值。 |
alarmEventType |
metadata.product_event_type:alarmEventType |
直接從 alarmEventType 欄位取得的值。 |
alarmKey |
security_result.detection_fields[].key:「alarmKey」security_result.detection_fields[].value:alarmKey |
直接從 alarmKey 欄位取得的值。 |
alarmKind |
security_result.detection_fields[].key: "alarmKind"security_result.detection_fields[].value: alarmKind |
直接從 alarmKind 欄位取得的值。 |
alarmOwner |
security_result.detection_fields[].key: "alarmOwner"security_result.detection_fields[].value: alarmOwner |
直接從 alarmOwner 欄位取得的值。 |
alarmSeqNo |
security_result.detection_fields[].key: "alarmSeqNo"security_result.detection_fields[].value: alarmSeqNo |
直接從 alarmSeqNo 欄位取得的值。 |
alarmSeverity |
security_result.severity_details:alarmSeverity |
直接從 alarmSeverity 欄位取得的值。 |
alarmText |
security_result.summary:alarmText |
直接從 alarmText 欄位取得的值,並移除雙引號。 |
alarmType |
security_result.description:alarmType |
直接從 alarmType 欄位取得的值。 |
appFamily |
metadata.product_event_type:appFamilysecurity_result.detection_fields[].key:「appFamily」security_result.detection_fields[].value:appFamily |
直接從 appFamily 欄位取得的值。 |
appId |
security_result.detection_fields[].key: "Application ID"security_result.detection_fields[].value: appId |
直接從 appId 欄位取得的值。 |
appIdStr |
security_result.detection_fields[].key: "appIdStr"security_result.detection_fields[].value: appIdStr |
直接從 appIdStr 欄位取得的值。 |
applianceName |
principal.hostname:applianceName |
直接取自 applianceName、siteName 或 site 欄位的值。 |
appProductivity |
security_result.detection_fields[].key: "appProductivity"security_result.detection_fields[].value: appProductivity |
直接從 appProductivity 欄位取得的值。 |
appRisk |
security_result.severity_details:appRisk |
直接從 appRisk 欄位取得的值。 |
appSubFamily |
security_result.detection_fields[].key: "appSubFamily"security_result.detection_fields[].value: appSubFamily |
直接從 appSubFamily 欄位取得的值。 |
avAccuracy |
additional.fields[].key: "avAccuracy"additional.fields[].value.string_value: avAccuracy |
直接從 avAccuracy 欄位取得的值。 |
avAction |
security_result.action:avAction |
如需邏輯,請參閱 action。 |
avMalwareName |
security_result.threat_name:avMalwareName |
直接從 avMalwareName 欄位取得的值。 |
avMalwareType |
security_result.category_details:avMalwareType |
直接從 avMalwareType 欄位取得的值。 |
classMsg |
security_result.description:classMsg |
直接從 classMsg 欄位取得的值,並移除雙引號。 |
clientIPv4Address |
target.ip:clientIPv4Address |
直接從 clientIPv4Address 欄位取得的值。 |
destIp |
target.ip:destIpdestinationIPv4Address:destIp |
直接從 destIp 欄位取得的值。 |
destinationIPv4Address |
target.ip:destinationIPv4Address |
直接取自 destinationIPv4Address 的值,或從 networkPrefix 欄位衍生而來。 |
destinationIPv6Address |
target.ip:destinationIPv6Address |
直接從 destinationIPv6Address 欄位取得的值。 |
destinationPort |
target.port:destinationPort |
直接從 destinationPort 欄位取得值,並轉換為整數。 |
destinationTransportPort |
target.port:destinationTransportPort |
直接從 destinationTransportPort 欄位取得值,並轉換為整數。 |
deviceKey |
about.resource.attribute.labels[].key: "deviceKey"about.resource.attribute.labels[].value: deviceKey |
如果不是「Unknown」,則直接從 deviceKey 欄位取得值。 |
deviceName |
about.resource.attribute.labels[].key:「deviceName」about.resource.attribute.labels[].value:deviceName |
如果不是「Unknown」,則直接從 deviceName 欄位取得值。 |
duration |
network.session_duration.seconds:duration |
直接從 duration 欄位取得值,並轉換為整數。 |
egressInterfaceName |
additional.fields[].key:「egressInterfaceName」additional.fields[].value.string_value:egressInterfaceName |
直接從 egressInterfaceName 欄位取得的值。 |
event.type |
metadata.event_type:event.type |
如果同時存在 applianceName (或 sourceIPv4Address、user、sourceIPv6Address) 和 destinationIPv4Address (或 remoteSite、destinationIPv6Address、clientIPv4Address、hostname),則為 NETWORK_CONNECTION。否則為 STATUS_UPDATE。如果 applianceName 為空,則為 GENERIC_EVENT。 |
eventType |
principal.resource.attribute.labels[].key: "eventType"principal.resource.attribute.labels[].value: eventType |
直接從 eventType 欄位取得的值。 |
family |
security_result.detection_fields[].key:「family」security_result.detection_fields[].value:family |
直接從 family 欄位取得的值。 |
fc |
security_result.detection_fields[].key: "ForwardingClass"security_result.detection_fields[].value: fc |
直接從 fc 欄位取得的值。 |
fileTransDir |
additional.fields[].key: "fileTransDir"additional.fields[].value.string_value: fileTransDir |
直接從 fileTransDir 欄位取得的值。 |
filename |
target.file.names:filename |
直接從 filename 欄位取得的值。 |
flowCookie |
metadata.collected_timestamp:flowCookie |
直接從 flowCookie 欄位取得值,並使用 UNIX 格式轉換為時間戳記。 |
flowId |
principal.resource.product_object_id:flowId |
直接從 flowId 欄位取得的值。 |
forwardForwardingClass |
security_result.detection_fields[].key: "forwardForwardingClass"security_result.detection_fields[].value: forwardForwardingClass |
直接從 forwardForwardingClass 欄位取得的值。 |
fromCountry |
principal.location.country_or_region:fromCountrytarget.location.country_or_region:fromCountry |
直接從 fromCountry 欄位取得的值。 |
fromUser |
principal.user.userid:fromUser |
如果「fromUser」欄位不為空、不是「unknown」或「Unknown」,則值會直接取自該欄位。 |
fromZone |
additional.fields[].key: "fromZone"additional.fields[].value.string_value: fromZone |
直接從 fromZone 欄位取得的值。 |
generateTime |
metadata.collected_timestamp:generateTime |
直接從 generateTime 欄位取得值,並使用 UNIX 格式轉換為時間戳記。 |
hostname |
target.hostname:hostname |
直接從 hostname 欄位取得的值。 |
httpUrl |
target.url:httpUrl |
直接從 httpUrl 欄位取得的值。 |
icmpTypeIPv4 |
additional.fields[].key: "icmpTypeIPv4"additional.fields[].value.string_value: icmpTypeIPv4 |
直接從 icmpTypeIPv4 欄位取得的值。 |
idpAction |
security_result.action:idpAction |
如需邏輯,請參閱 action。 |
ingressInterfaceName |
additional.fields[].key: "ingressInterfaceName"additional.fields[].value.string_value: ingressInterfaceName |
直接從 ingressInterfaceName 欄位取得的值。 |
ipsApplication |
additional.fields[].key: "ipsApplication"additional.fields[].value.string_value: ipsApplication |
直接從 ipsApplication 欄位取得的值。 |
ipsDirection |
security_result.detection_fields[].key: "ipsDirection"security_result.detection_fields[].value: ipsDirection |
直接從 ipsDirection 欄位取得的值。 |
ipsProfile |
security_result.detection_fields[].key: "ipsProfile"security_result.detection_fields[].value: ipsProfile |
直接從 ipsProfile 欄位取得的值。 |
ipsProfileRule |
security_result.rule_name:ipsProfileRule |
直接從 ipsProfileRule 欄位取得的值。 |
ipsProtocol |
network.ip_protocol:ipsProtocol |
直接從 ipsProtocol 欄位取得的值。 |
log_type |
metadata.description:log_typemetadata.log_type:log_type |
直接從 log_type 欄位取得的值。 |
mstatsTimeBlock |
metadata.collected_timestamp:mstatsTimeBlock |
直接從 mstatsTimeBlock 欄位取得值,並使用 UNIX 格式轉換為時間戳記。 |
mstatsTotRecvdOctets |
network.received_bytes:mstatsTotRecvdOctets |
直接從 mstatsTotRecvdOctets 欄位取得值,並轉換為無正負號整數。 |
mstatsTotSentOctets |
network.sent_bytes:mstatsTotSentOctets |
直接從 mstatsTotSentOctets 欄位取得值,並轉換為無正負號整數。 |
mstatsTotSessCount |
additional.fields[].key: "mstatsTotSessCount"additional.fields[].value.string_value: mstatsTotSessCount |
直接從 mstatsTotSessCount 欄位取得的值。 |
mstatsTotSessDuration |
network.session_duration.seconds:mstatsTotSessDuration |
直接從 mstatsTotSessDuration 欄位取得值,並轉換為整數。 |
mstatsType |
security_result.category_details:mstatsType |
直接從 mstatsType 欄位取得的值。 |
networkPrefix |
target.ip:networkPrefixtarget.port:networkPrefix |
從 networkPrefix 欄位擷取的 IP 位址。從 networkPrefix 欄位擷取並轉換為整數的連接埠。 |
protocolIdentifier |
network.ip_protocol:protocolIdentifier |
直接從 protocolIdentifier 欄位取得值,轉換為整數,然後使用查閱功能對應至 IP 通訊協定名稱。 |
recvdOctets |
network.received_bytes:recvdOctets |
直接從 recvdOctets 欄位取得值,並轉換為無正負號整數。 |
recvdPackets |
network.received_packets:recvdPackets |
直接從 recvdPackets 欄位取得值,並轉換為整數。 |
remoteSite |
target.hostname:remoteSite |
直接從 remoteSite 欄位取得的值。 |
reverseForwardingClass |
security_result.detection_fields[].key: "reverseForwardingClass"security_result.detection_fields[].value: reverseForwardingClass |
直接從 reverseForwardingClass 欄位取得的值。 |
risk |
security_result.risk_score:risk |
直接從 risk 欄位取得值,並轉換為浮點數。 |
rule |
security_result.rule_name:rule |
直接從 rule 欄位取得的值。 |
sentOctets |
network.sent_bytes:sentOctets |
直接從 sentOctets 欄位取得值,並轉換為無正負號整數。 |
sentPackets |
network.sent_packets:sentPackets |
直接從 sentPackets 欄位取得值,並轉換為整數。 |
serialNum |
security_result.detection_fields[].key: "serialNum"security_result.detection_fields[].value: serialNum |
直接從 serialNum 欄位取得的值。 |
signatureId |
security_result.detection_fields[].key: "signatureID"security_result.detection_fields[].value: signatureId |
直接從 signatureId 欄位取得的值。 |
signatureMsg |
security_result.detection_fields[].key: "signatureMsg"security_result.detection_fields[].value: signatureMsg |
直接從 signatureMsg 欄位取得的值。 |
signaturePriority |
security_result.severity:signaturePriority |
如果 signaturePriority 為「low」(不區分大小寫),則為 LOW。如果 signaturePriority 為「medium」(不區分大小寫),則 MEDIUM。如果 signaturePriority 為「high」(不區分大小寫),則為 HIGH。 |
site |
principal.hostname:siteapplianceName:site |
直接從 site 欄位取得的值。 |
siteId |
additional.fields[].key: "siteId"additional.fields[].value.string_value: siteId |
直接從 siteId 欄位取得的值。 |
siteName |
principal.hostname:siteNameapplianceName:siteName |
直接從 siteName 欄位取得的值。 |
sourceIPv4Address |
principal.ip:sourceIPv4Address |
直接從 sourceIPv4Address 欄位取得的值。 |
sourceIPv6Address |
principal.ip:sourceIPv6Address |
直接從 sourceIPv6Address 欄位取得的值。 |
sourcePort |
principal.port:sourcePort |
直接從 sourcePort 欄位取得值,並轉換為整數。 |
sourceTransportPort |
principal.port:sourceTransportPort |
直接從 sourceTransportPort 欄位取得值,並轉換為整數。 |
subFamily |
security_result.detection_fields[].key: "subFamily"security_result.detection_fields[].value: subFamily |
直接從 subFamily 欄位取得的值。 |
tcpConnAborted |
additional.fields[].key: "tcpConnAborted"additional.fields[].value.string_value: tcpConnAborted |
如果 tcpConnAborted 欄位不為空白或「0」,則直接從該欄位取得值。 |
tcpConnRefused |
additional.fields[].key: "tcpConnRefused"additional.fields[].value.string_value: tcpConnRefused |
如果 tcpConnRefused 欄位不為空白或「0」,則直接從該欄位取得值。 |
tcpPktsFwd |
network.sent_packets:tcpPktsFwd |
直接從 tcpPktsFwd 欄位取得值,並轉換為整數。 |
tcpPktsRev |
network.received_packets:tcpPktsRev |
直接從 tcpPktsRev 欄位取得值,並轉換為整數。 |
tcpReXmitFwd |
additional.fields[].key: "tcpReXmitFwd"additional.fields[].value.string_value: tcpReXmitFwd |
如果 tcpReXmitFwd 欄位不為空白或「0」,則直接從該欄位取得值。 |
tcpReXmitRev |
additional.fields[].key: "tcpReXmitRev"additional.fields[].value.string_value: tcpReXmitRev |
如果 tcpReXmitRev 欄位不為空白或「0」,則直接從該欄位取得值。 |
tcpSAA |
additional.fields[].key: "tcpSAA"additional.fields[].value.string_value: tcpSAA |
如果 tcpSAA 欄位不為空白或「0」,則直接從該欄位取得值。 |
tcpSSA |
additional.fields[].key: "tcpSSA"additional.fields[].value.string_value: tcpSSA |
如果 tcpSSA 欄位不為空白或「0」,則直接從該欄位取得值。 |
tcpSessCnt |
additional.fields[].key: "tcpSessCnt"additional.fields[].value.string_value: tcpSessCnt |
直接從 tcpSessCnt 欄位取得的值。 |
tcpSessDur |
network.session_duration.seconds:tcpSessDur |
直接從 tcpSessDur 欄位取得值,並轉換為整數。 |
tcpSynAckReXmit |
additional.fields[].key: "tcpSynAckReXmit"additional.fields[].value.string_value: tcpSynAckReXmit |
如果 tcpSynAckReXmit 欄位不為空白或「0」,則直接從該欄位取得值。 |
tcpSynReXmit |
additional.fields[].key: "tcpSynReXmit"additional.fields[].value.string_value: tcpSynReXmit |
如果 tcpSynReXmit 欄位不為空白或「0」,則直接從該欄位取得值。 |
tcpTWHS |
additional.fields[].key: "tcpTWHS"additional.fields[].value.string_value: tcpTWHS |
如果 tcpTWHS 欄位不為空白或「0」,則直接從該欄位取得值。 |
tenantId |
principal.resource.attribute.labels[].key: "tenantId"principal.resource.attribute.labels[].value: tenantId |
直接從 tenantId 欄位取得的值。 |
tenantName |
observer.hostname:tenantName |
直接從 tenantName 欄位取得的值。 |
threatType |
security_result.detection_fields[].key: "threatType"security_result.detection_fields[].value: threatType |
直接從 threatType 欄位取得的值。 |
toCountry |
target.location.country_or_region:toCountry |
直接從 toCountry 欄位取得的值。 |
toZone |
additional.fields[].key: "toZone"additional.fields[].value.string_value: toZone |
直接從 toZone 欄位取得的值。 |
traffType |
additional.fields[].key: "traffType"additional.fields[].value.string_value: traffType |
直接從 traffType 欄位取得的值。 |
ts |
metadata.event_timestamp:ts |
直接從 ts 欄位取得值,並轉換為時間戳記。 |
type |
security_result.action:type |
如需邏輯,請參閱 action。 |
urlAction |
security_result.action:urlAction |
如需邏輯,請參閱 action。 |
urlActionMessage |
security_result.summary:urlActionMessage |
直接從 urlActionMessage 欄位取得的值。 |
urlCategory |
principal.resource.attribute.labels[].key: "urlCategory"principal.resource.attribute.labels[].value: urlCategory |
直接從 urlCategory 欄位取得的值。 |
urlProfile |
additional.fields[].key: "urlProfile"additional.fields[].value.string_value: urlProfile |
直接從 urlProfile 欄位取得的值。 |
urlReputation |
security_result.severity_details:urlReputation |
直接從 urlReputation 欄位取得的值。 |
user |
principal.ip:user |
直接從 user 欄位取得的值。 |
vsnId |
principal.resource.attribute.labels[].key: "vsnId"principal.resource.attribute.labels[].value: vsnId |
直接從 vsnId 欄位取得的值。硬式編碼值。硬式編碼值。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。