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 수집 인증 파일 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 수집 에이전트로 이동합니다.
  3. 수집 인증 파일을 다운로드합니다.

Google SecOps 고객 ID 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 프로필로 이동합니다.
  3. 조직 세부정보 섹션에서 고객 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 로그에 호스트 이름과 같은 필요한 소스 정보가 포함되도록 하려면 다음 단계를 완료하세요.

  1. 필수 패키지를 설치합니다. audit 데몬과 audispd 플러그인을 설치합니다 (많은 배포에서 syslog 전달에 필요).

    • RHEL/CentOS: bash sudo yum install audit audispd-plugins
    • Ubuntu/Debian: bash sudo apt-get install auditd audispd-plugins
  2. 호스트 이름을 포함하도록 AuditD 구성 /etc/audit/auditd.conf에서 감사 데몬 구성 파일을 수정하고 name_format 옵션을 업데이트합니다.

      # Add or update the following line:
      name_format = hostname
    
  3. 감사 규칙을 구성합니다. 재부팅 후에도 유지되도록 /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
    

    이러한 규칙을 자체 규칙으로 대체할 수 있습니다.

  4. AuditD 다시 시작 서비스를 다시 시작하여 변경사항을 적용합니다.

    sudo systemctl restart auditd
    

수집 방법 1: 파일 기반 수집

이 방법은 로컬 Bindplane 에이전트를 사용하여 디스크의 /var/log/audit/audit.log에서 원시 감사 로그 파일을 직접 읽는 것입니다.

파일 수집을 위해 Bindplane 에이전트를 구성하려면 다음 단계를 따르세요.

  1. 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_file
    
  2. Bindplane 에이전트를 다시 시작합니다.
    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 전문가에게 문의하여 답변을 받으세요.