收集 reCAPTCHA Enterprise 日志
本文档介绍了如何通过启用 Google Cloud 遥测数据提取来收集 reCAPTCHA Enterprise 日志,以及 reCAPTCHA Enterprise 日志的日志字段如何映射到 Google Security Operations Unified Data Model (UDM) 字段。
如需了解详情,请参阅 Google Security Operations 数据注入概览。
典型部署包括已启用提取到 Google Security Operations 的 reCAPTCHA Enterprise 日志。每个客户部署都可能有所不同,并且可能更复杂。
假设某项部署包含以下组件:
- Google Cloud:您要从中收集日志的服务和产品。 Google Cloud 
- reCAPTCHA Enterprise 日志:已启用以提取到 Google Security Operations 的 reCAPTCHA Enterprise 日志。 
- Google Security Operations:Google Security Operations 会保留并分析 reCAPTCHA Enterprise 的日志。 
您需要使用注入标签来标识将原始日志数据标准化为结构化 UDM 格式的解析器。本文档适用于具有 GCP_RECAPTCHA_ENTERPRISE 注入标签的解析器。
准备工作
- 确保部署架构中的所有系统都配置为使用世界协调时间 (UTC) 时区。 
- 确保您已专门为以下内容启用 reCAPTCHA Enterprise 的平台日志记录: - 评估日志
- 注释日志
 
