Recopila registros de Azure Application Gateway

Compatible con:

En este documento, se explica cómo recopilar registros de Azure Application Gateway configurando un feed de Google Security Operations. Este analizador controla las estructuras JSON de uno o varios registros, extrae campos del array "records", realiza conversiones de tipos de datos, asigna campos al UDM y enriquece los datos con metadatos y campos derivados, como el tipo de conexión de red. También controla la lógica específica para diferentes valores de operationName, y extrae las direcciones IP, las subredes y otros detalles de configuración pertinentes.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Acceso con privilegios a una suscripción de Azure
  • Un entorno (inquilino) de la puerta de enlace de aplicación de Azure en Azure

Configura la cuenta de Azure Storage

  1. En la consola de Azure, busca Cuentas de almacenamiento.
  2. Haz clic en Crear.
  3. Especifica valores para los siguientes parámetros de entrada:
    • Suscripción: Selecciona la suscripción.
    • Grupo de recursos: Selecciona el grupo de recursos.
    • Región: Selecciona la región.
    • Rendimiento: Selecciona el rendimiento (se recomienda Estándar).
    • Redundancia: Selecciona la redundancia (se recomienda GRS o LRS).
    • Nombre de la cuenta de almacenamiento: Ingresa un nombre para la nueva cuenta de almacenamiento.
  4. Haz clic en Revisar + crear.
  5. Revisa el resumen de la cuenta y haz clic en Crear.
  6. En la página Descripción general de la cuenta de almacenamiento, selecciona el submenú Claves de acceso en Seguridad y redes.
  7. Haz clic en Mostrar junto a key1 o key2.
  8. Haz clic en Copiar en el portapapeles para copiar la clave.
  9. Guarda la llave en un lugar seguro para usarla más adelante.
  10. En la página Información general de la cuenta de almacenamiento, selecciona el submenú Extremos en Configuración.
  11. Haz clic en Copiar al portapapeles para copiar la URL del extremo del servicio Blob. (por ejemplo, https://<storageaccountname>.blob.core.windows.net)
  12. Guarda la URL del extremo en una ubicación segura para usarla más adelante.

Cómo configurar Azure Application Gateway

  1. Accede al portal de Azure.
  2. Ve al grupo de recursos que desees.
  3. Selecciona Puerta de enlace de aplicación (aparecerá la ventana Puerta de enlace de aplicación).
  4. En la sección Monitoring, selecciona Configuración de diagnóstico > Activar el diagnóstico.
  5. Selecciona Agregar configuración de diagnóstico (en la ventana Configuración de diagnóstico, se muestran los parámetros de configuración de los registros de diagnóstico).
  6. En la sección log, haz lo siguiente:
    1. Selecciona la casilla de verificación ApplicationGatewayAccessLog.
    2. Selecciona la casilla de verificación ApplicationGatewayFirewallLog.
  7. Para almacenar registros en la cuenta de almacenamiento, haz lo siguiente:
    1. Selecciona la casilla de verificación Archivar en una cuenta de almacenamiento.
    2. En la lista Subscription, selecciona una suscripción existente.
    3. En la lista Cuenta de almacenamiento, selecciona una cuenta de almacenamiento existente.

Configura feeds

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 desde Configuración del SIEM > Feeds

Para configurar varios feeds para diferentes tipos de registros dentro de esta familia de productos, consulta Cómo configurar feeds por producto.

Para configurar un solo feed, sigue estos pasos:

  1. Ve a SIEM Settings > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de Azure Application Gateway).
  5. Selecciona Microsoft Azure Blob Storage como el Tipo de fuente.
  6. Selecciona Azure Application Gateway como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifica valores para los siguientes parámetros de entrada:

    • URI de Azure: Es la URL del extremo del blob.
      • ENDPOINT_URL/BLOB_NAME
        • Reemplaza lo siguiente:
          • ENDPOINT_URL: Es la URL del extremo del blob. (https://<storageaccountname>.blob.core.windows.net)
          • BLOB_NAME: Es el nombre del blob. (como insights-logs-<logname>)
    • URI is a: Selecciona el TIPO de URI según la configuración del flujo de registros (Single file | Directory | Directory which includes subdirectories).
    • Opciones de eliminación de la fuente: Selecciona la opción de eliminación según tus preferencias de transferencia.
    • Clave compartida: Es la clave de acceso a Azure Blob Storage.
    • Espacio de nombres del recurso: Es el espacio de nombres del recurso.
    • Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
  9. Haz clic en Siguiente.

  10. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Configura feeds desde el Centro de contenido

Especifica valores para los siguientes campos:

  • URI de Azure: Es la URL del extremo del blob.
    • ENDPOINT_URL/BLOB_NAME
      • Reemplaza lo siguiente:
        • ENDPOINT_URL: URL del extremo del blob (https://<storageaccountname>.blob.core.windows.net)
        • BLOB_NAME: Es el nombre del blob (por ejemplo, insights-logs-<logname>).
  • El URI es un: Selecciona el TIPO de URI según la configuración del flujo de registros (Archivo único | Directorio | Directorio que incluye subdirectorios).
  • Opciones de eliminación de la fuente: Selecciona la opción de eliminación según tus preferencias de transferencia.
  • Clave compartida: Es la clave de acceso a Azure Blob Storage.

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 recurso: Espacio de nombres asociado al feed.
  • Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
Category metadata.product_event_type Se asigna directamente desde el campo Category.
ClientOperationId additional.fields[].key:"ClientOperationId", value.string_value Se asigna directamente desde el campo ClientOperationId.
CorrelationRequestId additional.fields[].key:"CorrelationRequestId", value.string_value Se asigna directamente desde el campo CorrelationRequestId.
GatewayManagerVersion additional.fields[].key:"GatewayManagerVersion", value.string_value Se asigna directamente desde el campo GatewayManagerVersion.
category metadata.product_event_type Se asigna directamente desde el campo category.
level security_result.severity Se asigna directamente desde el campo level y se convierte a mayúsculas. Si el valor es "WARNING", la gravedad se establece en "HIGH" y security_result.severity_details se establece en el valor original.
properties.clientIP principal.ip, principal.asset.ip Se asigna directamente desde el campo properties.clientIP.
properties.clientPort principal.port Se asigna directamente desde el campo properties.clientPort y se convierte en un número entero.
properties.clientResponseTime additional.fields[].key:"clientResponseTime", value.string_value Se asigna directamente desde el campo properties.clientResponseTime.
properties.configuration.BgpConfiguration.GatewayConfig.Asn security_result.detection_fields[].key:"ASN", value Se asigna directamente desde el campo properties.configuration.BgpConfiguration.GatewayConfig.Asn cuando operationName es "SetGatewayConfiguration".
properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress target.ip, target.asset.ip Se asigna directamente desde el campo properties.configuration.BgpConfiguration.GatewayConfig.PeerAddress cuando operationName es "SetGatewayConfiguration".
properties.configuration.BgpConfiguration.GatewayConfig.PeerType security_result.detection_fields[].key:"PeerType", value Se asigna directamente desde el campo properties.configuration.BgpConfiguration.GatewayConfig.PeerType cuando operationName es "SetGatewayConfiguration".
properties.configuration.IkeVersion principal.resource.attribute.labels[].key:"ike_version", value Se asigna directamente desde el campo properties.configuration.IkeVersion cuando operationName es "SetConnectionConfiguration".
properties.configuration.LocalSubnets principal.resource.attribute.labels[].key:"local subnets", value Es una cadena concatenada de direcciones IP del array properties.configuration.LocalSubnets cuando operationName es "SetConnectionConfiguration".
properties.configuration.LocalTunnelEndpoint principal.ip, principal.asset.ip Se asigna directamente desde el campo properties.configuration.LocalTunnelEndpoint cuando operationName es "SetConnectionConfiguration".
properties.configuration.Name principal.hostname, principal.asset.hostname Se asigna directamente desde el campo properties.configuration.Name. Si está vacío, el valor se toma de properties.instance.
properties.configuration.RemoteSite target.hostname, target.asset.hostname Se asigna directamente desde el campo properties.configuration.RemoteSite.
properties.configuration.RemoteSubnets principal.resource.attribute.labels[].key:"remote subnets", value Es una cadena concatenada de direcciones IP del array properties.configuration.RemoteSubnets cuando operationName es "SetConnectionConfiguration".
properties.configuration.RemoteTunnelEndpoint target.ip, target.asset.ip Se asigna directamente desde el campo properties.configuration.RemoteTunnelEndpoint cuando operationName es "SetConnectionConfiguration".
properties.configuration.VIPAddress principal.ip, principal.asset.ip Se asigna directamente desde el campo properties.configuration.VIPAddress cuando operationName es "SetGatewayConfiguration".
properties.configuration.VirtualNetworkRanges principal.resource.attribute.labels[].key:"virutal network ranges", value Es una cadena concatenada de direcciones IP del array properties.configuration.VirtualNetworkRanges cuando operationName es "SetGatewayConfiguration".
properties.configuration.VirtualNetworkSubnets principal.resource.attribute.labels[].key:"virtual network subnets", value Es una cadena concatenada de direcciones IP del array properties.configuration.VirtualNetworkSubnets cuando operationName es "SetGatewayConfiguration".
properties.error_info additional.fields[].key:"error_info", value.string_value Se asigna directamente desde el campo properties.error_info.
properties.host principal.hostname, principal.asset.hostname Se asigna directamente desde el campo properties.host si properties.originalHost está vacío.
properties.httpMethod network.http.method Se asigna directamente desde el campo properties.httpMethod.
properties.httpStatus network.http.response_code Se asigna directamente desde el campo properties.httpStatus y se convierte en un número entero.
properties.httpVersion network.application_protocol Se establece en "HTTP" si el campo properties.httpVersion contiene "HTTP".
properties.instance principal.hostname, principal.asset.hostname Se usa como el valor de principal.hostname si properties.configuration.Name está vacío.
properties.message metadata.description Se asigna directamente desde el campo properties.message.
properties.operationName additional.fields[].key:"operationName", value.string_value Se asigna directamente desde el campo properties.operationName.
properties.operationStatus security_result.category_details Se asigna directamente desde el campo properties.operationStatus. Si el valor es "Success" o "InProgress", security_result.action se establece en "ALLOW".
properties.originalHost principal.hostname, principal.asset.hostname Se asigna directamente desde el campo properties.originalHost.
properties.originalRequestUriWithArgs additional.fields[].key:"originalRequestUriWithArgs", value.string_value Se asigna directamente desde el campo properties.originalRequestUriWithArgs.
properties.receivedBytes network.received_bytes Se asigna directamente desde el campo properties.receivedBytes y se convierte en un número entero sin signo.
properties.requestQuery additional.fields[].key:"requestQuery", value.string_value Se asigna directamente desde el campo properties.requestQuery.
properties.requestUri target.url Se asigna directamente desde el campo properties.requestUri.
properties.sentBytes network.sent_bytes Se asigna directamente desde el campo properties.sentBytes y se convierte en un número entero sin signo.
properties.serverResponseLatency additional.fields[].key:"Server Response Latency", value.string_value Se asigna directamente desde el campo properties.serverResponseLatency.
properties.serverRouted target.ip, target.asset.ip, target.port La IP y el puerto se extraen del campo properties.serverRouted con una expresión regular.
properties.sslCipher network.tls.cipher Se asigna directamente desde el campo properties.sslCipher.
properties.sslClientCertificateIssuerName network.tls.server.certificate.issuer Se asigna directamente desde el campo properties.sslClientCertificateIssuerName.
properties.sslProtocol network.tls.version Se asigna directamente desde el campo properties.sslProtocol.
properties.timeTaken additional.fields[].key:"timeTaken", value.string_value Se asigna directamente desde el campo properties.timeTaken.
properties.transactionId network.session_id Se asigna directamente desde el campo properties.transactionId.
properties.userAgent network.http.user_agent, network.http.parsed_user_agent Se asigna directamente desde el campo properties.userAgent. Además, el campo se convierte en un usuario-agente analizado y se asigna a network.http.parsed_user_agent.
properties.WAFEvaluationTime additional.fields[].key:"WAFEvaluationTime", value.string_value Se asigna directamente desde el campo properties.WAFEvaluationTime.
properties.WAFMode additional.fields[].key:"WAFMode", value.string_value Se asigna directamente desde el campo properties.WAFMode.
resourceId target.resource.id Se asigna directamente desde el campo resourceId.
resourceid target.resource.product_object_id Se asigna directamente desde el campo resourceid.
ruleName security_result.rule_name Se asigna directamente desde el campo ruleName.
time/timeStamp metadata.event_timestamp, timestamp Se analiza como una marca de tiempo con el formato RFC 3339 o ISO8601. Se prefiere timeStamp, pero se usa time si timeStamp no está presente.
(Lógica del analizador) metadata.event_type Se establece en "NETWORK_CONNECTION" si están presentes tanto el principal como el objetivo, en "STATUS_UPDATE" si solo está presente el principal y en "GENERIC_EVENT" en los demás casos.
(Lógica del analizador) metadata.product_name Establece el valor en "Puerta de enlace de Azure".
(Lógica del analizador) metadata.vendor_name Se establece en "Microsoft".
(Lógica del analizador) has_principal Es una marca booleana establecida en "true" si se extrae información principal (nombre de host, IP o puerto) y en "false" en caso contrario.
(Lógica del analizador) has_target Es una marca booleana que se establece en "true" si se extrae información de destino (nombre de host, IP, puerto, ID de recurso o URL) y en "false" en caso contrario.
(Lógica del analizador) disambiguation_key Se agrega cuando se extraen varios eventos de una sola entrada de registro.