Proofpoint On-Demand 로그 수집

다음에서 지원:

이 문서에서는 기본 제공 API 통합을 사용하여 Proofpoint On-Demand 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 JSON 로그에서 필드를 추출하여 Chronicle UDM 형식으로 변환합니다. 이 파서는 이메일 메타데이터가 포함된 형식과 SMTP 트랜잭션 세부정보가 포함된 형식의 두 가지 기본 로그 형식을 처리하며, 조건부 로직을 사용하여 필드를 적절하게 파싱하고 사용 가능한 데이터를 기반으로 통합 데이터 모델 (UDM) 필드를 채웁니다. 파서는 또한 불필요한 문자 삭제 및 타임스탬프 변환과 같은 데이터 정리도 수행합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • Proofpoint 주문형 원격 Syslog 라이선스
  • Proofpoint에 대한 권한 있는 액세스

Proofpoint On-Demand API 액세스 구성하기

  1. Proofpoint Admin 포털에 로그인합니다.
  2. 클러스터 ID (관리 인터페이스의 오른쪽 상단에 출시 번호 옆에 표시됨)를 복사합니다.
  3. 설정 > API 키 관리로 이동합니다.
  4. 새로 만들기를 클릭하여 새 API 키 만들기 대화상자를 엽니다.
  5. 고유한 이름을 입력합니다(예: Google SecOps Key).
  6. API 키를 생성합니다.
  7. 새 API 키의 더보기 메뉴에서 세부정보 보기를 선택합니다.
  8. API 키를 복사합니다.

피드 설정

피드를 구성하려면 다음 단계를 따르세요.

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. Proofpoint 피드 팩을 클릭합니다.
  4. Proofpoint On-Demand 로그 유형을 선택합니다.
  5. 다음을 클릭합니다.
  6. 다음 입력 파라미터의 값을 지정합니다.
    • 소스 유형: 서드 파티 API
    • 인증 HTTP 헤더: Proofpoint API 키를 Authorization: Bearer {API_KEY} 형식으로 입력하고 다음 WebSocket-Key 데이터가 포함된 새 줄을 추가합니다. Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==
    • 클러스터 ID: 이전에 복사한 Proofpoint 클러스터 ID를 입력합니다.

    고급 옵션

  • 피드 이름: 피드를 식별하는 미리 입력된 값입니다.
  • 애셋 네임스페이스: 피드와 연결된 네임스페이스입니다.
  • 수집 라벨: 이 피드의 모든 이벤트에 적용되는 라벨입니다.
  1. 피드 만들기를 클릭합니다.

UDM 매핑 테이블

다음 표에는 Proofpoint 주문형 로그 필드와 UDM 필드의 매핑이 나와 있습니다.

이벤트 유형 매핑

다음 표에는 Proofpoint On-Demand 이벤트 유형 매핑이 나와 있습니다. 자세한 내용은 Metadata.EventType 및 Metadata를 참고하세요.

이벤트 유형 매핑 비고
EMAIL_TRANSACTION metadata.event_type (([has_sender_email] == "true" or [has_recipient_email] == "true") and (([has_principal] == "true" or [has_principal_user] == "true")))인 경우
GENERIC_EVENT metadata.event_type event_type의 기본 대체입니다.
NETWORK_CONNECTION metadata.event_type [has_principal] == "true" and [has_target] == "true"인 경우
STATUS_UPDATE metadata.event_type [has_principal] == "true"인 경우

일반 로그 필드

