Transferir registros de actividad de Microsoft Azure
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:
- En la consola de Azure, busca Cuentas de almacenamiento.
- Haga clic en Crear.
- 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.
- Haz clic en Revisar + crear, revisa la descripción general de la cuenta y haz clic en Crear.
- En la página Resumen de la cuenta de almacenamiento, selecciona Llaves de acceso en el panel de navegación izquierdo de la ventana.
- Haz clic en Mostrar claves y toma nota de la clave compartida de la cuenta de almacenamiento.
- Selecciona Extremos en el panel de navegación izquierdo de la ventana.
- 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:
- En la consola de Azure, busca Monitor.
- Haz clic en el vínculo Registro de actividad en el panel de navegación izquierdo de la página.
- Haz clic en Exportar registros de actividad en la parte superior de la ventana.
- Haz clic en Agregar configuración de diagnóstico.
- Selecciona todas las categorías que deseas exportar a Google Security Operations.
- En Detalles del destino, selecciona Archivar en una cuenta de almacenamiento.
- Selecciona la suscripción y la cuenta de almacenamiento que creaste en el paso anterior.
- 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:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- Ingresa un nombre único para el Nombre del campo.
- Selecciona Microsoft Azure Blob Storage como el Tipo de fuente.
- Selecciona Actividad de Microsoft Azure como el Tipo de registro.
- Haz clic en Siguiente.
- 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.
- 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.