Symantec VIP Authentication Hub ๋กœ๊ทธ ์ˆ˜์ง‘

๋‹ค์Œ์—์„œ ์ง€์›:

์ด ๋ฌธ์„œ์—์„œ๋Š” Bindplane์„ ์‚ฌ์šฉํ•˜์—ฌ Symantec VIP Authentication Hub ๋กœ๊ทธ๋ฅผ Google Security Operations์— ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์„œ ์ฝ”๋“œ๋Š” ๋จผ์ € ์ž…๋ ฅ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์‚ฌ์ „ ์ฒ˜๋ฆฌํ•˜์—ฌ ํŠน์ • ํ•„๋“œ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ณ  ํ‚ค-๊ฐ’ ์Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ grok ํŒจํ„ด๊ณผ ์กฐ๊ฑด๋ถ€ ๋กœ์ง์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํ•„๋“œ์—์„œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๊ณ  ํ‘œ์ค€ํ™”๋œ ๋ณด์•ˆ ์ด๋ฒคํŠธ ํ‘œํ˜„์„ ์œ„ํ•ด ํ†ตํ•ฉ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ (UDM) ๋‚ด์˜ ํ•ด๋‹น ์†์„ฑ์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

๋‹ค์Œ ๊ธฐ๋ณธ ์š”๊ฑด์ด ์ถฉ์กฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • Google SecOps ์ธ์Šคํ„ด์Šค
  • Windows 2016 ์ด์ƒ ๋˜๋Š” systemd๊ฐ€ ์žˆ๋Š” Linux ํ˜ธ์ŠคํŠธ
  • ํ”„๋ก์‹œ ๋’ค์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฉํ™”๋ฒฝ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ์Œ
  • Symantec VIP Authentication Hub์— ๋Œ€ํ•œ ๊ถŒํ•œ ์žˆ๋Š” ์•ก์„ธ์Šค

Google SecOps ์ˆ˜์ง‘ ์ธ์ฆ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ

  1. Google SecOps ์ฝ˜์†”์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
  2. SIEM ์„ค์ • > ์ˆ˜์ง‘ ์—์ด์ „ํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ˆ˜์ง‘ ์ธ์ฆ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. Bindplane์ด ์„ค์น˜๋  ์‹œ์Šคํ…œ์— ํŒŒ์ผ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

Google SecOps ๊ณ ๊ฐ ID ๊ฐ€์ ธ์˜ค๊ธฐ

  1. Google SecOps ์ฝ˜์†”์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
  2. SIEM ์„ค์ • > ํ”„๋กœํ•„๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. ์กฐ์ง ์„ธ๋ถ€์ •๋ณด ์„น์…˜์—์„œ ๊ณ ๊ฐ ID๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

Bindplane ์—์ด์ „ํŠธ ์„ค์น˜

Windows ์„ค์น˜

  1. ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ ๋˜๋Š” PowerShell์„ ๊ด€๋ฆฌ์ž๋กœ ์—ฝ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux ์„ค์น˜

  1. ๋ฃจํŠธ ๋˜๋Š” sudo ๊ถŒํ•œ์œผ๋กœ ํ„ฐ๋ฏธ๋„์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

์ถ”๊ฐ€ ์„ค์น˜ ๋ฆฌ์†Œ์Šค

