Transfiere registros de actividad de Microsoft Azure
En este documento, se describen los pasos necesarios para transferir los registros de actividad de Microsoft Azure (AZURE_ACTIVITY
) a Google Security Operations.
Configura una cuenta de almacenamiento
Completa los siguientes pasos para configurar una cuenta de Storage:
- 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 recomienda GRS o LRS) necesarios para la cuenta y, luego, ingresa un nombre para la nueva cuenta de almacenamiento.
- Haz clic en Revisar y crear, revisa el resumen de la cuenta y haz clic en Crear.
- En la página Resumen de la cuenta de almacenamiento, selecciona Claves de acceso en el panel de navegación izquierdo de la ventana.
- Haz clic en Mostrar claves y anota la clave compartida de la cuenta de almacenamiento.
- Selecciona Extremos en la navegación izquierda de la ventana.
- Toma nota del extremo del servicio de Blob. (https://<storageaccountname>.blob.core.windows.net/)
Configura el registro de actividad de Azure
Completa los siguientes pasos para configurar el registro de actividad de Azure:
- En la consola de Azure, busca Monitor.
- Haz clic en el vínculo Registro de actividad en la navegación de la izquierda de la página.
- Haz clic en Export Activity Logs en la parte superior de la ventana.
- Haz clic en Agregar parámetro de configuración de diagnóstico.
- Selecciona todas las categorías que desees exportar a Google SecOps.
- 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.
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds
- Centro de contenido > Paquetes de contenido
Configura feeds en Configuración del SIEM > Feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración del SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- Ingresa un nombre único para el Nombre del campo.
- Selecciona Microsoft Azure Blob Storage como el Tipo de fuente.
- Selecciona Microsoft Azure Activity 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 de Blob Service que registraste anteriormente, con el sufijo insights-activity-logs (por ejemplo, https://acme-azure-chronicle.blob.core.windows.net/insights-activity-logs).
- URI is a: Selecciona Directory which includes subdirectories.
- Opción de eliminación de la fuente: Especifica si se deben borrar los 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.
Configura feeds desde el Centro de contenido
Especifica valores para los siguientes campos:
- URI de Azure: Ingresa el valor del extremo de Blob Service que registraste anteriormente, con el sufijo insights-activity-logs (por ejemplo, https://acme-azure-chronicle.blob.core.windows.net/insights-activity-logs).
- URI is a: Selecciona Directory which includes subdirectories.
- Opción de eliminación de la fuente: Especifica si se deben borrar los archivos y directorios después de la transferencia.
- Clave compartida: Ingresa el valor de la clave compartida que capturaste antes.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
- Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
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 manipulaciones de cadenas y operaciones de análisis de JSON para extraer información relevante del mensaje del registro de actividad de Azure. Por último, asigna los datos extraídos a los campos del modelo de datos unificado (UDM), categoriza el tipo de evento y lo enriquece con detalles adicionales, como la gravedad, la información principal y los datos de la 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 procesar. |
correlationId | read_only_udm.security_result.detection_fields.correlationId |
Se asigna directamente desde el campo "correlationId" en el registro sin procesar. |
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 asigna directamente desde el campo "entidad" dentro del objeto "datos" 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 asigna 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 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 "level" dentro del objeto "data" 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 como "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 "User" 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 asigna 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 "result" dentro del objeto "properties" del objeto "data" 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" en el 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 |
Se establece en "MACHINE" si el campo "category" del registro sin procesar es "NonInteractiveUserSignInLogs", "ManagedIdentitySignInLogs" o "ServicePrincipalSignInLogs". |
read_only_udm.metadata.log_type |
AZURE_ACTIVITY |
Se codifica de forma rígida como "AZURE_ACTIVITY". |
read_only_udm.metadata.vendor_name |
Microsoft |
Se codifica de forma rígida como "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 según el 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 uno de "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" o "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 como "MICROSOFT_AZURE". |