Transferir registros de actividad de Microsoft Azure

Se admite en los siguientes países:

En este documento, se describen los pasos necesarios para transferir registros de actividad de Microsoft Azure (AZURE_ACTIVITY) a Google Security Operations.

Cómo configurar una cuenta de almacenamiento

Completa los siguientes pasos para configurar una cuenta de almacenamiento:

  1. En la consola de Azure, busca Cuentas de almacenamiento.
  2. Haga clic en Crear.
  3. Selecciona la suscripción, el grupo de recursos, la región, el rendimiento (se recomienda Estándar) y la redundancia (se recomiendan GRS o LRS) que se necesitan para la cuenta. Ingresa un nombre para la nueva cuenta de almacenamiento.
  4. Haz clic en Revisar + crear, revisa la descripción general de la cuenta y haz clic en Crear.
  5. En la página Resumen de la cuenta de almacenamiento, selecciona Llaves de acceso en el panel de navegación izquierdo de la ventana.
  6. Haz clic en Mostrar claves y toma nota de la clave compartida de la cuenta de almacenamiento.
  7. Selecciona Extremos en el panel de navegación izquierdo de la ventana.
  8. Anota el extremo del servicio de Blob. (https://<storageaccountname>.blob.core.windows.net/)

Configura el registro de actividades de Azure

Completa los siguientes pasos para configurar el registro de actividades de Azure:

  1. En la consola de Azure, busca Monitor.
  2. Haz clic en el vínculo Registro de actividad en el panel de navegación izquierdo de la página.
  3. Haz clic en Exportar registros de actividad en la parte superior de la ventana.
  4. Haz clic en Agregar configuración de diagnóstico.
  5. Selecciona todas las categorías que deseas exportar a Google Security Operations.
  6. En Detalles del destino, selecciona Archivar en una cuenta de almacenamiento.
  7. Selecciona la suscripción y la cuenta de almacenamiento que creaste en el paso anterior.
  8. Haz clic en Save.

Configura un feed en Google Security Operations para transferir los registros de Azure

Completa los siguientes pasos para configurar un feed en Google Security Operations para transferir los registros de Azure:

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. Ingresa un nombre único para el Nombre del campo.
  4. Selecciona Microsoft Azure Blob Storage como el Tipo de fuente.
  5. Selecciona Actividad de Microsoft Azure como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Configura los siguientes parámetros de entrada obligatorios:
    • URI de Azure: Ingresa el valor del extremo del servicio de almacenamiento en bloque que registraste antes, con el sufijo insights-activity-logs (por ejemplo, https://acme-azure-chronicle.blob.core.windows.net/insights-activity-logs).
    • El URI es un: selecciona Directorio que incluye subdirectorios.
    • Opción de eliminación de la fuente: Especifica si deseas borrar archivos y directorios después de la transferencia.
    • Clave compartida: Ingresa el valor de la clave compartida que capturaste antes.
  8. Haz clic en Siguiente y, luego, en Enviar.

Referencia de la asignación de campos

Este código del analizador primero inicializa una gran cantidad de campos en cadenas vacías y, luego, realiza una serie de operaciones de manipulación de cadenas y análisis de JSON para extraer información relevante del mensaje de Registro de actividad de Azure. Por último, asigna los datos extraídos a los campos del modelo de datos unificado (UDM), clasifica el tipo de evento y lo enriquece con detalles adicionales, como la gravedad, la información principal y los datos de red.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
category read_only_udm.security_result.category_details Se asigna directamente desde el campo "category" en el registro sin procesar.
callerIpAddress read_only_udm.principal.asset.ip, read_only_udm.principal.ip Se asigna directamente desde el campo "callerIpAddress" en el registro sin formato.
correlationId read_only_udm.security_result.detection_fields.correlationId Se asigna directamente desde el campo "correlationId" en el registro sin formato.
data.callerIpAddress read_only_udm.principal.asset.ip, read_only_udm.principal.ip Se asigna directamente desde el campo "callerIpAddress" dentro del objeto "data" en el registro sin procesar.
data.correlationId read_only_udm.security_result.detection_fields.correlationId Se asigna directamente desde el campo "correlationId" dentro del objeto "data" en el registro sin procesar.
data.DeploymentUnit read_only_udm.target.resource.name Se asigna directamente desde el campo "DeploymentUnit" dentro del objeto "data" en el registro sin procesar.
data.details read_only_udm.metadata.description Se asigna directamente desde el campo "details" dentro del objeto "data" en el registro sin procesar, solo si el campo "details" no es "Unknown".
data.entity read_only_udm.additional.fields.entity Se asignan directamente desde el campo "entity" dentro del objeto "data" en el registro sin procesar.
data.EventName read_only_udm.metadata.product_event_type Se asigna directamente desde el campo "EventName" dentro del objeto "data" en el registro sin procesar.
data.hierarchy read_only_udm.additional.fields.hierarchy Se asignan directamente desde el campo "hierarchy" dentro del objeto "data" en el registro sin procesar.
data.identity.authorization.action read_only_udm.security_result.detection_fields.action Se asigna directamente desde el campo "action" dentro del objeto "authorization" del objeto "identity" en el registro sin procesar.
data.identity.authorization.evidence.principalId read_only_udm.principal.user.product_object_id, read_only_udm.principal.resource.product_object_id, read_only_udm.principal.group.product_object_id Se asigna directamente desde el campo "principalId" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar. El campo de la UDM específico al que se asigna depende del valor del campo "principalType". Si "principalType" es "User" o "ServicePrincipal", se asigna a principal.user.product_object_id. Si "principalType" es "Group", se asigna a principal.group.product_object_id. Si "principalType" es "ServicePrincipal", se asigna a principal.resource.product_object_id.
data.identity.authorization.evidence.principalType read_only_udm.principal.resource.resource_subtype Se asigna directamente desde el campo "principalType" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar.
data.identity.authorization.evidence.role read_only_udm.principal.user.role_name Se asigna directamente desde el campo "role" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar.
data.identity.authorization.evidence.roleAssignmentId read_only_udm.principal.resource.attribute.labels.roleAssignmentId Se asigna directamente desde el campo "roleAssignmentId" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar.
data.identity.authorization.evidence.roleAssignmentScope read_only_udm.principal.resource.attribute.labels.roleAssignmentScope Se asigna directamente desde el campo "roleAssignmentScope" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar.
data.identity.authorization.evidence.roleDefinitionId read_only_udm.principal.resource.attribute.labels.roleDefinitionId Se asigna directamente desde el campo "roleDefinitionId" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar.
data.identity.authorization.scope read_only_udm.security_result.detection_fields.scope Se asigna directamente desde el campo "scope" dentro del objeto "authorization" del objeto "identity" en el registro sin procesar.
data.identity.claims.aio read_only_udm.security_result.detection_fields.aio Se asigna directamente desde el campo "aio" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.appid read_only_udm.security_result.detection_fields.appid Se asigna directamente desde el campo "appid" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.appidacr read_only_udm.security_result.detection_fields.appidacr Se asigna directamente desde el campo "appidacr" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.aud read_only_udm.security_result.detection_fields.aud Se asigna directamente desde el campo "aud" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.exp read_only_udm.security_result.detection_fields.exp Se asigna directamente desde el campo "exp" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.http://schemas.microsoft.com/identity/claims/identityprovider read_only_udm.security_result.detection_fields.identityprovider Se asigna directamente desde el campo "http://schemas.microsoft.com/identity/claims/identityprovider" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.http://schemas.microsoft.com/identity/claims/objectidentifier read_only_udm.security_result.detection_fields.objectidentifier Se asigna directamente desde el campo "http://schemas.microsoft.com/identity/claims/objectidentifier" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.http://schemas.microsoft.com/identity/claims/tenantid read_only_udm.security_result.detection_fields.tenantid Se asigna directamente desde el campo "http://schemas.microsoft.com/identity/claims/tenantid" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier read_only_udm.security_result.detection_fields.nameidentifier Se asigna directamente desde el campo "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.iat read_only_udm.security_result.detection_fields.iat Se asigna directamente desde el campo "iat" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.iss read_only_udm.security_result.detection_fields.iss Se asigna directamente desde el campo "iss" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.nbf read_only_udm.security_result.detection_fields.nbf Se asigna directamente desde el campo "nbf" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.rh read_only_udm.security_result.detection_fields.rh Se asigna directamente desde el campo "rh" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.uti read_only_udm.security_result.detection_fields.uti Se asigna directamente desde el campo "uti" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.ver read_only_udm.security_result.detection_fields.ver Se asigna directamente desde el campo "ver" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.claims.xms_tcdt read_only_udm.security_result.detection_fields.xms_tcdt Se asigna directamente desde el campo "xms_tcdt" dentro del objeto "claims" del objeto "identity" en el registro sin procesar.
data.identity.UserName read_only_udm.principal.user.user_display_name Se asigna directamente desde el campo "UserName" dentro del objeto "identity" en el registro sin procesar.
data.level read_only_udm.security_result.severity, read_only_udm.security_result.severity_details Se asigna directamente desde el campo "nivel" dentro del objeto "datos" en el registro sin procesar. El campo "level" también se usa para determinar el valor del campo severity. Si "level" es "Information" o "Informational", severity se establece en "INFORMATIONAL". Si "level" es "Warning", severity se establece en "MEDIUM". Si "level" es "Error", severity se establece en "ERROR". Si "level" es "Critical", severity se establece en "CRITICAL".
data.location read_only_udm.target.location.name Se asigna directamente desde el campo "location" dentro del objeto "data" en el registro sin procesar.
data.operationName read_only_udm.metadata.product_event_type Se asigna directamente desde el campo "operationName" dentro del objeto "data" en el registro sin procesar.
data.properties.EventChannel read_only_udm.additional.fields.properties EventChannel Se asigna directamente desde el campo "EventChannel" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.EventSource read_only_udm.additional.fields.properties EventSource Se asigna directamente desde el campo "EventSource" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.EventId read_only_udm.metadata.product_log_id Se asigna directamente desde el campo "EventId" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.eventProperties.cause read_only_udm.security_result.detection_fields.cause Se asigna directamente desde el campo "cause" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.eventProperties.clientIPAddress read_only_udm.principal.asset.ip, read_only_udm.principal.ip Se asigna directamente desde el campo "clientIPAddress" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.eventProperties.compromisedHost read_only_udm.principal.asset.hostname, read_only_udm.principal.hostname Se asigna directamente desde el campo "compromisedHost" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.eventProperties.currentHealthStatus read_only_udm.security_result.detection_fields.currentHealthStatus Se asigna directamente desde el campo "currentHealthStatus" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.eventProperties.previousHealthStatus read_only_udm.security_result.detection_fields.previousHealthStatus Se asigna directamente desde el campo "previousHealthStatus" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.eventProperties.type read_only_udm.security_result.detection_fields.type Se asigna directamente desde el campo "type" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.eventProperties.User read_only_udm.principal.user.userid Se asigna directamente desde el campo "Usuario" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.eventProperties.userName read_only_udm.principal.user.user_display_name Se asigna directamente desde el campo "userName" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar, después de quitar el prefijo "SECURE\".
data.properties.ipAddress read_only_udm.principal.asset.ip, read_only_udm.principal.ip Se asigna directamente desde el campo "ipAddress" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.legacyChannels read_only_udm.security_result.detection_fields.legacyChannels Se asignan directamente desde el campo "legacyChannels" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.legacyEventDataId read_only_udm.security_result.detection_fields.legacyEventDataId Se asigna directamente desde el campo "legacyEventDataId" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.legacyResourceId read_only_udm.security_result.detection_fields.legacyResourceId Se asigna directamente desde el campo "legacyResourceId" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.legacyResourceGroup read_only_udm.security_result.detection_fields.legacyResourceGroup Se asigna directamente desde el campo "legacyResourceGroup" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.legacyResourceProviderName read_only_udm.security_result.detection_fields.legacyResourceProviderName Se asigna directamente desde el campo "legacyResourceProviderName" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.legacyResourceType read_only_udm.security_result.detection_fields.legacyResourceType Se asigna directamente desde el campo "legacyResourceType" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.legacySubscriptionId read_only_udm.security_result.detection_fields.legacySubscriptionId Se asigna directamente desde el campo "legacySubscriptionId" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.operationId read_only_udm.security_result.detection_fields.operationId Se asigna directamente desde el campo "operationId" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.result read_only_udm.security_result.action_details Se asigna directamente desde el campo "resultado" dentro del objeto "propiedades" del objeto "datos" en el registro sin procesar.
data.properties.statusCode read_only_udm.network.http.response_code Se asigna directamente desde el campo "statusCode" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.suspiciousCommandLine read_only_udm.target.process.command_line Se asigna directamente desde el campo "suspiciousCommandLine" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.suspiciousProcess read_only_udm.target.process.file.full_path Se asigna directamente desde el campo "suspiciousProcess" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.suspiciousProcessId read_only_udm.target.process.pid Se asigna directamente desde el campo "suspiciousProcessId" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.tlsVersion read_only_udm.network.tls.version Se asigna directamente desde el campo "tlsVersion" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.userAgent read_only_udm.network.http.user_agent, read_only_udm.network.http.parsed_user_agent Se asigna directamente desde el campo "userAgent" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.userAgentHeader read_only_udm.network.http.user_agent, read_only_udm.network.http.parsed_user_agent Se asigna directamente desde el campo "userAgentHeader" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.properties.userId read_only_udm.target.user.product_object_id Se asigna directamente desde el campo "userId" dentro del objeto "properties" del objeto "data" en el registro sin procesar.
data.ReleaseVersion read_only_udm.metadata.product_version Se asigna directamente desde el campo "ReleaseVersion" dentro del objeto "data" en el registro sin procesar.
data.resourceId read_only_udm.target.resource.name Se asigna directamente desde el campo "resourceId" dentro del objeto "data" en el registro sin procesar.
data.resourceType read_only_udm.additional.fields.resourceType Se asigna directamente desde el campo "resourceType" dentro del objeto "data" en el registro sin procesar.
data.resultDescription read_only_udm.metadata.description Se asigna directamente desde el campo "resultDescription" dentro del objeto "data" en el registro sin procesar.
data.resultSignature read_only_udm.additional.fields.resultSignature Se asigna directamente desde el campo "resultSignature" dentro del objeto "data" en el registro sin procesar.
data.resultType read_only_udm.security_result.action_details, read_only_udm.additional.fields.resultType Se asigna directamente desde el campo "resultType" dentro del objeto "data" en el registro sin procesar.
data.RoleLocation read_only_udm.target.location.name Se asigna directamente desde el campo "RoleLocation" dentro del objeto "data" en el registro sin procesar.
data.time read_only_udm.metadata.event_timestamp El campo "time" dentro del objeto "data" del registro sin procesar se analiza para extraer la marca de tiempo, que luego se asigna a event_timestamp.
data.uri read_only_udm.network.http.referral_url Se asigna directamente desde el campo "uri" dentro del objeto "data" en el registro sin procesar.
read_only_udm.extensions.auth.mechanism INTERACTIVE Se establece en "INTERACTIVE" si el campo "isInteractive" dentro del objeto "properties" del objeto "data" en el registro sin procesar es "true". De lo contrario, se establece como "MECHANISM_OTHER".
read_only_udm.extensions.auth.type MACHINE Establece el valor en "MACHINE" si el campo "category" en el registro sin procesar es "NonInteractiveUserSignInLogs", "ManagedIdentitySignInLogs" o "ServicePrincipalSignInLogs".
read_only_udm.metadata.log_type AZURE_ACTIVITY Se codifica de forma fija en "AZURE_ACTIVITY".
read_only_udm.metadata.vendor_name Microsoft Está codificado de forma fija en "Microsoft".
read_only_udm.principal.platform WINDOWS, MAC, LINUX, ANDROID Se determina según el valor del campo "properties.test.deviceDetail.operatingSystem". Si contiene "Win", platform se establece en "WINDOWS". Si contiene "Mac", platform se establece en "MAC". Si contiene "Lin", platform se establece en "LINUX". Si contiene "Android", platform se establece en "ANDROID".
read_only_udm.principal.resource.type SERVICE_ACCOUNT, UNSPECIFIED Se determina en función del valor del campo "identity.authorization.evidence.principalType". Si es "ServicePrincipal", type se establece en "SERVICE_ACCOUNT". De lo contrario, se establece como "UNSPECIFIED".
read_only_udm.security_result.action ALLOW, BLOCK, UNKNOWN_ACTION Se determina en función de los valores de los campos "resultType", "status_errorcode" y "statusText". Si "resultType" es "Success", "success", "Succeeded", "Started", "Resolved", "Active", "Updated", "Start", "Accept", "Accepted", "0", o si "status_errorcode" es 0, o si "statusText" es "Success", action se establece en "ALLOW". Si "resultType" es "Failure", "Failed", o si "status_errorcode" no está vacío, o si "resultType" no está vacío, action se establece en "BLOCK". De lo contrario, se establece como "UNKNOWN_ACTION".
read_only_udm.target.cloud.environment MICROSOFT_AZURE Se codifica en "MICROSOFT_AZURE".

Cambios

2024-07-10

  • Si "identity.authorization.evidence.principalType" es igual a "Group", se asigna "identity.authorization.evidence.principalId" a "principal.group.product_object_id".
  • Si "identity.authorization.evidence.principalType" es igual a "User" o "ServicePrincipal", se asignó "identity.authorization.evidence.principalId" a "principal.user.product_object_id".
  • Se agregó gsub para cambiar el campo "properties" a "properties.test" y se quitó el campo que comienza solo con "properties".

2024-07-08

  • Se asignaron "properties.compromisedEntity", "properties.attackedResourceType" y "properties.intent" a "target.resource.attribute.labels".
  • Se asignó "properties.severity" a "security_result.severity".

2024-06-18

  • Cuando no está presente "principal.user.userid", se cambió la asignación de "metadata.event_type" de "USER_RESOURCE_ACCESS" a "GENERIC_EVENT".

2024-06-18

  • Se asignó "operationVersion" a "metadata.product_version".
  • Se asignaron "properties.authenticationRequirementPolicies.requirementProvider" y "properties.authenticationRequirementPolicies.detail" a "security_result.detection_fields".
  • Se asignaron "properties.authenticationDetails.StatusSequence", "properties.correlationId", "properties.uniqueTokenIdentifier" y "properties.authenticationDetails.RequestSequence" a "security_result.detection_fields".
  • Se asignó "properties.appDisplayName" a "target.application".
  • Se asignaron "properties.conditionalAccessStatus", "properties.appliedConditionalAccessPolicies", "properties.authenticationContextClassReferences", "properties.signInTokenProtectionStatus", "properties.originalRequestId", "properties.authenticationProcessingDetails", "properties.clientCredentialType", "properties.processingTimeInMilliseconds", "properties.riskDetail", "properties.riskLevelAggregated", "properties.riskLevelDuringSignIn", "properties.riskState" y "properties.originalTransferMethod" a "additional.fields".
  • Se asignaron "properties.riskEventTypes", "properties.riskEventTypes_v2", "properties.homeTenantId", "properties.autonomousSystemNumber", "properties.autonomousSystemNumber" y "properties.privateLinkDetails" a "additional.fields".
  • Se asignaron "properties.resourceId", "properties.resourceTenantId" y "properties.resourceServicePrincipalId" a "target.resource.attribute.labels".
  • Se asignó "properties.userType" a "principal.user.attribute.roles".
  • Se asignó "properties.userPrincipalName" a "principal.user.email_addresses".
  • Se asignó "properties.clientAppUsed" a "principal.application".
  • Se asignó "properties.deviceDetail.deviceId" a "principal.asset.asset_id" y "principal.asset_id".
  • Se asignó "properties.appId" a "target.resource.attribute.labels".
  • Se asignó "properties.status.additionalDetails" a "security_result.description".
  • Se asignó "properties.responseBody.name" a "security_result.rule_name".
  • Se asignaron "properties.responseBody.properties.sourcePortRanges" y "properties.responseBody.properties.destinationPortRanges" a "additional.fields".
  • Cuando "properties.responseBody.properties.sourceAddressPrefixes" es una sola dirección IP, se asigna a "principal.ip".
  • Cuando "properties.responseBody.properties.sourceAddressPrefixes" es un rango de direcciones IP, se asigna a "additional.fields".
  • Cuando "properties.responseBody.properties.sourceAddressPrefix" es una sola dirección IP o una dirección IP con puerto, se asigna a "principal.ip" y "principal.port".
  • Cuando "properties.responseBody.properties.sourceAddressPrefix" es un rango de direcciones IP, se asigna a "additional.fields".
  • Cuando "properties.responseBody.properties.destinationAddressPrefixes" es una sola dirección IP, se asigna a "target.ip".
  • Cuando "properties.responseBody.properties.destinationAddressPrefixes" es un rango de direcciones IP, se asigna a "additional.fields".
  • Cuando "properties.responseBody.properties.destinationAddressPrefix" es una sola dirección IP o una dirección IP con puerto, se asigna a "target.ip" y "target.port".
  • Cuando "properties.responseBody.properties.destinationAddressPrefix" es un rango de direcciones IP, se asigna a "additional.fields".
  • Cuando "properties.responseBody.properties.sourcePortRange" es un solo puerto, se asigna a "principal.port".
  • Cuando "properties.responseBody.properties.sourcePortRange" es un rango de puertos, se lo asigna a "additional.fields".
  • Cuando "properties.responseBody.properties.destinationPortRange" es un solo puerto, se asigna a "target.port".
  • Cuando "properties.responseBody.properties.destinationPortRange" es un rango de puertos, se asigna a "additional.fields".
  • Se asignaron "properties.id" y "properties.status.errorCode" a "security_result.detection_fields".
  • Se asignó "properties.isInteractive" a "extensions.auth.mechanism".
  • Cuando "properties.deviceDetail.operatingSystem" es "ANDROID", se asigna "principal.platform" a "ANDROID".

2024-06-03

  • Se asignaron "SUBSCRIPTIONS", "RESOURCEGROUPS", "STORAGEACCOUNTS", "PROVIDERS" y "SNAPSHOTS" de "resourceId" a "target.resource.attribute.labels".

2024-05-21

  • Si "identity.authorization.evidence.principalType" es igual a "User", "Group" o "Application", asigna "principal.resource.type" a "UNSPECIFIED".
  • Se asignó "identity.authorization.evidence.role" a "principal.user.role_name".
  • Se asignó "identity.authorization.evidence.principalType" a "principal.resource.resource_subtype".
  • Se asignó "identity.authorization.evidence.principalId" a "principal.user.product_object_id".
  • Se asignaron "identity.authorization.evidence.roleAssignmentId", "identity.authorization.evidence.roleAssignmentScope" y "identity.authorization.evidence.roleDefinitionId" a "principal.resource.attribute.labels".

2024-05-03

  • Cuando "category" es "SignInLogs", se asigna "properties.userDisplayName" a "principal.user.user_display_name".
  • Se asignaron "properties.requestbody.properties.priority" y "properties.response.properties.priority" a "security_result.detection_fields".
  • Se asignó "properties.requestbody.properties.protocol" a "network.ip_protocol".
  • Se asignó "properties.requestbody.properties.direction" a "network.direction".
  • Se asignó "properties.response.properties.protocol" a "network.ip_protocol".
  • Se asignó "properties.response.properties.direction" a "network.direction".
  • Se asignó "properties.response.properties.destinationPortRange" a "target.port".

2024-04-26

  • Se asignó "operationName.value" a "metadata.product_event_type".
  • Se asignó "category.value" a "security_result.category_details".
  • Se asignó "httpRequest.uri" a "network.http.referral_url".
  • Se asignó "httpRequest.method" a "network.http.method".
  • Se asignó "httpRequest.clientIpAddress" a "principal.ip" y "principal.asset.ip".
  • Se asignó "eventDataId" a "security_result.detection_fields".
  • Se asignó "httpRequest.clientRequestId" a "additional.fields".

2024-04-16

  • Se agregó compatibilidad para asignar "network.application_protocol" si se conoce "protocol"; de lo contrario, se asignó "protocol" a "additional.fields".

2024-04-12

  • Se asignó "properties.requestbody.properties.allowBlobPublicAccess" a "security_result.detection_fields".

2024-04-10

  • Se asignó "resourceId" a "target.resource.name".
  • Cuando "resourceId" está presente, se asignan "targetResources.displayName", "identity", "Type" y "properties.resourceDisplayName" a "target.resource.attribute.labels".

2024-03-29

  • Se asignó "ResourceGUID" a "target.resource.product_object_id".
  • Se asignó "Type" a "target.resource.name".
  • Se asignó "ClientCity" a "principal.location.city".
  • Se asignó "ClientCountryOrRegion" a "principal.location.country_or_region".
  • Se asignó "ClientIP" a "principal.ip" y "principal.asset.ip".
  • Se asignó "ClientStateOrProvince" a "principal.location.state".
  • Se asignó "ClientType" a "principal.resource.attribute.labels".
  • Se asignó "IKey" a "target.resource.attribute.labels".
  • Se asignaron "_BilledSize" y "DurationMs" a "additional.fields".
  • Se asignaron "OperationId", "SDKVersion" y "ItemCount" a "properties.operationId".
  • Se asignaron "ParentId", "Properties.WebtestLocationId", "Properties.FullTestResultAvailable", "Properties.SourceId", "Properties._MS_altIds", "Properties.WebtestArmResourceName", "Properties.SyntheticMonitorId" y "Success" a "security_result.detection_fields".
  • Se asignó "Mensaje" a "metadata.description".
  • Se asignó "Id" a "principal.resource.product_object_id".
  • Se asignó "Nombre" a "principal.resource.name".

2024-03-25

  • Cuando "category" es "ServicePrincipalSignInLogs", "NonInteractiveUserSigninLogs" o "ManagedIdentitySignInLogs", se asignó "createdDateTime" a "metadata.event_timestamp".
  • Se asignaron "properties.authenticationDetails.authenticationStepDateTime", "properties.authenticationDetails.authenticationMethod", "properties.authenticationDetails.authenticationStepResultDetail", "properties.authenticationDetails.authenticationStepRequirement", "properties.id" y "properties.resourceServicePrincipalId" a "security_result.detection_fields".
  • Se asignó "properties.authenticationDetails.succeeded" a "security_result.action_details".

2024-03-25

  • Cuando "properties.requestbody.Properties.RoleDefinitionId" no esté vacío, establece "security_result.detection_fields.key" en "RequestBody roleDefinitionId".
  • Se asignaron "properties.roleDefinitionId", "properties.principalId", "properties.responseBody.properties.roleDefinitionId" y "properties.requestbody.Properties.PrincipalId" a "security_result.detection_fields".

2024-03-13

  • Se asignaron "properties.requestbody.properties.roleDefinitionId" y "properties.requestbody.properties.principalId" a "security_result.detection_fields".

2024-03-05

  • Se asignó "resultType" a "security_result.action_details".
  • Se asignó "properties.requestbody.Properties.PrincipalId" a "principal.user.userid".
  • Cuando "resultType" no está vacío, se asigna "properties.status.failureReason" a "security_result.detection_fields".
  • Se asignaron "properties.hardwareProfile.vmSize", "properties.provisioningState" y "properties.requestbody.Properties.RoleDefinitionId" a "security_result.detection_fields".

2024-02-13

Corrección de errores:

  • Cuando "identity.UserName" sea un correo electrónico, asígnale "principal.user.email_addresses". De lo contrario, asígnale "principal.user.user_display_name".

2024-02-12

  • Se agregó compatibilidad con los registros JSON que se descartan.
  • Se asignó "OperationNameValue" a "metadata.product_event_type".
  • Se asignaron "properties.eventDataId", "properties.subscriptionId", "properties.resourceGroup" y "properties.resourceProviderValue" a "security_result.detection_fields".
  • Se asignó "Caller" a "principal.user.userid".
  • Se asignó "ActivityStatusValue" a "security_result.action".

2024-02-01

  • Corrección de errores:
  • Cuando el campo "category" tiene el valor "NonInteractiveUserSignInLogs" o "OperationName" es "Sign-in activity", cambia "metadata.event_type" de "USER_LOGOUT" a "USER_LOGIN".
  • Se asignaron "properties.incomingTokenType" y "properties.deviceDetail.browser" a "additional.fields".
  • Se asignó "properties.userAgent" a "network.http.user_agent".
  • Cuando no existe el valor "properties.userAgent", solo se asigna "properties.deviceDetail.browser" a "network.http.user_agent".
  • Se asignó el campo "user_agent_field" analizado a "network.http.parsed_user_agent".
  • Se asignaron "properties.eventProperties.clientIPAddress" y "callerIpAddress" a "principal.asset.ip".
  • Se asignaron "hostname", "rscname" y "properties.eventProperties.compromisedHost" a "principal.asset.hostname".

2024-01-07

  • Corrección de errores:
  • Se agregó un patrón Grok para validar "callerIpAddress" como una dirección IP.
  • Se asignó "properties.accountName" a "principal.user.userid".
  • Se asignó "uri" a "network.http.refferal_url".
  • Se asignó "properties.userAgentHeader" a "network.http.user_agent".
  • Se asignó "properties.tlsVersion" a "network.tls.version".
  • Se asignó "statusCode" a "network.http.response_code".
  • Se asignó "protocolo" a "network.application_protocol".
  • Se asignaron "properties.clientRequestId", "properties.etag", "properties.objectKey", "properties.responseMd5" y "resourceType" a "additional.fields".

2023-10-09

  • Se agregó compatibilidad para analizar registros sin analizar.
  • Se cambiaron los nombres de los siguientes campos:
  • De "OperationName" a "operationName".
  • De "CorrelationId" a "correlationId".
  • De "Category" a "category".
  • De "ResourceId" a "resourceId".
  • De "ResultType" a "resultType".
  • Se asignaron "ProviderName" y "ProviderGuid" a "security_result.detection_fields".
  • Se asignó "ResultDescription" a "metadata.description".

2023-09-13

Mejora:

  • Se asignó "properties.eventCategory" a "security_result.detection_fields".
  • Se asignó "opproperties.operationIderationName" a "security_result.detection_fields".
  • Se asignó "properties.eventName" a "security_result.summary".
  • Se asignó "properties.EventName" a "security_result.summary".
  • Se asignó "properties.legacyResourceType" a "security_result.detection_fields".
  • Se asignó "properties.CallerCredentialType" a "security_result.detection_fields".
  • Se asignó "properties.EventChannel" a "security_result.detection_fields".
  • Se asignó "properties.EventSource" a "security_result.detection_fields".
  • Se asignó "properties.legacyResourceId" a "security_result.detection_fields".
  • Se asignó "properties.eventProperties.User" a "principal.user.id" y "principal.user.email_addresses".
  • Se asignó "properties.Caller" a "principal.user.id" y "principal.user.email_addresses".
  • Se asignó "caller" a "principal.user.id" y "principal.user.email_addresses".
  • Se asignó "properties.IpAddress" a "principal.ip".
  • Se asignó "properties.Description_scrubbed" a "security_result.description".

2023-02-22

Mejora:

  • Se asignó "tenantId" a "metadata.product_deployment_id".
  • Se asignó "operationName" a "metadata.product_event_type".
  • Se asignó "category" a "security_result.category_details".
  • Se asignó "callerIpAddress" a "principal.ip".
  • Se asignó "identity" a "target.resource.name".
  • Se asignó "result" a "security_result.action_details".
  • Se asignó "properties.activityDisplayName" a "security_result.summary".
  • Se asignó "location" a "principal.location.name".
  • Se asignó "Nivel" a "security_result.severity_details".
  • Se asignó "properties.initiatedBy.app.displayName" a "principal.application".
  • Se asignó "properties.targetResources.displayName" a "target.resource.name".
  • Se asignó "properties.targetResources.id" a "target.resource.product_object_id".
  • Se asignó "properties.targetResources.modifiedProperties.displayName" a "target.user.attribute.labels".
  • Se asignó "properties.additionalDetails" a "additional.fields".
  • Se asignó "properties.loggedByService" a "target.application".
  • Se asignó "properties.userId" a "target.user.product_object_id".
  • Se asignó "properties.resourceDisplayName" a "target.resource.name".
  • Se asignó "properties.location.city" a "principal.location.city".
  • Se asignó "properties.location.state" a "principal.location.state".
  • Se asignó "properties.location.countryOrRegion" a "principal.location.country_or_region".
  • Se asignó "properties.ipAddress" a "principal.ip".
  • Se asignó "properties.location.geoCoordinates.latitude" a "principal.location.region_latitude".
  • Se asignó "properties.location.geoCoordinates.longitude" a "principal.location.region_longitude".
  • Se asignó "properties.servicePrincipalId" a "principal.user.userid".
  • Se asignó "properties.servicePrincipalName" a "principal.user.user_display_name".
  • Se asignaron "properties.tokenIssuerType", "properties.authenticationProcessingDetails.0.value", "properties.operationType", "properties.authenticationRequirement", "properties.deviceDetail.trustType" a "additional.fields".
  • Se asignó "resultDescription" a "metadata.description".
  • Se asignó "properties.userDisplayName" a "target.user.user_display_name".
  • Se asignó "properties.appDisplayName" a "target.application".
  • Se asignó "properties.userType" a "principal.user.attribute.roles".
  • Se asignó "properties.status.failureReason" a "security_result.action_details".
  • Se asignó "properties.deviceDetail.operatingSystem" a "principal.platform_version".
  • Se asignó "properties.deviceDetail.displayName" a "principal.asset.hardware".
  • Se asignó "properties.deviceDetail.browser" a "network.http.user_agent".
  • Se asignó “properties.userPrincipalName” a “principal.user.email_addresses”.

2022-11-28

Mejora:

  • Se asignó el campo "correlationId" a "security_result.detection_fields".
  • Se asignó el campo "level" a "security_result.severity_details".
  • Se agregó la siguiente asignación para la categoría "ResourceHealth" :
  • Se asignó el campo "properties.legacyEventDataId" a "security_result.detection_fields".
  • Se asignó el campo "properties.legacyChannels" a "security_result.detection_fields".
  • Se asignó el campo "properties.legacySubscriptionId" a "security_result.detection_fields".
  • Se asignó el campo "properties.legacyResourceGroup" a "security_result.detection_fields".
  • Se asignó el campo "properties.legacyResourceProviderName" a "security_result.detection_fields".
  • Se asignó el campo "properties.eventProperties.currentHealthStatus" a "security_result.detection_fields".
  • Se asignó el campo "properties.eventProperties.previousHealthStatus" a "security_result.detection_fields".
  • Se asignó el campo "properties.eventProperties.type" a "security_result.detection_fields".
  • Se asignó el campo "properties.eventProperties.cause" a "security_result.detection_fields".

2022-09-26

Mejora: Se agregaron campos.

  • Se asignó "tenantId " a "metadata.product_deployment_id".

2022-06-20

Mejora:

  • Se agregó la verificación condicional para "entity_properties".
  • cuando "category" es igual a "Security"
  • Se asignó "properties.eventProperties.clientIPAddress" a "principal.ip".
  • Se asignó "properties.eventProperties.accountSessionId" a "network.session_id".
  • Se asignó "properties.eventProperties.suspiciousProcess" a "target.process.file.full_path".
  • Se asignó "properties.eventProperties.suspiciousCommandLine" a "target.process.command_line".
  • Se asignó "properties.eventProperties.suspiciousProcessId" a "target.process.pid".
  • Se asignó "properties.eventProperties.compromisedHost" a "principal.hostname".
  • Se asignó "resultDescription" a "metadata.description".
  • Se asignó "properties.legacySubscriptionId" a "security_result.detection_fields".
  • Se asignó "properties.legacyResourceProviderName" a "security_result.detection_fields".

2022-05-19

Mejora: Se agregaron y modificaron varios campos.

  • claims, Identity, aud, tenantid, principalId, action, appidacr, iat, exp, nbf, rh, uti, ver, xms_tcdt, principalType, roleAssignmentId, appid, aio, iss, nameidentifier, roleDefinitionId, scope mapped to security_result.detection_fields
  • resultSignature, resultType, hierarchy, resource_type, entity, asignados a additional.fields
  • RoleLocation asignado a location.name.
  • category asignada a security_result.category_details.