로그 필드 UDM 매핑 비고
aliasedRcptsvalue.alias additional.fields
aliasedRcptsvalue.primary additional.fields
alignment.fromDomain additional.fields
alignmentresult.identity security_result.detection_fields
alignmentresult.identityOrg security_result.detection_fields
alignmentresult.result security_result.detection_fields
ALLOW security_result.action [tls][verify] == "OK" 또는 [filter][disposition] in ["continue", "accept", "CLEAR", "OK", "redirect"]인 경우
app_protocol_output network.application_protocol data 필드에서 추출됩니다.
audit.action security_result.about.resource.attribute.labels
audit.level security_result.severity_details data 필드의 키-값 쌍에서 추출됩니다.
audit.resourceType target.resource.name data 필드의 키-값 쌍에서 추출됩니다.
audit.tags.value security_result.detection_fields
audit.user.email principal.user.email_addresses [audit][user][email] =~ "^.+@.+$"인 경우
audit.user.id principal.user.userid data 필드의 키-값 쌍에서 추출됩니다.
audit.user.ipAddress principal.asset.ip,
principal.ip
autheresults.method security_result.detection_fields
autheresults.result additional.fields
BLOCK security_result.action [tls][verify] == "FAIL" 또는 [filter][disposition] in ["discard", "reject"]인 경우
campaignID security_result.detection_fields
cc network.email.cc [cc] =~ "^.+@.+$"인 경우
CHALLENGE security_result.action [filter][disposition] in ["hold", "retry"]인 경우
charsets security_result.detection_fields
classification security_result.detection_fields
cluster security_result.detection_fields
cmd principal.process.command_line data 필드에서 추출됩니다.
completelyRewritten security_result.detection_fields
connection.country principal.location.country_or_region data 필드의 키-값 쌍에서 추출됩니다.
connection.helo network.smtp.helo data 필드의 키-값 쌍에서 추출됩니다.
connection.host principal.asset.hostname,
principal.hostname
data 필드의 키-값 쌍에서 추출됩니다.
connection.ip principal.asset.ip,
principal.ip
connection.resolveStatus additional.fields
connection.sid security_result.detection_fields
connection.tls.inbound.cipher network.tls.cipher data 필드의 키-값 쌍에서 추출됩니다. [tls_cipher] not in ["", "null", "None", "none", "NONE"] AND [tls_version] not in ["", "null", "None", "none", "NONE"]인 경우
connection.tls.inbound.cipherBits additional.fields
connection.tls.inbound.version network.tls.version data 필드의 키-값 쌍에서 추출됩니다. [tls_cipher] not in ["", "null", "None", "none", "NONE"] AND [tls_version] not in ["", "null", "None", "none", "NONE"]인 경우
data network.email.to,
target.user.email_addresses
[email] =~ "^.+@.+$"인 경우
detectedExt additional.fields
detectedName additional.fields
disposition additional.fields
duration security_result.detection_fields
emailaddr target.user.email_addresses
emailaddrnorm target.user.email_addresses
emailaddrparsed target.user.email_addresses
envelope.from network.email.from
ERROR security_result.severity [audit][level] =~ "(?i)(error)"인 경우
eventTime metadata.event_timestamp
event_type security_result.summary
extracted_bytes network.sent_bytes data 필드에서 추출됩니다.
extracted_internal_id additional.fields
extracted_msgid additional.fields
extracted_queue_status additional.fields
extracted_target_host target.asset.hostname,
target.hostname
data 필드에서 추출됩니다.
extracted_throughput additional.fields
extracted_transfer_time additional.fields
FAIL security_result.action [filter][disposition] in ["FAIL", "TEMP"]인 경우
field_ additional.fields NOT = "agent"인 경우
FILTER metadata.product_event_type [is_filter] == "true"인 경우
filter.actions.action additional.fields
filter.actions.isFinal security_result.detection_fields
filter.actions.module additional.fields,
security_result.detection_fields
filter.actions.rule additional.fields,
security_result.detection_fields
filter.disposition security_result.action_details data 필드의 키-값 쌍에서 추출됩니다. [filter_disposition] not in ["", "null", "None", "none", "NONE"]인 경우
filter.durationSecs additional.fields
filter.isMsgEncrypted additional.fields
filter.isMsgInDigest additional.fields
filter.isMsgOnHold additional.fields
filter.isMsgReinjected additional.fields
filter.isMsgSplit additional.fields
filter.langs additional.fields
filter.modules.av.virusNames.0 security_result.threat_name data 필드의 키-값 쌍에서 추출됩니다.
filter.modules.banner.insertedBanner security_result.detection_fields
filter.modules.dkimv.domain security_result.detection_fields
filter.modules.dkimv.result security_result.detection_fields
filter.modules.dkimv.selector security_result.detection_fields
filter.modules.dmarc.filterdResult security_result.detection_fields
filter.modules.dmarc.isVerified additional.fields
filter.modules.dmarc.srvid additional.fields
filter.modules.pdr.v2.response security_result.detection_fields
filter.modules.pdr.v2.rscore additional.fields
filter.modules.spam.authority.analysis additional.fields
filter.modules.spam.authority.cartVersion additional.fields
filter.modules.spam.authority.isComplete additional.fields
filter.modules.spam.authority.isTruncated additional.fields
filter.modules.spam.authority.score additional.fields
filter.modules.spam.classifiers.profile additional.fields
filter.modules.spam.classifiers.status.clx additional.fields
filter.modules.spam.classifiers.status.nostradamus additional.fields
filter.modules.spam.classifiers.status.supernova additional.fields
filter.modules.spam.classifiers.status.uribl additional.fields
filter.modules.spam.scores.classifiers.adult security_result.detection_fields
filter.modules.spam.scores.classifiers.bulk security_result.detection_fields
filter.modules.spam.scores.classifiers.cot additional.fields
filter.modules.spam.scores.classifiers.impostor security_result.detection_fields
filter.modules.spam.scores.classifiers.lowpriority security_result.detection_fields
filter.modules.spam.scores.classifiers.malware security_result.detection_fields
filter.modules.spam.scores.classifiers.mlx security_result.detection_fields
filter.modules.spam.scores.classifiers.mlxlog security_result.detection_fields
filter.modules.spam.scores.classifiers.phish security_result.detection_fields
filter.modules.spam.scores.classifiers.spam security_result.detection_fields
filter.modules.spam.scores.classifiers.suspect security_result.detection_fields
filter.modules.spam.scores.classifiers.unknownsender additional.fields
filter.modules.spam.scores.classifiers.unsafe additional.fields
filter.modules.spam.scores.engine security_result.detection_fields
filter.modules.spam.scores.overall security_result.detection_fields
filter.modules.spam.triggeredClassifier security_result.category_details
filter.modules.spam.version.definitions security_result.summary data 필드의 키-값 쌍에서 추출됩니다.
filter.modules.spam.version.engine metadata.product_version data 필드의 키-값 쌍에서 추출됩니다.
filter.modules.spf.domain additional.fields
filter.modules.urldefense.counts.noRewriteIsEmail additional.fields
filter.modules.urldefense.counts.noRewriteIsExcludedDomain additional.fields
filter.modules.urldefense.counts.noRewriteIsSchemeless additional.fields
filter.modules.urldefense.counts.noRewriteIsUnsupportedScheme additional.fields
filter.modules.urldefense.counts.rewritten additional.fields
filter.modules.urldefense.counts.total security_result.detection_fields
filter.modules.urldefense.counts.unique additional.fields
filter.modules.urldefense.counts.unrewritten additional.fields
filter.modules.urldefense.version.engine additional.fields
filter.modules.zerohour.score additional.fields
filter.msgSizeBytes network.received_bytes data 필드의 키-값 쌍에서 추출됩니다.
filter.origGuid additional.fields
filter.qid additional.fields
filter.quarantine.expirationTs security_result.detection_fields
filter.quarantine.folder security_result.detection_fields
filter.quarantine.folderId security_result.detection_fields
filter.quarantine.module security_result.detection_fields
filter.quarantine.rule security_result.detection_fields
filter.quarantine.type security_result.detection_fields
filter.reinjectedType additional.fields
filter.routes additional.fields
filter.splitType additional.fields
filter.startTime metadata.event_timestamp
filter.suborgs.sender additional.fields
from_hashed additional.fields
fromadd network.email.from data 필드의 키-값 쌍에서 추출됩니다. [fromadd] =~ "^.+@.+$"인 경우
GUID metadata.product_log_id data 필드에서 추출됩니다.
guid metadata.product_log_id data 필드에서 추출됩니다.
headerfromHashedvalue additional.fields
headertoHashedvalue additional.fields
hostname principal.asset.hostname,
principal.hostname
message 필드에서 추출됩니다.
id additional.fields
impostorScore security_result.detection_fields
INBOUND network.direction [rule] == "outbound", [filter][routeDirection] == "inbound" 또는 [quarantineRule] =~ "outbound"인 경우
INFORMATIONAL security_result.severity [audit][level] =~ "(?i)(notice)"인 경우
intermediary.ip intermediary.asset.ip,
intermediary.ip
intermediary.ip1 intermediary.asset.ip,
intermediary.ip
intermediary_hostname intermediary.asset.hostname,
intermediary.hostname
data 필드에서 추출됩니다.
isArchive additional.fields
isCorrupted additional.fields
isDeleted additional.fields
isProtected additional.fields
isTimedOut additional.fields
isVirtual additional.fields
item.cluster security_result.detection_fields
item.GUID security_result.detection_fields
item.headerFrom security_result.detection_fields
item.id security_result.detection_fields
item.impostorScore security_result.detection_fields
item.malwareScore security_result.detection_fields
item.messageID security_result.detection_fields
item.messageSize security_result.detection_fields
item.modulesRun additional.fields
item.phishScore security_result.detection_fields
item.policyRoutes additional.fields
item.QID security_result.detection_fields
item.quarantineFolder security_result.detection_fields
item.quarantineRule security_result.detection_fields
item.sender principal.user.email_addresses [item_sender] =~ "^.+@.+$"인 경우
item.senderIP principal.asset.ip,
principal.ip
item.spamScore security_result.detection_fields
item.subject network.email.subject
item.threats.classification security_result.detection_fields
item.threats.threat security_result.detection_fields
item.threats.threatID security_result.detection_fields
item.threats.threatStatus security_result.detection_fields
item.threats.threatTime security_result.detection_fields
item.threats.threatType security_result.detection_fields
item.threats.threatUrl security_result.detection_fields
key.data security_result.detection_fields
labeledCharset additional.fields
labeledExt additional.fields
labeledMime about.file.mime_type
labeledName about.file.full_path
malwareScore security_result.detection_fields
matches.offset additional.fields
matches.part additional.fields
MEDIUM security_result.severity [audit][level] =~ "(?i)(warn)"인 경우
messageID network.email.mail_id data 필드에서 추출됩니다.
messageSize security_result.detection_fields
messageTime metadata.event_timestamp
metadata.customerId principal.resource.attribute.labels
metadata.origin.data.agent network.http.parsed_user_agent,
network.http.user_agent
data 필드의 키-값 쌍에서 추출됩니다.
metadata.origin.data.cid additional.fields
metadata.origin.data.mode additional.fields
metadata.origin.data.theater additional.fields,
principal.location.country_or_region
principal.location.country_or_region는 data 필드의 키-값 쌍에서 추출됩니다.
metadata.origin.data.version metadata.product_version data 필드의 키-값 쌍에서 추출됩니다.
metadata.origin.schemaVersion additional.fields
mod security_result.detection_fields
modulesRun additional.fields
msg.header.cc additional.fields
msg.header.from additional.fields,
principal.user.email_addresses
principal.user.email_addresses는 루프를 사용하여 이 필드에 매핑되며, JSON 배열 요소가 여기에 병합되거나 JSON이 아닌 문자열이 여기에 매핑됩니다.
msg.header.message-id.0 additional.fields,
network.email.mail_id
msg.header.reply-to.0 additional.fields,
network.email.reply_to
msg.header.to additional.fields,
target.user.email_addresses
target.user.email_addresses은 루프를 사용하여 JSON이 아닌 문자열로 여기에 매핑됩니다.
msg.header.x-mailer additional.fields
msg.lang additional.fields
msg.normalizedHeader.from principal.user.email_addresses 루프를 사용하여 이 필드에 매핑됩니다. JSON 배열 요소가 여기에 병합되고 JSON이 아닌 문자열이 여기에 매핑됩니다.
msg.normalizedHeader.subject network.email.subject msg.normalizedHeader.subject가 subject 원시 로그 필드 값과 같지 않은 경우
msg.normalizedHeader.to target.user.email_addresses 루프를 사용하여 이 필드에 매핑됩니다. JSON이 아닌 문자열은 여기에 매핑됩니다.
msg.normalizedHeader.x-mailer additional.fields
msg.parsedAddresses.from.0 additional.fields,
network.email.from
msg.parsedAddresses.to target.user.email_addresses 루프를 사용하여 이 필드에 매핑됩니다. JSON이 아닌 문자열은 여기에 매핑됩니다.
msg.sizeBytes additional.fields
msgBlocked.filename about.file.full_path
msgBlocked.labeledMime about.file.mime_type
msgBlocked.msgPart.detectedSizeBytes about.file.size
msgBlocked.msgPart.md5 about.file.md5
msgheadersubject additional.fields
msgheaderxmailervalue additional.fields
msgPart.dataBase64 additional.fields
msgPart.detectedCharset additional.fields
msgPart.detectedMime additional.fields
msgPart.detectedSizeBytes about.file.size
msgPart.filename about.file.full_path
msgPart.md5 about.file.md5
msgPart.metadata.appversion additional.fields
msgPart.metadata.codepage additional.fields
msgPart.metadata.color-scheme additional.fields
msgPart.metadata.content-language additional.fields
msgPart.metadata.format-detection additional.fields
msgPart.metadata.history[1]/stevt:action additional.fields
msgPart.metadata.history[1]/stevt:softwareagent additional.fields
msgPart.metadata.history[1]/stevt:when additional.fields
msgPart.oContentType additional.fields
msgPart.sha256 about.file.sha256
msgs.metadata._PROOFPOINT_CONTENT_LENGTH_ additional.fields
msgs.metadata.application additional.fields
msgs.metadata.appname additional.fields
msgs.metadata.author security_result.detection_fields
msgs.metadata.company security_result.detection_fields
msgs.metadata.createdate additional.fields
msgs.metadata.documentid additional.fields
msgs.metadata.instanceid additional.fields
msgs.metadata.modifydate additional.fields
msgs.metadata.pagecount additional.fields
msgs.metadata.subject additional.fields
msgs.metadata.title additional.fields
msgs.textExtracted additional.fields
msgUrls.url additional.fields,
security_result.detection_fields
normalizedHeader.x_originating_ip principal.asset.ip,
principal.ip
normalizedHeaderfromHashed additional.fields
normalizedHeaderHashedvalue additional.fields
normalizedHeaderMessageidvalue additional.fields
normalizedheaderreplytohashed additional.fields
normalizedheaderreturnpath additional.fields
oContentType additional.fields
OUTBOUND network.direction [rule] == "outbound", [filter][routeDirection] == "outbound" 또는 [quarantineRule] =~ "outbound"인 경우
parsed.useragent network.http.parsed_user_agent
parsed_stat_value security_result.detection_fields
parsedAddress network.email.cc [parsedAddress] =~ "^.+@.+$"인 경우
parsedAddressesfromHashedvalue additional.fields
parsedaddressesreplytohashed additional.fields
parsedAddrestoHashedvalue additional.fields
phishScore security_result.detection_fields
pid principal.process.pid message 필드에서 추출됩니다.
PoD metadata.product_name 정적 할당
policy_route.* additional.fields [list_values] / map 함수를 사용했습니다.
policyRoutes additional.fields
pps.agent observer.hostname
prod_event_name metadata.product_event_type message 필드에서 추출됩니다.
Proofpoint metadata.vendor_name 정적 할당
QID security_result.detection_fields
QUARANTINE security_result.action [filter][disposition] == "quarantine"인 경우
quarantineFolder security_result.detection_fields
quarantineRule security_result.detection_fields
queryEndTime metadata.collected_timestamp
rcd.error additional.fields
rcd.record additional.fields
rcpt additional.fields,
security_result.detection_fields
rcpt_hashed additional.fields
reply network.email.reply_to data 필드의 키-값 쌍에서 추출됩니다. [reply] =~ "^.+@.+$"인 경우
replytohashed additional.fields
res.emailIdentities.header.from additional.fields
res.emailIdentities.smtp.mailfrom additional.fields
res.emailIdentities.smtp.mailfromHashed additional.fields
res.method additional.fields
res.propspec.header.d additional.fields
res.propspec.header.s additional.fields
rules.name additional.fields
rules.severity additional.fields
s network.session_id data 필드에서 추출됩니다.
safeBlockedListMatches_listType security_result.detection_fields
safeBlockedListMatchesvalue.listType security_result.detection_fields
safeBlockedListMatchesvalue.rule security_result.detection_fields
sandbox.status additional.fields
sec_result_action security_result.action
sec_result_category security_result.category
sender principal.user.email_addresses [sender] =~ "^.+@.+$"인 경우
senderIP principal.asset.ip,
principal.ip
SENDMAIL metadata.product_event_type [message] =~ "sendmail"인 경우
sendmail_hostname principal.asset.hostname,
principal.hostname
data 필드에서 추출됩니다.
sendmail_process_name principal.process.file.full_path data 필드에서 추출됩니다.
sendmail_qid additional.fields
sendmail_ts metadata.collected_timestamp data 필드에서 추출됩니다.
sig.engine security_result.detection_fields
sig.isPresent security_result.detection_fields
sig.signature security_result.detection_fields
sizeDecodedBytes additional.fields
sm.daemon additional.fields
sm.delay additional.fields
sm.dsn additional.fields
sm.from network.email.from data 필드의 키-값 쌍에서 추출됩니다. [email_src] =~ "^.+@.+$"인 경우
sm.guid metadata.product_log_id data 필드의 키-값 쌍에서 추출됩니다. [message] =~ "sendmail"인 경우
sm.mailer additional.fields
sm.messageTs additional.fields
sm.msgid network.email.mail_id data 필드의 키-값 쌍에서 추출됩니다.
sm.nrcpts additional.fields
sm.pri additional.fields
sm.qid security_result.detection_fields
sm.stat security_result.description data 필드의 키-값 쌍에서 추출됩니다.
sm.xdelay additional.fields
smtoemail network.email.to [sm_to_email] =~ "^.+@.+$"인 경우
spamScore security_result.detection_fields
SpamType security_result.detection_fields
subject network.email.subject
suborgs additional.fields
threat security_result.detection_fields
threatType security_result.detection_fields
tls.verify security_result.action_details data 필드의 키-값 쌍에서 추출됩니다. [tls_verify] not in ["", "null", "None", "none", "NONE"]인 경우
to network.email.to [to] =~ "^.+@.+$"인 경우
ts metadata.event_timestamp
uinteger network.received_bytes,
network.sent_bytes
UNKNOWN_ACTION security_result.action [filter][disposition] in ["hold", "retry"]인 경우
UNKNOWN_SEVERITY security_result.severity
urlsource security_result.detection_fields
value additional.fields
x_originating_ip principal.asset.ip,
principal.ip

