Coletar registros do Proofpoint On-Demand

Compatível com:

Neste documento, explicamos como ingerir registros do Proofpoint On-Demand no Google Security Operations usando a integração de API integrada. O analisador extrai campos de registros JSON, transformando-os no formato UDM do Chronicle. Ele processa dois formatos de registro principais: um com metadados de e-mail e outro com detalhes da transação SMTP, usando lógica condicional para analisar campos adequadamente e preencher os campos do Modelo de Dados Unificado (UDM) com base nos dados disponíveis. O analisador também realiza a limpeza de dados, como remover caracteres estranhos e converter carimbos de data/hora.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Instância do Google SecOps
  • Licença do Proofpoint On-Demand Remote Syslog
  • Acesso privilegiado ao Proofpoint

Configurar o acesso à API Proofpoint On-Demand

  1. Faça login no portal do administrador do Proofpoint.
  2. Copie o ID do cluster (exibido no canto superior direito da interface de gerenciamento, ao lado do número da versão).
  3. Acesse Configurações > Gerenciamento de chaves de API.
  4. Clique em Criar nova para abrir a caixa de diálogo Criar nova chave de API.
  5. Insira um Nome exclusivo (por exemplo, Google SecOps Key).
  6. Gere a chave de API.
  7. Selecione Ver detalhes no menu de reticências da nova chave de API.
  8. Copie a chave de API.

Configurar feeds

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Clique no pacote de feed do Proofpoint.
  4. Selecione o tipo de registro Proofpoint On-Demand.
  5. Clique em Próxima.
  6. Especifique valores para os seguintes parâmetros de entrada:
    • Tipo de origem: API de terceiros
    • Cabeçalhos HTTP de autenticação: insira a chave de API do Proofpoint no formato Authorization: Bearer {API_KEY} e adicione uma nova linha com os seguintes dados de WebSocket-Key: Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==.
    • ID do cluster: digite o ID do cluster do Proofpoint que você copiou anteriormente.

    Opções avançadas

  • Nome do feed: um valor predefinido que identifica o feed.
  • Namespace do recurso: namespace associado ao feed.
  • Rótulos de ingestão: rótulos aplicados a todos os eventos desse feed.
  1. Clique em Criar feed.

Tabela de mapeamento de UDM

As tabelas a seguir listam os mapeamentos de campos de registro do Proofpoint On-Demand para campos do UDM.

Mapeamentos de tipo de evento

A tabela a seguir lista os mapeamentos de tipo de evento do Proofpoint On-Demand. Para mais informações, consulte Metadata.EventType e Metadata.

Tipo de evento Mapeamento Comentários
EMAIL_TRANSACTION metadata.event_type Se (([has_sender_email] == "true" or [has_recipient_email] == "true") and (([has_principal] == "true" or [has_principal_user] == "true"))).
GENERIC_EVENT metadata.event_type O substituto padrão para event_type.
NETWORK_CONNECTION metadata.event_type Se [has_principal] == "true" and [has_target] == "true".
STATUS_UPDATE metadata.event_type Se [has_principal] == "true".

Campos de registro gerais