์ถ”๊ฐ€ ์„ค์น˜ ์˜ต์…˜์€ ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Syslog๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ Google SecOps๋กœ ์ „์†กํ•˜๋„๋ก Bindplane ์—์ด์ „ํŠธ ๊ตฌ์„ฑ

  1. ๊ตฌ์„ฑ ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.
    • config.yaml ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ Linux์—์„œ๋Š” /etc/bindplane-agent/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๊ณ  Windows์—์„œ๋Š” ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ (์˜ˆ: nano, vi, ๋ฉ”๋ชจ์žฅ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ๋‹ค์Œ๊ณผ ๊ฐ™์ด config.yaml ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    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: 'SYMANTEC_VIP_AUTHHUB'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. ์ธํ”„๋ผ์— ํ•„์š”ํ•œ ๋Œ€๋กœ ํฌํŠธ์™€ IP ์ฃผ์†Œ๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  4. <customer_id>๋ฅผ ์‹ค์ œ ๊ณ ๊ฐ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  5. Google SecOps ์ˆ˜์ง‘ ์ธ์ฆ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ ์„น์…˜์—์„œ ์ธ์ฆ ํŒŒ์ผ์ด ์ €์žฅ๋œ ๊ฒฝ๋กœ๋กœ /path/to/ingestion-authentication-file.json๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

Bindplane ์—์ด์ „ํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

  • Linux์—์„œ Bindplane ์—์ด์ „ํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    sudo systemctl restart bindplane-agent
    
  • Windows์—์„œ Bindplane ์—์ด์ „ํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์„œ๋น„์Šค ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Symantec VIP Authentication Hub์—์„œ Syslog ๊ตฌ์„ฑ

  1. Symantec VIP Gateway ์›น UI์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ๋กœ๊ทธ > Syslog ๊ตฌ์„ฑ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. Syslog๋ฅผ ์ฒ˜์Œ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ Syslog ์„ค์ •์„ ๊ตฌ์„ฑํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. Syslog๋ฅผ ์ด๋ฏธ ๊ตฌ์„ฑํ•œ ๊ฒฝ์šฐ ํŽ˜์ด์ง€ ํ•˜๋‹จ์—์„œ ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ๋‹ค์Œ ๊ตฌ์„ฑ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • Syslog Facility(Syslog ๊ธฐ๋Šฅ): LOG_LOCAL0์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • Syslog ํ˜ธ์ŠคํŠธ: Bindplane ์—์ด์ „ํŠธ IP ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • Syslog Port(Syslog ํฌํŠธ): Bindplane ์—์ด์ „ํŠธ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: UDP์˜ ๊ฒฝ์šฐ 514).
  6. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  7. ID ์ œ๊ณต์—…์ฒด > ์…€ํ”„ ์„œ๋น„์Šค ํฌํ„ธ ๊ตฌ์„ฑ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  8. ๋‹ค์Œ ๊ตฌ์„ฑ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๋กœ๊น… ์ˆ˜์ค€: ์ •๋ณด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • Enable Syslog: Yes๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  9. ์ œ์ถœ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  10. ID ๊ณต๊ธ‰์ž > VIP ๊ด€๋ฆฌ์ž ์ธ์ฆ ๊ตฌ์„ฑ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  11. ๋‹ค์Œ ๊ตฌ์„ฑ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๋กœ๊น… ์ˆ˜์ค€: ์ •๋ณด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • Enable Syslog: Yes๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  12. ์ œ์ถœ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  13. ์‚ฌ์šฉ์ž ์Šคํ† ์–ด > LDAP ๋””๋ ‰ํ„ฐ๋ฆฌ ๋™๊ธฐํ™”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  14. ๋‹ค์Œ ๊ตฌ์„ฑ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๋กœ๊ทธ ์ˆ˜์ค€: ์ •๋ณด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • Enable Syslog: Yes๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  15. ์ œ์ถœ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

UDM ๋งคํ•‘ ํ…Œ์ด๋ธ”