UDM 매핑 델타 참조

2026년 10월 13일에 Google SecOps는 Proofpoint On-Demand 파서의 새 버전을 출시했습니다. 이 버전에는 Proofpoint On-Demand 로그 필드를 UDM 필드에 매핑하는 방식에 대한 중요한 변경사항과 이벤트 유형 분류 (매핑)에 대한 업데이트가 포함되어 있습니다.

로그 필드 매핑 델타

다음 표에서는 Proofpoint On-Demand 로그 필드가 UDM 필드에 매핑되는 방식의 변경사항을 보여줍니다. 이전 매핑 열에는 2026년 10월 13일 이전에 노출된 필드가 나열되고 현재 매핑 열에는 새 필드가 나열됩니다.

로그 필드 이전 매핑 현재 매핑
connection.sid additional.fields security_result.detection_fields
filter.modules.pdr.v2.response additional.fields security_result.detection_fields
filter.modules.urldefense.counts.total additional.fields security_result.detection_fields
filter.quarantine.expirationTs additional.fields security_result.detection_fields
filter.quarantine.folder additional.fields security_result.detection_fields
filter.quarantine.folderId additional.fields security_result.detection_fields
filter.quarantine.module additional.fields security_result.detection_fields
filter.quarantine.rule additional.fields security_result.detection_fields
filter.quarantine.type additional.fields security_result.detection_fields
messageTime additional.fields metadata.event_timestamp
messagesBlocked.spamScore additional.fields security_result.detection_fields
metadata.customerId additional.fields principal.resource.attribute.labelsmod
msgParts.detectedSizeBytes additional.fields about.file.size
msg_header_from_json_array.value additional.fields principal.user.email_addresses
principal.resource.attribute.labelsmod additional.fields security_result.detection_fields

변경 로그

이 파서의 변경 로그 보기

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.