配置 Google Cloud 以进行提取
如需将 reCAPTCHA Enterprise 日志注入到 Google Security Operations,请按照将 Google Cloud 数据注入到 Google Security Operations 页面上的步骤操作。
如果您在注入 reCAPTCHA Enterprise 日志时遇到问题,请与 Google Security Operations 支持团队联系。
字段映射参考
字段映射参考文档:reCAPTCHA Enterprise - 评估
下表列出了 Assessment 日志类型的日志字段及其对应的 UDM 字段。
| Log field | UDM mapping | Logic | 
|---|---|---|
|  | metadata.product_name | The metadata.product_nameUDM field is set toreCAPTCHA. | 
|  | metadata.vendor_name | The metadata.vendor_nameUDM field is set toGoogle Cloud Platform. | 
|  | metadata.event_type | The metadata.event_typeUDM field is set toUSER_UNCATEGORIZED. | 
| jsonPayload.@type | metadata.product_event_type | |
| jsonPayload.name | security_result.detection_fields[json_payload_name] | |
| insertId | metadata.product_log_id | |
| timestamp | metadata.event_timestamp | |
| logName | metadata.url_back_to_product | The https://console.cloud.google.com/logs?%{logName}field is mapped to themetadata.url_back_to_productUDM field. | 
| receiveTimestamp | metadata.collected_timestamp | |
| resource.labels.key_id | target.resource.product_object_id | |
| resource.type | target.resource.resource_subtype | |
| resource.labels.location | target.location.name | |
| resource.labels.resource_container | target.resource.attribute.labels[resource_labels_resource_container] | |
| labels.backend_language | target.resource.attribute.labels[labels_backend_language] | |
| labels.demo_key | target.resource.attribute.labels[labels_demo_key] | |
| jsonPayload.event.userAgent | network.http.user_agent | |
| jsonPayload.event.userIpAddress | principal.ip | |
|  | principal.resource.resource_type | If jsonPayload.event.tokenlog field value is not empty, thenprincipal.resource.resource_typeUDM field is set toCREDENTIAL. | 
| jsonPayload.event.token | principal.resource.product_object_id | |
| jsonPayload.event.siteKey | security_result.detection_fields[event_site_key] | |
| jsonPayload.event.hashedAccountId | principal.user.attribute.labels[event_hashed_account_id] | |
| jsonPayload.event.expectedAction | principal.user.attribute.labels[event_expected_action] | |
| jsonPayload.tokenProperties.action | principal.resource.attribute.labels[token_properties_action] | |
| jsonPayload.tokenProperties.createTime | principal.resource.attribute.creation_time | |
| jsonPayload.tokenProperties.hostname | target.hostname | |
| jsonPayload.tokenProperties.invalidReason | principal.resource.attribute.labels[token_properties_invalid_reason] | |
| jsonPayload.tokenProperties.valid | principal.resource.attribute.labels[token_properties_valid] | |
| jsonPayload.tokenProperties.androidPackageName | principal.resource.attribute.labels[token_properties_android_package_name] | |
| jsonPayload.tokenProperties.iosBundleId | principal.resource.attribute.labels[token_properties_ios_bundle_id] | |
|  | security_result.verdict_info.verdict_type | If the jsonPayload.riskAnalysis.reasonslog field value is not empty, then thesecurity_result.verdict_info.verdict_typeUDM field is set toPROVIDER_ML_VERDICT. | 
| jsonPayload.riskAnalysis.reasons | security_result.verdict_info.category_details | If the indexvalue is equal to0, then thejsonPayload.riskAnalysis.reasonslog field is mapped to thesecurity_result.verdict_info.category_detailsUDM field.Else, the jsonPayload.riskAnalysis.reasonslog field is mapped to thesecurity_result.detection_fields.risk_analysis_reasonsUDM field. | 
| jsonPayload.riskAnalysis.reasons | security_result.detection_fields[risk_analysis_reasons] | If the indexvalue is equal to0, then thejsonPayload.riskAnalysis.reasonslog field is mapped to thesecurity_result.verdict_info.category_detailsUDM field.Else, the jsonPayload.riskAnalysis.reasonslog field is mapped to thesecurity_result.detection_fields.risk_analysis_reasonsUDM field. | 
| jsonPayload.riskAnalysis.score | security_result.risk_score | |
| jsonPayload.riskAnalysis.extendedVerdictReasons | security_result.detection_fields[risk_analysis_extended_verdict_reasons] | |
| jsonPayload.event.express | additional.fields[event_express] | |
| jsonPayload.event.requestedUri | target.url | |
| jsonPayload.event.wafTokenAssessment | security_result.detection_fields[event_waf_token_assessment] | |
| jsonPayload.event.ja3 | network.tls.client.ja3 | |
| jsonPayload.event.headers | additional.fields[event_headers_%{index}] | The jsonPayload.event.headerslog field is mapped to theadditional.fields[event_headers_%{index}]UDM field. | 
| jsonPayload.event.firewallPolicyEvaluation | additional.fields[event_firewall_policy_evaluation] | |
| jsonPayload.event.userInfo.createAccountTime | principal.user.attribute.creation_time | |
| jsonPayload.event.userInfo.accountId | principal.user.userid | If the jsonPayload.event.userInfo.accountIdlog field value is not empty, then thejsonPayload.event.userInfo.accountIdlog field is mapped to theprincipal.user.useridUDM field.Else, the jsonPayload.event.transactionData.user.accountId log field is mapped to theprincipal.user.useridUDM field. | 
| jsonPayload.event.userInfo.userIds.email | principal.user.email_addresses | |
| jsonPayload.event.userInfo.userIds.phoneNumber | principal.user.phone_numbers | |
| jsonPayload.event.userInfo.userIds.username | principal.user.user_display_name | If the indexvalue is equal to0, then thejsonPayload.event.userInfo.userIds.usernamelog field is mapped to theprincipal.user.user_display_nameUDM field.Else, the jsonPayload.event.userInfo.userIds.usernamelog field is mapped to theprincipal.user.attribute.labels.event_user_info_user_ids_usernameUDM field. | 
| jsonPayload.event.userInfo.userIds.username | principal.user.attribute.labels[event_user_info_user_ids_username] | If the indexvalue is equal to0, then thejsonPayload.event.userInfo.userIds.usernamelog field is mapped to theprincipal.user.user_display_nameUDM field.Else, the jsonPayload.event.userInfo.userIds.usernamelog field is mapped to theprincipal.user.attribute.labels.event_user_info_user_ids_usernameUDM field. | 
| jsonPayload.event.transactionData.transactionId | security_result.detection_fields[event_transaction_data_transaction_id] | |
| jsonPayload.event.transactionData.paymentMethod | security_result.detection_fields[event_transaction_data_payment_method] | |
| jsonPayload.event.transactionData.cardBin | security_result.detection_fields[event_transaction_data_card_bin] | |
| jsonPayload.event.transactionData.cardLastFour | security_result.detection_fields[event_transaction_data_card_last_four] | |
| jsonPayload.event.transactionData.currencyCode | security_result.detection_fields[event_transaction_data_currency_code] | |
| jsonPayload.event.transactionData.value | security_result.detection_fields[event_transaction_data_value] | |
| jsonPayload.event.transactionData.shippingValue | security_result.detection_fields[event_transaction_data_shipping_value] | |
| jsonPayload.event.transactionData.shippingAddress.recipient | principal.user.attribute.labels[event_transaction_data_shipping_address_recipient] | |
| jsonPayload.event.transactionData.shippingAddress.address | principal.user.personal_address.name | If the indexvalue is equal to0, then thejsonPayload.event.transactionData.shippingAddress.addresslog field is mapped to theprincipal.user.personal_address.nameUDM field.Else, the jsonPayload.event.transactionData.shippingAddress.addresslog field is mapped to theprincipal.user.attribute.labels.event_transaction_data_shipping_address_addressUDM field. | 
| jsonPayload.event.transactionData.shippingAddress.address | principal.user.attribute.labels[event_transaction_data_shipping_address_address] | If the indexvalue is equal to0, then thejsonPayload.event.transactionData.shippingAddress.addresslog field is mapped to theprincipal.user.personal_address.nameUDM field.Else, the jsonPayload.event.transactionData.shippingAddress.addresslog field is mapped to theprincipal.user.attribute.labels.event_transaction_data_shipping_address_addressUDM field. | 
| jsonPayload.event.transactionData.shippingAddress.locality | principal.user.personal_address.city | |
| jsonPayload.event.transactionData.shippingAddress.administrativeArea | principal.user.personal_address.state | |
| jsonPayload.event.transactionData.shippingAddress.regionCode | principal.user.personal_address.country_or_region | |
| jsonPayload.event.transactionData.shippingAddress.postalCode | principal.user.attribute.labels[event_transaction_data_shipping_address_postal_code] | |
| jsonPayload.event.transactionData.billingAddress.recipient | about.user.attribute.labels[event_transaction_data_billing_address_recipient] | |
| jsonPayload.event.transactionData.billingAddress.address | about.user.personal_address.name | If the indexvalue is equal to0, then thejsonPayload.event.transactionData.billingAddress.addresslog field is mapped to theabout.user.personal_address.nameUDM field.Else, the jsonPayload.event.transactionData.billingAddress.addresslog field is mapped to theabout.user.attribute.labels.event_transaction_data_billing_address_addressUDM field. | 
| jsonPayload.event.transactionData.billingAddress.address | about.user.attribute.labels[event_transaction_data_billing_address_address] | If the indexvalue is equal to0, then thejsonPayload.event.transactionData.billingAddress.addresslog field is mapped to theabout.user.personal_address.nameUDM field.Else, the jsonPayload.event.transactionData.billingAddress.addresslog field is mapped to theabout.user.attribute.labels.event_transaction_data_billing_address_addressUDM field. | 
| jsonPayload.event.transactionData.billingAddress.locality | about.user.personal_address.city | |
| jsonPayload.event.transactionData.billingAddress.administrativeArea | about.user.personal_address.state | |
| jsonPayload.event.transactionData.billingAddress.regionCode | about.user.personal_address.country_or_region | |
| jsonPayload.event.transactionData.billingAddress.postalCode | about.user.attribute.labels[event_transaction_data_billing_address_postal_code] | |
| jsonPayload.event.transactionData.user.accountId | principal.user.userid | If the jsonPayload.event.userInfo.accountIdlog field value is not empty, then thejsonPayload.event.userInfo.accountIdlog field is mapped to theprincipal.user.useridUDM field.Else, the jsonPayload.event.transactionData.user.accountId log field is mapped to theprincipal.user.useridUDM field. | 
| jsonPayload.event.transactionData.user.creationMs | principal.user.attribute.creation_time | |
| jsonPayload.event.transactionData.user.email | principal.user.email_addresses | |
| jsonPayload.event.transactionData.user.emailVerified | principal.user.attribute.labels[event_transaction_data_user_email_verified] | |
| jsonPayload.event.transactionData.user.phoneNumber | principal.user.phone_numbers | |
| jsonPayload.event.transactionData.user.phoneVerified | principal.user.attribute.labels[event_transaction_data_user_phone_verified] | |
| jsonPayload.event.transactionData.merchants.accountId | about.user.userid | |
| jsonPayload.event.transactionData.merchants.creationMs | about.user.attribute.creation_time | |
| jsonPayload.event.transactionData.merchants.email | about.user.email_addresses | |
| jsonPayload.event.transactionData.merchants.emailVerified | about.user.attribute.labels[event_transaction_data_merchants_email_verified] | |
| jsonPayload.event.transactionData.merchants.phoneNumber | about.user.phone_numbers | |
| jsonPayload.event.transactionData.merchants.phoneVerified | about.user.attribute.labels[event_transaction_data_merchants_phone_verified] | |
| jsonPayload.event.transactionData.gatewayInfo.name | security_result.detection_fields[event_transaction_data_gateway_info_name] | |
| jsonPayload.event.transactionData.gatewayInfo.gatewayResponseCode | security_result.detection_fields[event_transaction_data_gateway_info_gateway_response_code] | |
| jsonPayload.event.transactionData.gatewayInfo.avsResponseCode | security_result.detection_fields[event_transaction_data_gateway_info_avs_response_code] | |
| jsonPayload.event.transactionData.gatewayInfo.cvvResponseCode | security_result.detection_fields[event_transaction_data_gateway_info_cvv_response_code] | |
| jsonPayload.event.transactionData.items.name | security_result.detection_fields[event_transaction_data_items_name] | |
| jsonPayload.event.transactionData.items.value | security_result.detection_fields[event_transaction_data_items_value] | |
| jsonPayload.event.transactionData.items.quantity | security_result.detection_fields[event_transaction_data_items_quantity] | |
| jsonPayload.event.transactionData.items.merchantAccountId | security_result.detection_fields[event_transaction_data_items_merchant_account_id] | |
| jsonPayload.accountVerification.endpoints.requestToken | principal.user.attribute.labels[account_verification_endpoint_request_token] | |
| jsonPayload.accountVerification.endpoints.lastVerificationTime | principal.user.attribute.labels[account_verification_endpoint_last_verification_time] | |
| jsonPayload.accountVerification.endpoints.emailAddress | principal.user.email_addresses | |
| jsonPayload.accountVerification.endpoints.phoneNumber | principal.user.phone_numbers | |
| jsonPayload.accountVerification.languageCode | additional.fields[account_verification_language_code] | |
|  | security_result.action | If the jsonPayload.accountVerification.latestVerificationResultlog field value is equal toSUCCESS_USER_VERIFIED, then thesecurity_result.actionUDM field is set toCHALLENGE.Else, if the jsonPayload.accountVerification.latestVerificationResultlog field value is equal toERROR_USER_NOT_VERIFIED, then thesecurity_result.actionUDM field is set toFAIL.Else, if the jsonPayload.accountVerification.latestVerificationResultlog field value is equal toERROR_RECIPIENT_NOT_ALLOWED, then thesecurity_result.actionUDM field is set toBLOCK.Else, if the jsonPayload.accountVerification.latestVerificationResultlog field value is equal toERROR_VERDICT_MISMATCH, then thesecurity_result.actionUDM field is set toALLOW_WITH_MODIFICATION.Else, the security_result.actionUDM field is set toUNKNOWN_ACTION. | 
| jsonPayload.accountVerification.latestVerificationResult | security_result.action_details | |
| jsonPayload.accountDefenderAssessment.labels | security_result.detection_fields[account_defender_assessment_labels] | |
| jsonPayload.privatePasswordLeakVerification.lookupHashPrefix | principal.user.attribute.labels[private_password_leak_verification_lookup_hash_prefix] | |
| jsonPayload.privatePasswordLeakVerification.encryptedUserCredentialsHash | principal.user.attribute.labels[private_password_leak_verification_encrypted_user_credentials_hash] | |
| jsonPayload.privatePasswordLeakVerification.encryptedLeakMatchPrefixes | principal.user.attribute.labels[private_password_leak_verification_encrypted_leak_match_prefixes] | |
| jsonPayload.privatePasswordLeakVerification.reencryptedUserCredentialsHash | principal.user.attribute.labels[private_password_leak_verification_reencrypted_user_credentials_hash] | |
|  | network.http.response_code | If the jsonPayload.firewallPolicyAssessment.error.codelog field value is equal to0, then thenetwork.http.response_codeUDM field is set to200.Else, if the jsonPayload.firewallPolicyAssessment.error.codelog field value contains one of the following values, then thenetwork.http.response_codeUDM field is set to400.
 jsonPayload.firewallPolicyAssessment.error.codelog field value is equal to16, then thenetwork.http.response_codeUDM field is set to401.Else, if the jsonPayload.firewallPolicyAssessment.error.codelog field value is equal to7, then thenetwork.http.response_codeUDM field is set to403.Else, if the jsonPayload.firewallPolicyAssessment.error.codelog field value is equal to5, then thenetwork.http.response_codeUDM field is set to404.Else, if the jsonPayload.firewallPolicyAssessment.error.codelog field value contains one of the following values, then thenetwork.http.response_codeUDM field is set to409.
 jsonPayload.firewallPolicyAssessment.error.codelog field value is equal to8, then thenetwork.http.response_codeUDM field is set to429.Else, if the jsonPayload.firewallPolicyAssessment.error.codelog field value is equal to1, then thenetwork.http.response_codeUDM field is set to499.Else, if the jsonPayload.firewallPolicyAssessment.error.codelog field value contains one of the following values, then thenetwork.http.response_codeUDM field is set to500.
 jsonPayload.firewallPolicyAssessment.error.codelog field value is equal to12, then thenetwork.http.response_codeUDM field is set to501.Else, if the jsonPayload.firewallPolicyAssessment.error.codelog field value is equal to14, then thenetwork.http.response_codeUDM field is set to503.Else the jsonPayload.firewallPolicyAssessment.error.codelog field value is equal to4, then thenetwork.http.response_codeUDM field is set to504. | 