๋กœ๊ทธ ํ•„๋“œ UDM ๋งคํ•‘ ๋…ผ๋ฆฌ
/auth/v1/authenticate security_result.detection_fields[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ /auth/v1/authenticate ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค api๊ฐ€ ์žˆ๋Š” security_result.detection_fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
__isAuditIdLcmIdStore additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ __isAuditIdLcmIdStore ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค __isAuditIdLcmIdStore๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
accessTokenScopes security_result.detection_fields[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ accessTokenScopes ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค accessTokenScopes๊ฐ€ ์žˆ๋Š” security_result.detection_fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
accessTokenTid security_result.detection_fields[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ accessTokenTid ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค accessTokenTid๊ฐ€ ์žˆ๋Š” security_result.detection_fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
api security_result.detection_fields[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ api ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค api๊ฐ€ ์žˆ๋Š” security_result.detection_fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
appId additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ appId ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค appId๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
appName principal.application ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ appName ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
azpName additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ azpName ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค azpName๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
bytes_sent network.sent_bytes ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ bytes_sent ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
client principal.asset.ip, principal.ip IP ์ฃผ์†Œ๋Š” grok ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์›์‹œ ๋กœ๊ทธ์˜ client ํ•„๋“œ์—์„œ ์ถ”์ถœ๋˜๊ณ  principal.ip ๋ฐ principal.asset.ip ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
clientId additional.fields[].value.string_value, principal.user.userid ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ clientId ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค clientId๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. clientId ํ•„๋“œ๊ฐ€ ๋น„์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด principal.user.userid ํ•„๋“œ๋ฅผ ์ฑ„์šฐ๋Š” ๋ฐ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
clientIp principal.asset.ip, principal.ip ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ clientIp ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ principal.ip ๋ฐ principal.asset.ip ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
clientTid additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ clientTid ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค clientTid๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
clientTxnId additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ clientTxnId ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค clientTxnId๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
contentType additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ contentType ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค contentType๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
countryISO principal.location.country_or_region ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ countryISO ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
eventId metadata.product_event_type ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ eventId ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
flowStateId additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ flowStateId ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค flowStateId๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
geo.city_name principal.location.city ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ geo.city_name ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
geo.country_name principal.location.country_or_region ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ geo.country_name ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
geo.location.lat principal.location.region_coordinates.latitude ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ geo.location.lat ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ๋ถ€๋™ ์†Œ์ˆ˜์ ์œผ๋กœ ๋ณ€ํ™˜๋˜๊ณ  principal.location.region_coordinates.latitude๋กœ ์ด๋ฆ„์ด ๋ฐ”๋€๋‹ˆ๋‹ค.
geo.location.lon principal.location.region_coordinates.longitude ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ geo.location.lon ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ๋ถ€๋™ ์†Œ์ˆ˜์ ์œผ๋กœ ๋ณ€ํ™˜๋˜๊ณ  principal.location.region_coordinates.longitude๋กœ ์ด๋ฆ„์ด ๋ฐ”๋€๋‹ˆ๋‹ค.
guid metadata.product_log_id ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ guid ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
host principal.asset.hostname, principal.hostname ์ด ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ host ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ค๋ฉฐ, ๋”ฐ์˜ดํ‘œ๊ฐ€ ์‚ญ์ œ๋˜๊ณ  principal.hostname ๋ฐ principal.asset.hostname ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
httpMethod network.http.method ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ httpMethod ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
httpReferrer network.http.referral_url ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ httpReferrer ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
identitySourceId additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ identitySourceId ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค identitySourceId๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
internal-user-sync-ext-resourceGuid target.user.userid ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ internal-user-sync-ext-resourceGuid ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
internal-user-sync-ext-resourceName target.user.email_addresses ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ internal-user-sync-ext-resourceName ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ target.user.email_addresses ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
issuerUrl target.url ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ issuerUrl ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
kubernetes.annotations.cni.projectcalico.org_containerID target.resource.product_object_id ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.annotations.cni.projectcalico.org_containerID ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
kubernetes.annotations.cni.projectcalico.org_podIP target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.annotations.cni.projectcalico.org_podIP ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค podIP๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.annotations.cni.projectcalico.org_podIPs target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.annotations.cni.projectcalico.org_podIPs ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค podIPs๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.container_hash target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.container_hash ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค container_hash๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.container_image target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.container_image ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค container_image๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.container_name target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.container_name ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค container_name๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.docker_id target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.docker_id ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค docker_id๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.host principal.asset.hostname, principal.hostname ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.host ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ principal.hostname ๋ฐ principal.asset.hostname ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
kubernetes.labels.app ์ด ํ•„๋“œ๋Š” UDM์˜ IDM ๊ฐ์ฒด์— ๋งคํ•‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
kubernetes.labels.app.kubernetes.io/component target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.labels.app.kubernetes.io/component ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค io_component๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.labels.app.kubernetes.io/instance target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.labels.app.kubernetes.io/instance ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค io_instance๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.labels.app.kubernetes.io/managed-by target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.labels.app.kubernetes.io/managed-by ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค io_managed-by๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.labels.app.kubernetes.io/name target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.labels.app.kubernetes.io/name ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค io_name๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.labels.app.kubernetes.io/part-of target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.labels.app.kubernetes.io/part-of ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค io_part-of๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.labels.app.kubernetes.io/version target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.labels.app.kubernetes.io/version ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค io_version๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.labels.helm.sh/chart target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.labels.helm.sh/chart ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค helm_sh_chart๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.labels.helmChartName target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.labels.helmChartName ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค helmChartName๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.labels.imageTag target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.labels.imageTag ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค imageTag๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.labels.pod-template-hash target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.labels.pod-template-hash ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค pod-template-hash๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.namespace_name target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.namespace_name ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค namespace_name๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.pod_id target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.pod_id ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค pod_id๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
kubernetes.pod_name target.resource.attribute.labels[].value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ kubernetes.pod_name ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค pod_name๊ฐ€ ์žˆ๋Š” target.resource.attribute.labels ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
level security_result.severity ์›์‹œ ๋กœ๊ทธ์˜ level ํ•„๋“œ๊ฐ€ notice ๋˜๋Š” info์™€ ์ผ์น˜ํ•˜๋ฉด (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์•ˆ ํ•จ) security_result.severity ํ•„๋“œ๊ฐ€ INFORMATIONAL๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
log security_result.description, level, kv_data level ๋ฐ kv_data ํ•„๋“œ๋Š” grok ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์›์‹œ ๋กœ๊ทธ์˜ log ํ•„๋“œ์—์„œ ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค. security_result.description ํ•„๋“œ๋Š” ์ „์ฒด log ํ•„๋“œ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.
logtag additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ logtag ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค logtag๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
method network.http.method ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ method ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
msg metadata.event_type, security_result.description ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ msg ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ security_result.description ํ•„๋“œ๋ฅผ ์ฑ„์šฐ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. metadata.event_type ํ•„๋“œ๋Š” msg ํ•„๋“œ์˜ ์ฝ˜ํ…์ธ ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. * msg์— Internal user created or updated์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ USER_CREATION * msg์— Authorization Initiated Succesfully, Authentication Initiated Successfully ๋˜๋Š” Authentication Successful์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ USER_LOGIN * msg์— Token Generated ๋˜๋Š” token verified์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ USER_RESOURCE_ACCESS * has_principal์™€ has_target๊ฐ€ ๋ชจ๋‘ true์ด๋ฉด NETWORK_CONNECTION * has_principal์ด true์ธ ๊ฒฝ์šฐ STATUS_UPDATE * ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด GENERIC_EVENT์ž…๋‹ˆ๋‹ค.
path principal.file.full_path ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ path ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
principalId additional.fields[].value.string_value, principal.user.userid ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ principalId ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค principalId๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. principalId ํ•„๋“œ๊ฐ€ clientId์ด ์•„๋‹ˆ๊ณ  ๋น„์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด principal.user.userid ํ•„๋“œ๋ฅผ ์ฑ„์šฐ๋Š” ๋ฐ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
principalType additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ principalType ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค principalType๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
protocol network.application_protocol ์›์‹œ ๋กœ๊ทธ์˜ protocol ํ•„๋“œ๊ฐ€ HTTP (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์•ˆ ํ•จ)์™€ ์ผ์น˜ํ•˜๋ฉด network.application_protocol ํ•„๋“œ๊ฐ€ HTTP๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
referrer network.http.referral_url ์ด ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ referrer ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ค๊ณ  ๋”ฐ์˜ดํ‘œ๊ฐ€ ์‚ญ์ œ๋œ ํ›„ network.http.referral_url ํ•„๋“œ์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
relVersion metadata.product_version ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ relVersion ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
remoteAddr additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ remoteAddr ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค remoteAddr๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
requestId additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ requestId ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค requestId๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
requestTime additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ requestTime ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค requestTime๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
responseCode network.http.response_code ์ˆซ์ž ๊ฐ’์€ grok ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์›์‹œ ๋กœ๊ทธ์˜ responseCode ํ•„๋“œ์—์„œ ์ถ”์ถœ๋˜๊ณ  ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜์–ด network.http.response_code ํ•„๋“œ์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
request method, path, protocol method, path, protocol ํ•„๋“œ๋Š” ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ญ์ œํ•œ ํ›„ ์›์‹œ ๋กœ๊ทธ์˜ request ํ•„๋“œ์—์„œ grok ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค.
server target.asset.hostname, target.hostname ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ server ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ target.hostname ๋ฐ target.asset.hostname ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
service additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ service ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค service๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
status network.http.response_code ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ status ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜๋˜๊ณ  network.http.response_code ํ•„๋“œ์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
stream additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ stream ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค stream๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
sub additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ sub ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค sub๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
subType additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ subType ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค subType๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
tid additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ tid ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค tid๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
timestamp metadata.event_timestamp ์ด ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ timestamp ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ISO8601 ํƒ€์ž„์Šคํƒฌํ”„๋กœ ํŒŒ์‹ฑ๋ฉ๋‹ˆ๋‹ค.
tname additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ tname ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค tname๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
txnId additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ txnId ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค txnId๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
type additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ type ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค type๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
userAgent network.http.parsed_user_agent, network.http.user_agent ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ userAgent ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ network.http.user_agent ๋ฐ network.http.parsed_user_agent ํ•„๋“œ์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ network.http.parsed_user_agent ํ•„๋“œ๊ฐ€ ํŒŒ์‹ฑ๋œ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
userDN additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ userDN ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค userDN๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
userGuid additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ userGuid ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค userGuid๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
userIdpGuid additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ userIdpGuid ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค userIdpGuid๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
userIP principal.asset.ip, principal.ip, target.asset.ip, target.ip, intermediary.ip IP ์ฃผ์†Œ๋Š” grok ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์›์‹œ ๋กœ๊ทธ์˜ userIP ํ•„๋“œ์—์„œ ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ IP ์ฃผ์†Œ๊ฐ€ principal.ip ๋ฐ principal.asset.ip ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ IP ์ฃผ์†Œ๊ฐ€ target.ip ๋ฐ target.asset.ip ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ IP ์ฃผ์†Œ๊ฐ€ intermediary.ip ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
userLoginId target.user.email_addresses ์›์‹œ ๋กœ๊ทธ์˜ userLoginId ํ•„๋“œ๊ฐ€ ๋น„์–ด ์žˆ์ง€ ์•Š๊ณ  ์ด๋ฉ”์ผ ์ฃผ์†Œ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋ฉด target.user.email_addresses ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
userLoginIdAttributeMappingName target.user.user_display_name ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ userLoginIdAttributeMappingName ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
userRiskLevel additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ userRiskLevel ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค userRiskLevel๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
userRiskScore additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ userRiskScore ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค userRiskScore๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
userIp principal.asset.ip, principal.ip ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ userIp ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ principal.ip ๋ฐ principal.asset.ip ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
userUniversalId additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ userUniversalId ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค userUniversalId๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
vhost additional.fields[].value.string_value ๊ฐ’์€ ์›์‹œ ๋กœ๊ทธ์˜ vhost ํ•„๋“œ์—์„œ ๊ฐ€์ ธ์™€ ํ‚ค vhost๊ฐ€ ์žˆ๋Š” additional.fields ๊ฐ์ฒด์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ extensions.auth.type metadata.event_type ํ•„๋“œ๊ฐ€ USER_LOGIN์ธ ๊ฒฝ์šฐ ๊ฐ’์€ SSO๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ metadata.log_type ๊ฐ’์€ SYMANTEC_VIP_AUTHHUB๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ๋” ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? ์ปค๋ฎค๋‹ˆํ‹ฐ ํšŒ์› ๋ฐ Google SecOps ์ „๋ฌธ๊ฐ€๋กœ๋ถ€ํ„ฐ ๋‹ต๋ณ€์„ ๋ฐ›์œผ์„ธ์š”.