Campo de registro mapeamento de UDM Comentários
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 Se [tls][verify] == "OK" ou [filter][disposition] in ["continue", "accept", "CLEAR", "OK", "redirect"].
app_protocol_output network.application_protocol Extraído de um campo data.
audit.action security_result.about.resource.attribute.labels
audit.level security_result.severity_details Extraído de um par de chave-valor em um campo data.
audit.resourceType target.resource.name Extraído de um par de chave-valor em um campo data.
audit.tags.value security_result.detection_fields
audit.user.email principal.user.email_addresses Se [audit][user][email] =~ "^.+@.+$".
audit.user.id principal.user.userid Extraído de um par de chave-valor em um campo data.
audit.user.ipAddress principal.asset.ip,
principal.ip
autheresults.method security_result.detection_fields
autheresults.result additional.fields
BLOCK security_result.action Se [tls][verify] == "FAIL" ou [filter][disposition] in ["discard", "reject"].
campaignID security_result.detection_fields
cc network.email.cc Se [cc] =~ "^.+@.+$".
CHALLENGE security_result.action Se [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 Extraído de um campo data.
completelyRewritten security_result.detection_fields
connection.country principal.location.country_or_region Extraído de um par de chave-valor em um campo data.
connection.helo network.smtp.helo Extraído de um par de chave-valor em um campo data.
connection.host principal.asset.hostname,
principal.hostname
Extraído de um par de chave-valor em um campo 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 Extraído de um par de chave-valor em um campo data. Se [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 Extraído de um par de chave-valor em um campo data. Se [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
Se [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 Se [audit][level] =~ "(?i)(error)".
eventTime metadata.event_timestamp
event_type security_result.summary
extracted_bytes network.sent_bytes Extraído de um campo data.
extracted_internal_id additional.fields
extracted_msgid additional.fields
extracted_queue_status additional.fields
extracted_target_host target.asset.hostname,
target.hostname
Extraído de um campo data.
extracted_throughput additional.fields
extracted_transfer_time additional.fields
FAIL security_result.action Se [filter][disposition] in ["FAIL", "TEMP"].
field_ additional.fields Se NOT = "agent".
FILTER metadata.product_event_type Se [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 Extraído de um par de chave-valor em um campo data. Se [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 Extraído de um par de chave-valor em um campo 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 Extraído de um par de chave-valor em um campo data.
filter.modules.spam.version.engine metadata.product_version Extraído de um par de chave-valor em um campo 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 Extraído de um par de chave-valor em um campo 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 Extraído de um par de chave-valor em um campo data. Se [fromadd] =~ "^.+@.+$".
GUID metadata.product_log_id Extraído de um campo data.
guid metadata.product_log_id Extraído de um campo data.
headerfromHashedvalue additional.fields
headertoHashedvalue additional.fields
hostname principal.asset.hostname,
principal.hostname
Extraído de um campo message.
id additional.fields
impostorScore security_result.detection_fields
INBOUND network.direction Se [rule] == "outbound", [filter][routeDirection] == "inbound" ou [quarantineRule] =~ "outbound".
INFORMATIONAL security_result.severity Se [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
Extraído de um campo 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 Se [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 Se [audit][level] =~ "(?i)(warn)".
messageID network.email.mail_id Extraído de um campo 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
Extraído de um par de chave-valor em um campo 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 é extraído de um par de chave-valor em um campo data.
metadata.origin.data.version metadata.product_version Extraído de um par de chave-valor em um campo 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 é mapeado para esse campo usando um loop, com elementos de matriz JSON mesclados aqui ou strings não JSON mapeadas aqui.
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 é mapeado aqui como uma string não JSON usando um loop.
msg.header.x-mailer additional.fields
msg.lang additional.fields
msg.normalizedHeader.from principal.user.email_addresses Mapeado para este campo usando um loop. Os elementos da matriz JSON são mesclados aqui, e as strings que não são JSON são mapeadas aqui.
msg.normalizedHeader.subject network.email.subject Se msg.normalizedHeader.subject não for igual ao valor do campo de registro bruto subject.
msg.normalizedHeader.to target.user.email_addresses Mapeado para este campo usando um loop. As strings que não são JSON são mapeadas aqui.
msg.normalizedHeader.x-mailer additional.fields
msg.parsedAddresses.from.0 additional.fields,
network.email.from
msg.parsedAddresses.to target.user.email_addresses Mapeado para este campo usando um loop. As strings que não são JSON são mapeadas aqui.
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 Se [rule] == "outbound", [filter][routeDirection] == "outbound" ou [quarantineRule] =~ "outbound".
parsed.useragent network.http.parsed_user_agent
parsed_stat_value security_result.detection_fields
parsedAddress network.email.cc Se [parsedAddress] =~ "^.+@.+$".
parsedAddressesfromHashedvalue additional.fields
parsedaddressesreplytohashed additional.fields
parsedAddrestoHashedvalue additional.fields
phishScore security_result.detection_fields
pid principal.process.pid Extraído de um campo message.
PoD metadata.product_name Atribuição estática.
policy_route.* additional.fields [list_values] / usou a função de mapa.
policyRoutes additional.fields
pps.agent observer.hostname
prod_event_name metadata.product_event_type Extraído de um campo message.
Proofpoint metadata.vendor_name Atribuição estática.
QID security_result.detection_fields
QUARANTINE security_result.action Se [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 Extraído de um par de chave-valor em um campo data. Se [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 Extraído de um campo 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 Se [sender] =~ "^.+@.+$".
senderIP principal.asset.ip,
principal.ip
SENDMAIL metadata.product_event_type Se [message] =~ "sendmail".
sendmail_hostname principal.asset.hostname,
principal.hostname
Extraído de um campo data.
sendmail_process_name principal.process.file.full_path Extraído de um campo data.
sendmail_qid additional.fields
sendmail_ts metadata.collected_timestamp Extraído de um campo 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 Extraído de um par de chave-valor em um campo data. Se [email_src] =~ "^.+@.+$".
sm.guid metadata.product_log_id Extraído de um par de chave-valor em um campo data. Se [message] =~ "sendmail".
sm.mailer additional.fields
sm.messageTs additional.fields
sm.msgid network.email.mail_id Extraído de um par de chave-valor em um campo data.
sm.nrcpts additional.fields
sm.pri additional.fields
sm.qid security_result.detection_fields
sm.stat security_result.description Extraído de um par de chave-valor em um campo data.
sm.xdelay additional.fields
smtoemail network.email.to Se [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 Extraído de um par de chave-valor em um campo data. Se [tls_verify] not in ["", "null", "None", "none", "NONE"].
to network.email.to Se [to] =~ "^.+@.+$".
ts metadata.event_timestamp
uinteger network.received_bytes,
network.sent_bytes
UNKNOWN_ACTION security_result.action Se [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

Referência de delta de mapeamento de UDM

Em 13 de outubro de 2026, o Google SecOps lançou uma nova versão do analisador do Proofpoint On-Demand, que inclui mudanças significativas no mapeamento dos campos de registro do Proofpoint On-Demand para os campos do UDM e atualizações nas classificações de tipo de evento (mapeamentos).

Delta de mapeamento de campo de registro

A tabela a seguir mostra as mudanças na forma como os campos de registro do Proofpoint On-Demand são mapeados para os campos do UDM. A coluna Mapeamento antigo lista os campos expostos antes de 13 de outubro de 2026, e a coluna Mapeamento atual lista os novos campos.

Campo de registro Mapeamento antigo Mapeamento atual
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

Registro de alterações

Confira o registro de alterações deste analisador

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.