| jsonPayload.firewallPolicyAssessment.error.message | security_result.detection_fields[firewall_policy_assessment_error_message] | |
| jsonPayload.firewallPolicyAssessment.error.details | security_result.detection_fields[firewall_policy_assessment_error_details] | |
| jsonPayload.fraudPreventionAssessment.transactionRisk | security_result.detection_fields[fraud_prevention_assessment_transaction_risk] | |
| jsonPayload.fraudPreventionAssessment.stolenInstrumentVerdict.risk | security_result.detection_fields[fraud_prevention_assessment_stolen_instrument_verdict_risk] | |
| jsonPayload.fraudPreventionAssessment.cardTestingVerdict.risk | security_result.detection_fields[fraud_prevention_assessment_card_testing_erdict_risk] | |
| jsonPayload.fraudPreventionAssessment.behavioralTrustVerdict.trust | security_result.detection_fields[fraud_prevention_assessment_behavioral_trust_verdict_trust] | |
| jsonPayload.fraudSignals.userSignals.activeDaysLowerBound | security_result.detection_fields[fraud_signals_user_signals_active_days_lower_bound] | |
| jsonPayload.fraudSignals.userSignals.syntheticRisk | security_result.detection_fields[fraud_signals_user_signals_synthetic_risk] | |
| jsonPayload.fraudSignals.cardSignals.cardLabels | security_result.detection_fields[fraud_signals_card_signals_card_labels] | |
| jsonPayload.firewallPolicyAssessment.firewallPolicy.name | intermediary.resource.name | |
|  | intermediary.resource.resource_type | If the jsonPayload.firewallPolicyAssessment.firewallPolicy.namelog field value is not empty, then theintermediary.resource.resource_typeUDM field is set toFIREWALL_RULE. | 
| jsonPayload.firewallPolicyAssessment.firewallPolicy.description | intermediary.resource.attribute.labels[firewall_policy_assessment_description] | |
| jsonPayload.firewallPolicyAssessment.firewallPolicy.path | intermediary.resource.attribute.labels[firewall_policy_assessment_path] | |
| jsonPayload.firewallPolicyAssessment.firewallPolicy.conditions | intermediary.resource.attribute.labels[firewall_policy_assessment_conditions] | |
|  | security_result.action | If the jsonPayload.firewallPolicyAssessment.firewallPolicy.actions.allowlog field value is not empty, then thesecurity_result.actionUDM field is set toALLOW. | 
|  | security_result.action | If the jsonPayload.firewallPolicyAssessment.firewallPolicy.actions.blocklog field value is not empty, then thesecurity_result.actionUDM field is set toBLOCK. | 
|  | security_result.action | If the jsonPayload.firewallPolicyAssessment.firewallPolicy.actions.redirectlog field value is not empty, then thesecurity_result.actionUDM field is set toCHALLENGE. | 
| jsonPayload.firewallPolicyAssessment.firewallPolicy.actions.substitute.path | target.url_metadata.last_final_url | If the indexvalue is equal to0, then thejsonPayload.firewallPolicyAssessment.firewallPolicy.actions.substitute.pathlog field is mapped to thetarget.url_metadata.last_final_urlUDM field.Else, the jsonPayload.firewallPolicyAssessment.firewallPolicy.actions.substitute.pathlog field is mapped to theintermediary.resource.attribute.labels.firewall_policy_assessment_firewall_policy_actions_substitute_pathUDM field. | 
| jsonPayload.firewallPolicyAssessment.firewallPolicy.actions.substitute.path | intermediary.resource.attribute.labels[firewall_policy_assessment_firewall_policy_actions_substitute_path] | If the indexvalue is equal to0, then thejsonPayload.firewallPolicyAssessment.firewallPolicy.actions.substitute.pathlog field is mapped to thetarget.url_metadata.last_final_urlUDM field.Else, the jsonPayload.firewallPolicyAssessment.firewallPolicy.actions.substitute.pathlog field is mapped to theintermediary.resource.attribute.labels.firewall_policy_assessment_firewall_policy_actions_substitute_pathUDM field. | 
| jsonPayload.firewallPolicyAssessment.firewallPolicy.actions.setHeader.key | intermediary.resource.attribute.labels[firewall_policy_assessment_firewall_policy_actions_set_header_key] | |
| jsonPayload.firewallPolicyAssessment.firewallPolicy.actions.setHeader.value | intermediary.resource.attribute.labels[firewall_policy_assessment_firewall_policy_actions_set_header_value] | 
字段映射参考:reCAPTCHA Enterprise - 注释
下表列出了 Annotation 日志类型的日志字段及其对应的 UDM 字段。
| Log field | UDM mapping | Logic | 
|---|---|---|
|  | metadata.product_name | The metadata.product_nameUDM field is set toreCAPTCHA. | 
|  | metadata.vendor_name | The metadata.vendor_nameUDM field is set toGoogle Cloud Platform. | 
|  | metadata.event_type | The metadata.event_typeUDM field is set toGENERIC_EVENT. | 
| jsonPayload.@type | metadata.product_event_type | |
| insertId | metadata.product_log_id | |
| timestamp | metadata.event_timestamp | |
| logName | metadata.url_back_to_product | The https://console.cloud.google.com/logs?%{logName}field is mapped to themetadata.url_back_to_productUDM field. | 
| receiveTimestamp | metadata.collected_timestamp | |
| jsonPayload.name | security_result.detection_fields[json_payload_name] | |
| resource.labels.key_id | target.resource.product_object_id | |
| resource.type | target.resource.resource_subtype | |
| resource.labels.location | target.location.name | |
| resource.labels.resource_container | target.resource.attribute.labels[resource_labels_resource_container] | |
| labels.backend_language | target.resource.attribute.labels[labels_backend_language] | |
| labels.demo_key | target.resource.attribute.labels[labels_demo_key] | |
|  | security_result.verdict_info.verdict_response | If the jsonPayload.annotationlog field value is equal toLEGITIMATE, then thesecurity_result.verdict_info.verdict_responseUDM field is set toBENIGN.Else, if the jsonPayload.annotationlog field value is equal toFRAUDULENT, then thesecurity_result.verdict_info.verdict_responseUDM field is set toMALICIOUS.Else, the jsonPayload.annotationlog field value is equal toANNOTATION_UNSPECIFIED, then thesecurity_result.verdict_info.verdict_responseUDM field is set toVERDICT_RESPONSE_UNSPECIFIED. | 
| jsonPayload.reasons | security_result.verdict_info.category_details | If the indexvalue is equal to0, then thejsonPayload.reasonslog field is mapped to thesecurity_result.verdict_info.category_detailsUDM field.Else, the jsonPayload.reasonslog field is mapped to thesecurity_result.detection_fields.reasonsUDM field. | 
| jsonPayload.reasons | security_result.detection_fields[reasons] | If the indexvalue is equal to0, then thejsonPayload.reasonslog field is mapped to thesecurity_result.verdict_info.category_detailsUDM field.Else, the jsonPayload.reasonslog field is mapped to thesecurity_result.detection_fields.reasonsUDM field. | 
| jsonPayload.accountId | target.user.userid | |
| jsonPayload.hashedAccountId | target.user.attribute.labels[hashed_account_id] | |
| jsonPayload.transactionEvent.eventType | security_result.detection_fields[transaction_event_event_type] | |
| jsonPayload.transactionEvent.reason | security_result.detection_fields[transaction_event_reason] | |
| jsonPayload.transactionEvent.value | security_result.detection_fields[transaction_event_value] | |
| jsonPayload.transactionEvent.eventTime | security_result.detection_fields[transaction_event_event_time] | 
后续步骤
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。