Linux 감사 및 AIX 시스템 로그 수집
이 문서에서는 auditd 및 AIX 시스템에서 Linux 감사 로그를 수집하여 UDM으로 변환하는 방법을 설명합니다. 파서는 JSON 형식 및 일반 텍스트 로그 메시지를 모두 처리하고, grok, XML 파싱, JSON 파싱 기법을 사용하여 필드를 추출하고, 이벤트 유형에 따라 적절한 UDM 필드에 매핑합니다. 파서는 AIX 시스템의 특정 감사 로그 형식도 처리하고 security_result 및 중간 세부정보와 같은 추가 필드로 UDM을 보강합니다.
auditd 로그를 수집하는 기본 방법에는 로컬 로그 파일에서 수집하는 방법과 syslog를 사용하는 방법의 두 가지가 있습니다. 방법과 관계없이 auditd에는 특정 일반 구성이 필요합니다.
시작하기 전에
- Google Security Operations 인스턴스가 있는지 확인합니다.
- Auditd 호스트에 대한 루트 액세스 권한이 있는지 확인합니다.
- Bindplane 에이전트용 systemd가 있는 Windows 2012 SP2 이상 또는 Linux 호스트가 있어야 합니다.
- 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
- syslog 기반 수집의 경우 Auditd 호스트에
rsyslog가 설치되어 있는지 확인합니다.
Google SecOps 수집 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
- 수집 인증 파일을 다운로드합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
Bindplane 에이전트 설치
Bindplane 에이전트는 다양한 소스에서 로그를 수집하여 Google SecOps로 전송합니다. 온프레미스 또는 클라우드에 에이전트를 설치할 수 있습니다. Bindplane 에이전트는 Bindplane 수집기, 수집 에이전트, 수집기 또는 에이전트라고도 합니다. 자세한 내용과 추가 설치 옵션은 Google SecOps와 함께 Bindplane 사용을 참고하세요.
- Windows 설치의 경우 다음 스크립트를 실행합니다.
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet - Linux 설치의 경우 다음 스크립트를 실행합니다.
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
일반 AuditD 구성
auditd 로그에 호스트 이름과 같은 필요한 소스 정보가 포함되도록 하려면 다음 단계를 완료하세요.
필수 패키지를 설치합니다.
audit데몬과audispd플러그인을 설치합니다 (많은 배포에서 syslog 전달에 필요).- RHEL/CentOS:
bash sudo yum install audit audispd-plugins - Ubuntu/Debian:
bash sudo apt-get install auditd audispd-plugins
- RHEL/CentOS:
호스트 이름을 포함하도록 AuditD 구성
/etc/audit/auditd.conf에서 감사 데몬 구성 파일을 수정하고name_format옵션을 업데이트합니다.# Add or update the following line: name_format = hostname감사 규칙을 구성합니다. 재부팅 후에도 유지되도록
/etc/audit/rules.d/audit.rules에서 감사 규칙을 정의합니다. 예를 들어 32비트 및 64비트 아키텍처 모두의 프로세스 실행을 감사하려면 다음을 추가하세요.-a always,exit -F arch=b64 -S execve -k execve -a always,exit -F arch=b32 -S execve -k execve이러한 규칙을 자체 규칙으로 대체할 수 있습니다.
AuditD 다시 시작 서비스를 다시 시작하여 변경사항을 적용합니다.
sudo systemctl restart auditd
수집 방법 1: 파일 기반 수집
이 방법은 로컬 Bindplane 에이전트를 사용하여 디스크의 /var/log/audit/audit.log에서 원시 감사 로그 파일을 직접 읽는 것입니다.
파일 수집을 위해 Bindplane 에이전트를 구성하려면 다음 단계를 따르세요.
Bindplane이 설치된 머신에서
config.yaml파일을 수정하여 AuditD 로그 파일을 모니터링합니다.receivers: filelog/auditd: include: [ "/var/log/audit/audit.log" ] start_at: end read_batch_size: 65536 poll_interval: 1s exporters: chronicle/auditd_file: compression: gzip # Adjust the creds location below according to the placement of the credentials file you downloaded. creds: '{ json file for creds }' # Replace CUSTOMER_ID with your actual ID that you copied. customer_id: CUSTOMER_ID endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred. ingestion_labels: log_type: AUDITD namespace: auditd raw_log_field: body service: pipelines: logs/auditd_file_to_chronicle: receivers: - filelog/auditd exporters: - chronicle/auditd_fileBindplane 에이전트를 다시 시작합니다.
sudo systemctl restart bindplane
수집 방법 2: Syslog 기반 수집
이 메서드는 감사 디스패처 (audispd)를 사용하여 로그를 로컬 rsyslog 데몬으로 전송하며, 데몬은 이벤트를 전달합니다. 이러한 syslog 메시지를 수신하도록 Bindplane 에이전트가 구성됩니다.
1단계: AuditD syslog 플러그인 구성
감사 로그를 syslog 기능으로 라우팅하려면 syslog 플러그인을 활성화해야 합니다. Linux 배포판 및 감사 버전에 따라 /etc/audisp/plugins.d/syslog.conf (이전 시스템) 또는 /etc/audit/plugins.d/syslog.conf (감사 3.0 이상)을 수정합니다.
active = yes
direction = out
path = builtin_syslog
type = builtin
args = LOG_LOCAL6
format = string
2단계: rsyslog 전달 구성
/etc/rsyslog.d/50-auditd.conf에 전용 rsyslog 구성 파일을 만들어 LOCAL6 기능을 리디렉션합니다 (또는 50-default.conf과 같은 기존 파일을 업데이트).
옵션 A: 원격 Bindplane 에이전트로 전달
Bindplane 에이전트가 원격으로 호스팅되는 경우 IP 주소 (REMOTE_BINDPLANE_IP)와 리슨 포트 (예: 포트 11655)를 지정합니다.
local6.* @@REMOTE_BINDPLANE_IP:11655
옵션 B: 로컬 리스너로 전달
동일한 호스트의 특정 포트에서 syslog 트래픽을 수신 대기하는 로컬 수집 에이전트를 실행하는 경우 LOCAL_LISTENER_PORT를 지정합니다.
local6.* @@127.0.0.1:LOCAL_LISTENER_PORT
3단계: syslog 수집을 위해 Bindplane 에이전트 구성
Bindplane이 설치된 머신에서 syslog 메시지를 리슨하도록 config.yaml 파일을 수정합니다. 이 구성에서는 2단계의 예와 일치하는 포트 11655에서 TCP를 사용한다고 가정합니다.
receivers:
tcplog:
listen_address: "0.0.0.0:11655"
exporters:
chronicle/auditd_syslog:
compression: gzip
# Adjust the creds location below according to the placement of the credentials file you downloaded.
creds: '{ json file for creds }'
# Replace CUSTOMER_ID below with your actual ID that you copied.
customer_id: CUSTOMER_ID
endpoint: malachiteingestion-pa.googleapis.com
# You can apply ingestion labels below as preferred.
ingestion_labels:
log_type: SYSLOG
namespace: auditd
raw_log_field: body
service:
pipelines:
logs/auditd_syslog_to_chronicle:
receivers:
- tcplog
exporters:
- chronicle/auditd_syslog
4단계: 필요한 서비스 다시 시작
syslog 라우팅 및 Bindplane 구성이 적용되도록 다음 서비스를 다시 시작합니다.
sudo systemctl restart auditd
sudo systemctl restart rsyslog
sudo systemctl restart bindplane
tail와 같은 도구를 사용하여 syslog를 모니터링하고 Auditd 로그가 전송되고 있는지 확인할 수 있습니다.
tail -f /var/log/syslog | grep auditd
# Follow syslog and filter for auditd messages (the path may vary depending on your system).
지원되는 Linux 감사 시스템 (AuditD) 샘플 로그
SYSLOG + KV (Linux AuditD)
events_for_log_entry: { events: { timestamp: { seconds: 1718778607 nanos: 898000000 } idm: { read_only_udm: { metadata: { product_log_id: "5512409" event_timestamp: { seconds: 1718778607 nanos: 898000000 } event_type: USER_LOGIN vendor_name: "Linux" product_name: "AuditD" product_event_type: "USER_AUTH" } principal: { hostname: "sec-dev-01.internal" user: { userid: "0" user_display_name: "secuser" } process: { pid: "3306219" } asset: { hostname: "sec-dev-01.internal" ip: "192.168.1.5" } ip: "192.168.1.5" application: "ssh" platform: LINUX } target: { user: { userid: "0" user_display_name: "secuser" } process: { file: { full_path: "/usr/sbin/secure_shell" } } } intermediary: { hostname: "sec-dev-01.internal" } about: { user: { userid: "sysadmin" user_display_name: "unset" } } security_result: { detection_fields: { key: "AUID0" value: "unset" } detection_fields: { key: "UID0" value: "sysadmin" } detection_fields: { key: "acct0" value: "secuser" } detection_fields: { key: "addr0" value: "192.168.1.5" } detection_fields: { key: "auid0" value: "sysadmin" } detection_fields: { key: "exe0" value: "/usr/sbin/secure_shell" } detection_fields: { key: "grantors0" value: "pam_unix" } detection_fields: { key: "hostname0" value: "192.168.1.5" } detection_fields: { key: "msg0" value: "op=PAM:authentication" } detection_fields: { key: "pid0" value: "3306219" } detection_fields: { key: "res0" value: "success" } detection_fields: { key: "ses0" value: "4294967295" } detection_fields: { key: "terminal0" value: "ssh" } detection_fields: { key: "uid0" value: "0" } detection_fields: { key: "AUID_kv0" value: "AUID0:unset" } detection_fields: { key: "UID_kv0" value: "UID0:sysadmin" } detection_fields: { key: "acct_kv0" value: "acct0:secuser" } detection_fields: { key: "addr_kv0" value: "addr0:192.168.1.5" } detection_fields: { key: "auid_kv0" value: "auid0:sysadmin" } detection_fields: { key: "exe_kv0" value: "exe0:/usr/sbin/secure_shell" } detection_fields: { key: "grantors_kv0" value: "grantors0:pam_unix" } detection_fields: { key: "hostname_kv0" value: "hostname0:192.168.1.5" } detection_fields: { key: "msg_kv0" value: "msg0:op=PAM:authentication" } detection_fields: { key: "pid_kv0" value: "pid0:3306219" } detection_fields: { key: "res_kv0" value: "res0:success" } detection_fields: { key: "ses_kv0" value: "ses0:4294967295" } detection_fields: { key: "terminal_kv0" value: "terminal0:ssh" } detection_fields: { key: "uid_kv0" value: "uid0:0" } summary: "authentication secuser" action: ALLOW action_details: "success" } network: { session_id: "4294967295" application_protocol: SSH } extensions: { auth: {} } } } } }SYSLOG (일반)
events_for_log_entry: { events: { timestamp: { seconds: 1754848621 } idm: { read_only_udm: { metadata: { event_timestamp: { seconds: 1754848621 } event_type: PROCESS_LAUNCH vendor_name: "Linux" product_name: "AuditD" product_event_type: "CROND" description: "(monitorsvc) CMD (/opt/monitor/bin/scheduler -j /opt/monitor/cache/jobs/check.jx)" } principal: { hostname: "log-host-05" user: { userid: "monitorsvc" } process: { pid: "124662" } asset: { hostname: "log-host-05" } platform: LINUX } target: { process: { command_line: "/opt/monitor/bin/scheduler -j /opt/monitor/cache/jobs/check.jx" } } intermediary: { hostname: "log-host-05" } } } } }JSON (Cloud Storage 로깅 또는 Auditbeat)
events_for_log_entry: { events: { timestamp: { seconds: 1611615589 nanos: 212000000 } idm: { read_only_udm: { metadata: { product_log_id: "32946" event_timestamp: { seconds: 1611615589 nanos: 212000000 } collected_timestamp: { seconds: 1609752843 nanos: 349722230 } event_type: SERVICE_START vendor_name: "Linux" product_name: "AuditD" product_event_type: "SERVICE_START" } additional: { fields: { key: "insertId" value: { string_value: "tf9cuofcnbn6i" } } fields: { key: "logName" value: { string_value: "projects/prj-secops-dev/logs/auditd" } } } principal: { hostname: "gce-test-web" user: { userid: "0" } process: { pid: "1" } asset: { hostname: "gce-test-web" } application: "sysmgr" platform: LINUX } target: { process: { file: { full_path: "/usr/bin/sysmgr" } } cloud: { project: { name: "prj-secops-dev" } } resource: { resource_subtype: "gce_instance" product_object_id: "1000000000000000001" attribute: { cloud: { availability_zone: "us-east4-a" } } } } about: { user: { userid: "9001" user_display_name: "unset" } } security_result: { detection_fields: { key: "AUID0" value: "unset" } detection_fields: { key: "UID0" value: "secsvc" } detection_fields: { key: "auid0" value: "9001" } detection_fields: { key: "comm0" value: "sysmgr" } detection_fields: { key: "exe0" value: "/usr/bin/sysmgr" } detection_fields: { key: "msg0" value: "unit=gce-cert-renew" } detection_fields: { key: "pid0" value: "1" } detection_fields: { key: "res0" value: "success" } detection_fields: { key: "ses0" value: "4294967295" } detection_fields: { key: "subj0" value: "system_u:system_r:init_t:s0" } detection_fields: { key: "uid0" value: "0" } detection_fields: { key: "AUID_kv0" value: "AUID0:unset" } detection_fields: { key: "UID_kv0" value: "UID0:secsvc" } detection_fields: { key: "auid_kv0" value: "auid0:9001" } detection_fields: { key: "comm_kv0" value: "comm0:sysmgr" } detection_fields: { key: "exe_kv0" value: "exe0:/usr/bin/sysmgr" } detection_fields: { key: "msg_kv0" value: "msg0:unit=gce-cert-renew" } detection_fields: { key: "pid_kv0" value: "pid0:1" } detection_fields: { key: "res_kv0" value: "res0:success" } detection_fields: { key: "ses_kv0" value: "ses0:4294967295" } detection_fields: { key: "subj_kv0" value: "subj0:system_u:system_r:init_t:s0" } detection_fields: { key: "uid_kv0" value: "uid0:0" } summary: "unit=gce-cert-renew success" action: ALLOW action_details: "success" } network: { session_id: "4294967295" } } } } }JSON (Windows 이벤트)
JSON (Windows Event) events_for_log_entry: { events: { timestamp: { seconds: 1711012395 nanos: 723000000 } idm: { read_only_udm: { metadata: { event_timestamp: { seconds: 1711012395 nanos: 723000000 } event_type: USER_LOGIN vendor_name: "Microsoft" product_name: "Microsoft-Windows-Security-Auditing" product_event_type: "4624" description: "An account was successfully logged on" } additional: { fields: { key: "Message" value: { string_value: "An account was successfully logged on." "Subject:Security ID:S-1-0-0" "Account Name:-... (omitted for brevity) ..." "New Logon:Security ID:S-1-5-21-1234567890-123456789-1234567890-2001" "Account Name:svc_log_collector" "Account Domain:SEC_LAB... (omitted for brevity) ..." "Network Information:" "Workstation Name:DEV-WS-42" "Source Network Address:172.16.1.100" "Source Port:53856..." } } fields: { key: "Workstation Name" value: { string_value: "DEV-WS-42" } } } principal: { hostname: "DEV-WS-42" process: {} asset: { hostname: "DEV-WS-42" ip: "172.16.1.100" } ip: "172.16.1.100" port: 53856 labels: { key: "Workstation Name" value: "DEV-WS-42" } } target: { user: { userid: "svc_log_collector" windows_sid: "S-1-5-21-1234567890-123456789-1234567890-2001" } administrative_domain: "SEC_LAB" } intermediary: { hostname: "win-server-01" } security_result: { rule_name: "EventID: 4624" action: ALLOW } extensions: { auth: { mechanism: MECHANISM_UNSPECIFIED } } } } } }SYSLOG + XML (Solaris AuditD)
{ "events_for_log_entry": { "events": { "timestamp": { "seconds": 1735824379 }, "idm": { "read_only_udm": { "metadata": { "product_log_id": "1638473100678580410", "event_timestamp": { "seconds": 1735824379 }, "event_type": "PROCESS_LAUNCH", "vendor_name": "Linux", "product_name": "AuditD", "product_version": "2", "product_event_type": "AUE_EXECVE", "description": "<record version=\"2\" event=\"23\" host=\"192.0.2.1\" iso8601=\"1638473100678580410\">\n" " <ntrs hostname=\"sanitized-host-01\" eventstring=\"AUE_EXECVE\" timestamp=\"1638473100.678580410\" ppid=\"2853\"></ntrs>\n" " <path>/usr/bin/find</path>\n" " <attribute mode=\"100555\" uid=\"0\" gid=\"2\" fsid=\"256\" nodeid=\"722\" device=\"18446744073709551615\"/>\n" " <exec_args>\n" " <arg>find</arg>\n" " <arg>/var/log/secure</arg>\n" " <arg>-type</arg>\n" " <arg>f</arg>\n" " <arg>-xdev</arg>\n" " <arg>-prune</arg>\n" " <arg>-name</arg>\n" " <arg>secure_data_file.txt</arg>\n" " <arg>-mtime</arg>\n" " <arg>+3</arg>\n" " <arg>-exec</arg>\n" " <arg>rm</arg>\n" " <arg>-f</arg>\n" " <arg>{}</arg>\n" " <arg>;</arg>\n" " </exec_args>\n" " <path>/lib/ld.so.1</path>\n" " <attribute mode=\"100755\" uid=\"0\" gid=\"2\" fsid=\"256\" nodeid=\"449952\" device=\"18446744073709551615\"/>\n" " <subject audit-uid=\"99999\" uid=\"0\" gid=\"0\" ruid=\"0\" rgid=\"0\" pid=\"2871\" sid=\"1898719819\" tid=\"9307 196630 192.0.2.10\"/>\n" " <return errval=\"0\" retval=\"0\"/>\n" " <sequence seq-num=\"6849431\"/>\n" "</record>" }, "principal": { "hostname": "sanitized-host-01", "user": { "userid": "99999" }, "asset": { "hostname": "sanitized-host-01", "ip": "192.0.2.1" }, "ip": "192.0.2.1", "platform": "LINUX" }, "target": { "process": { "parent_process": { "pid": "2853" }, "command_line": "find /var/log/secure -type f -xdev -prune -name secure_data_file.txt -mtime +3 -exec rm -f {} ;" } }, "intermediary": { "hostname": "internal-proxy.local" }, "security_result": { "detection_fields": [ { "key": "event", "value": "event: 23" }, { "key": "uid", "value": "uid: 0" }, { "key": "gid", "value": "gid: 0" }, { "key": "ruid", "value": "ruid: 0" }, { "key": "rgid", "value": "rgid: 0" }, { "key": "pid", "value": "pid: 2871" }, { "key": "sid", "value": "sid: 1898719819" }, { "key": "tid", "value": "tid: 9307 196630 192.0.2.10" }, { "key": "seq_num", "value": "seq_num: 6849431" }, { "key": "errval", "value": "errval: 0" }, { "key": "retval", "value": "retval: 0" }, { "key": "path", "value": "path: /usr/bin/find" }, { "key": "device", "value": "device: 18446744073709551615" }, { "key": "mode", "value": "mode: 100555" }, { "key": "fsid", "value": "fsid: 256" }, { "key": "nodeid", "value": "nodeid: 722" } ] } } } } } }
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 설명 |
|---|---|---|
acct |
target.user.user_display_name |
원시 로그의 acct 값이 UDM의 target.user.user_display_name 필드에 매핑됩니다. 이벤트와 연결된 계정을 나타냅니다. |
addr |
principal.ip |
원시 로그의 addr 값이 UDM의 principal.ip 필드에 매핑됩니다. 이벤트에 관련된 주체의 IP 주소를 나타냅니다. |
additional.fields |
additional.fields |
파싱된 키-값 쌍 또는 라벨의 추가 필드가 UDM의 additional.fields 배열에 추가됩니다. |
agent.googleapis.com/log_file_path |
(매핑되지 않음) | 이 라벨은 일부 원시 로그에 있지만 UDM의 IDM 객체에 매핑되지 않습니다. |
algo |
(이 예시에서는 사용되지 않음) | 파서와 일부 원시 로그에 있지만 이 필드는 제공된 예시에서 사용되지 않으며 최종 UDM에 표시되지 않습니다. |
application |
principal.application |
원시 로그의 terminal 필드 또는 로그 유형에 따라 exe과 같은 다른 필드에서 파생됩니다. 관련 애플리케이션을 나타냅니다. |
arch |
security_result.about.platform_version |
원시 로그의 arch 필드의 아키텍처가 security_result.about.platform_version에 매핑됩니다. |
auid |
about.user.userid, security_result.detection_fields.auid |
감사 사용자 ID (auid)가 about.user.userid에 매핑되고 security_result에 감지 필드로 추가됩니다. |
cmd |
target.process.command_line |
원시 로그의 cmd 필드의 명령어가 target.process.command_line에 매핑됩니다. |
collection_time |
(매핑되지 않음) | 이 필드는 로그 수집 시간이며 UDM의 IDM 객체에 매핑되지 않습니다. |
comm |
principal.application |
명령어 이름 (comm)이 principal.application에 매핑됩니다. |
COMMAND |
target.process.command_line |
|
compute.googleapis.com/resource_name |
principal.hostname |
이 라벨의 리소스 이름은 principal.hostname에 매핑됩니다. |
create_time |
(매핑되지 않음) | 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다. |
cwd |
security_result.detection_fields.cwd |
현재 작업 디렉터리 (cwd)가 security_result에 감지 필드로 추가됩니다. |
data |
(처리됨) | data 필드에는 기본 로그 메시지가 포함되어 있으며 파서에 의해 처리되어 다양한 필드가 추출됩니다. 단일 UDM 필드에 직접 매핑되지 않습니다. |
exe |
target.process.file.full_path |
실행 파일 경로 (exe)가 target.process.file.full_path에 매핑됩니다. |
extensions.auth.type |
extensions.auth.type |
인증 유형은 이벤트 유형에 따라 파서 로직에 의해 설정됩니다. MACHINE 또는 AUTHTYPE_UNSPECIFIED로 설정되는 경우가 많습니다. |
fp |
network.tls.client.certificate.sha256 |
디지털 지문 (fp)이 파싱되어 SHA256 해시를 추출하고 network.tls.client.certificate.sha256에 매핑됩니다. |
_Item_Id |
metadata.product_log_id |
|
insertId |
(매핑되지 않음) | 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다. |
jsonPayload.message |
(처리됨) | 이 필드에는 JSON 형식의 기본 로그 메시지가 포함되어 있으며 파서에 의해 처리됩니다. |
key |
security_result.about.registry.registry_key |
키 필드는 security_result.about.registry.registry_key에 매핑됩니다. |
labels |
(처리됨) | 원시 로그의 라벨이 처리되어 다양한 UDM 필드에 매핑되거나 additional.fields에 추가됩니다. |
logName |
(매핑되지 않음) | 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다. |
metadata.product_event_type |
SECCOMP | 키 교환 곡선이 원시 로그에서 추출되어 이 필드에 매핑됩니다. |
msg |
security_result.summary |
메시지 (msg)는 security_result.summary 필드를 채우는 데 자주 사용됩니다. |
network.application_protocol |
network.application_protocol |
이벤트 유형 (예: SSH, HTTP)에 따라 파서 로직에 의해 설정됩니다. |
network.direction |
network.direction |
이벤트 유형 (예: INBOUND, OUTBOUND)에 따라 파서 로직에 의해 설정됩니다. |
network.ip_protocol |
network.ip_protocol |
파서 로직에 의해 설정되며, 일반적으로 SSH 이벤트의 경우 TCP입니다. |
network.session_id |
network.session_id |
ses 필드에서 매핑되거나 다른 필드에서 파생됩니다. |
network.tls.cipher |
network.tls.cipher |
암호 정보는 원시 로그에서 추출되어 이 필드에 매핑됩니다. |
network.tls.curve |
network.tls.curve |
키 교환 곡선이 원시 로그에서 추출되어 이 필드에 매핑됩니다. |
pid |
principal.process.pid, target.process.pid |
프로세스 ID (pid)는 컨텍스트에 따라 principal.process.pid 또는 target.process.pid에 매핑됩니다. |
ppid |
principal.process.parent_process.pid, target.process.parent_process.pid |
상위 프로세스 ID (ppid)는 컨텍스트에 따라 principal.process.parent_process.pid 또는 target.process.parent_process.pid에 매핑됩니다. |
principal.asset.hostname |
principal.asset.hostname |
principal.hostname에서 복사됨 |
principal.asset.ip |
principal.asset.ip |
principal.ip에서 복사됨 |
principal.platform |
principal.platform |
운영체제 (예: LINUX)에 따라 파서 로직에 의해 설정됩니다. |
principal.port |
principal.port |
주 구성원과 연결된 포트 번호입니다. |
principal.user.group_identifiers |
principal.user.group_identifiers |
주 사용자와 연결된 그룹 ID입니다. |
process.name |
target.process.file.full_path |
|
receiveTimestamp |
(매핑되지 않음) | 이 필드는 로그 수신 타임스탬프이며 UDM의 IDM 객체에 매핑되지 않습니다. |
res |
security_result.action_details |
결과 (res)는 security_result.action_details에 매핑됩니다. |
_Resource_Id |
target.resource.product_object_id |
|
resource.labels |
(매핑되지 않음) | 이러한 라벨은 일부 원시 로그에 있지만 UDM의 IDM 객체에 매핑되지 않습니다. |
resource.type |
(매핑되지 않음) | 이 필드는 일부 원시 로그에 있지만 UDM의 IDM 객체에 매핑되지 않습니다. |
security_result.action |
security_result.action |
res 필드 (예: ALLOW, BLOCK)에 따라 파서 로직에 의해 설정됩니다. |
security_result.detection_fields |
security_result.detection_fields |
컨텍스트를 위해 원시 로그의 다양한 필드가 키-값 쌍으로 이 배열에 추가됩니다. |
security_result.rule_id |
security_result.rule_id |
파서 로직에 의해 설정되며, syscall 이벤트의 경우 type_name인 경우가 많습니다. |
security_result.severity |
security_result.severity |
원시 로그의 심각도 수준에 따라 파서 로직에 의해 설정됩니다. |
security_result.summary |
security_result.summary |
이벤트의 요약으로, msg 필드 또는 기타 관련 필드에서 파생되는 경우가 많습니다. |
ses |
network.session_id |
세션 ID (ses)가 network.session_id에 매핑됩니다. |
source |
(매핑되지 않음) | 이 필드에는 로그 소스에 관한 메타데이터가 포함되며 UDM의 IDM 객체에 매핑되지 않습니다. |
subj |
(처리됨) | 주제 필드 (subj)는 사용자 및 보안 컨텍스트 정보를 추출하기 위해 처리됩니다. |
syscall |
security_result.about.labels.Syscall |
시스템 호출 번호가 security_result.about 내에 라벨로 추가됩니다. |
target.administrative_domain |
target.administrative_domain |
타겟 사용자의 도메인입니다. |
target.group.group_display_name |
target.group.group_display_name |
타겟 그룹의 이름입니다. |
target.ip |
target.ip |
타겟의 IP 주소입니다. |
target.port |
target.port |
타겟과 연결된 포트 번호입니다. |
target.process.command_line |
target.process.command_line |
타겟 프로세스의 명령줄입니다. |
target.resource.type |
target.resource.type |
파서 로직에 의해 설정된 타겟 리소스의 유형입니다 (예: CREDENTIAL, SETTING). |
target.user.attribute.permissions |
target.user.attribute.permissions |
타겟 사용자와 관련된 권한입니다. |
target.user.group_identifiers |
target.user.group_identifiers |
타겟 사용자와 연결된 그룹 ID입니다. |
target.user.userid |
target.user.userid |
타겟의 사용자 ID입니다. |
TenantId |
metadata.product_deployment_id |
|
textPayload |
(처리됨) | 파서에 의해 처리되어 다양한 필드를 추출하는 로그의 텍스트 페이로드입니다. |
timestamp |
metadata.event_timestamp |
이벤트의 타임스탬프입니다. |
tty |
security_result.about.labels.tty |
tty는 security_result.about 내에 라벨로 추가됩니다. |
type |
metadata.product_event_type |
이벤트 유형 (type)이 metadata.product_event_type에 매핑됩니다. |
uid |
target.user.userid |
사용자 ID (uid)가 target.user.userid에 매핑됩니다. |
UDM 매핑 델타 참조
2025년 9월 23일에 Google SecOps는 Okta 로그 필드와 UDM 필드의 매핑에 대한 중요한 변경사항과 이벤트 유형의 매핑에 대한 변경사항이 포함된 새로운 버전의 Okta 파서를 출시했습니다.
로그 필드 매핑 델타
다음 표에는 2025년 9월 23일 이전에 노출된 Okta 로그-UDM 필드와 그 이후에 노출된 Okta 로그-UDM 필드의 매핑 델타가 나와 있습니다 (각각 이전 매핑 및 현재 매핑 열에 나열됨).
| 로그 필드 | 이전 매핑 | 현재 매핑 | 참조 로그 샘플 |
|---|---|---|---|
1.1.1.1 (IP 주소) |
src.ip |
principal.ip |
'<163>Apr 10 09:00:05 hostname.com sshd[3318513]: Accepted password for abc from 1.1.1.1 port 33988 ssh2' |
1.1.1.1 (IP 주소) |
principal.ip |
target.ip |
"<29>Oct 5 08:37:16 abc ProxySG: E0000 Access Log HTTP (main): Connecting to server 1.1.1.1 on port 4433.(0) NORMAL_EVENT alog_stream_http.cpp 261' |
abc (사용자) |
principal.user.userid |
target.user.userid |
"<85>Feb 27 08:26:55 offozcav login: FAILED LOGIN 1 FROM ::ffff:1.1.1.1 FOR abc, Authentication failure\r\n\r\n" |
abc.abc (사용자) |
principal.user.userid |
target.user.userid |
"<86>Feb 27 08:29:19 offozcav login: LOGIN ON pts/43 BY abc.abc FROM\r\n\r\n::ffff:1.1.1.1" |
COMMAND |
principal.process.command_line |
target.process.command_line |
"<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number" |
exe |
target.process.file.full_path |
principal.process.file.full_path |
|
_ItemId |
additional.fields |
metadata.product_log_id |
|
metadata.product_event_type |
PATH |
SECCOMP |
|
process.name |
principal.process.file.full_path |
target.process.file.full_path |
|
_ResourceId |
additional.fields |
target.resource.product_object_id |
|
TenantId |
additional.fields |
metadata.product_deployment_id |
|
uid |
principal.user.userid |
target.user.userid |
|
USER |
principal.user.user_display_name |
target.user.userid |
"<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number" |
user |
principal.user.userid |
target.user.userid |
'29>Jan 16 11:28:00 san-auth-1-irl2 tac_plus[17329]: login failure: user 1.1.1.1 (1.1.1.1) vty0' |
user |
principal.user.userid |
target.user.userid |
"<87>Jul 15 10:27:01 xpgjrconfdb01 crond[1045]: pam_unix(crond:account): expired password for user root (password aged)" |
이벤트 유형 매핑 델타
이전에 일반 이벤트로 분류되었던 여러 이벤트가 이제 의미 있는 이벤트 유형으로 올바르게 분류됩니다.
다음 표에는 2025년 9월 23일 이전과 이후의 Okta 이벤트 유형 처리의 차이가 나와 있습니다 (각각 이전 event_type 및 현재 event_type 열에 나열됨).
| 로그의 eventType | 이전 event_type | 현재 event_type |
|---|---|---|
aix_event_type=CRON_Start |
USER_LOGIN |
PROCESS_LAUNCH |
CRYPTO_KEY_USER |
NETWORK_CONNECTION |
USER_LOGIN |
FILE_Mknod |
USER_LOGIN |
FILE_CREATION |
FILE_Rename |
USER_LOGIN |
FILE_MODIFICATION |
FILE_Stat |
USER_LOGIN |
FILE_OPEN |
FILE_Unlink |
USER_LOGIN |
FILE_DELETION |
FS_Chabc |
USER_LOGIN |
PROCESS_UNCATEGORIZED |
FS_Mkdir |
USER_LOGIN |
FILE_CREATION |
FS_Rmdir |
USER_LOGIN |
FILE_DELETION |
PROC_Execute |
USER_LOGIN |
PROCESS_LAUNCH |
type=ANOM_ABEND |
STATUS_UPDATE |
PROCESS_TERMINATION |
type=ANOM_PROMISCUOUS |
SETTING_MODIFICATION |
|
type=CRED_REFR |
USER_LOGIN |
USER_CHANGE_PERMISSIONS |
type=PROCTILE |
PROCESS_UNCATEGORIZED |
PROCESS_LAUNCH |
type=SERVICE_START |
USER_RESOURCE_ACCESS |
SERVICE_START |
type=SERVICE_STOP |
USER_RESOURCE_ACCESS |
SERVICE_STOP |
type=USER_ACCT |
USER_LOGIN/SETTING_MODIFICTION |
USER_LOGIN |
type=USER_MGMT |
SETTING_MODIFICATION/GROUP_MODIFICATION |
GROUP_MODIFICATION |
USER_ERR |
USER_LOGOUT |
USER_LOGIN |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.