Recopila registros de Azure App Service

Compatible con:

En este documento, se explica cómo exportar registros de Azure APP Service a Google Security Operations con una cuenta de almacenamiento de Azure. El analizador transforma los registros sin procesar de Azure App Service con formato JSON en un modelo de datos unificado (UDM) estructurado. Extrae campos relevantes de los registros sin procesar, realiza la limpieza y normalización de los datos, y asigna la información extraída a los campos de la AUA correspondientes. En última instancia, genera un objeto JSON que cumple con la AUA para cada entrada de registro.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de tener un inquilino de Azure activo.
  • Asegúrate de tener acceso con privilegios a 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:
    • Subscription: 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 cuenta de almacenamiento nueva.
  4. Haz clic en Revisar + crear.
  5. Revisa la descripción general de la cuenta y haz clic en Crear.
  6. En la página Descripción general de la cuenta de almacenamiento, selecciona el submenú Llaves de acceso en Seguridad y herramientas de redes.
  7. Haz clic en Mostrar junto a clave1 o clave2.
  8. Haz clic en Copiar en el portapapeles para copiar la clave.
  9. Guarda la clave en una ubicación segura para usarla más adelante.
  10. En la página Descripción general de la cuenta de almacenamiento, selecciona el submenú Puntos finales en Configuración.
  11. Haz clic en Copiar en el portapapeles para copiar la URL del extremo del servicio de 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.

Configura la exportación de registros para los registros de acceso de Azure AD

  1. Accede al portal de Azure con tu cuenta con privilegios.
  2. Ve a Servicios de apps y selecciona el servicio de app que se está usando.
  3. Selecciona Supervisión > Registros del servicio de apps.
  4. ACTIVA la opción Registros de aplicaciones (blob).
  5. Selecciona Almacenamiento en Registro de servicios web.
  6. Selecciona la Suscripción y la Cuenta de almacenamiento.
  7. Define el período de retención y la cuota según tus requisitos.
  8. ACTIVA la opción Mensajes de error detallados.
  9. Activa ACTIVADO para Seguimiento de solicitudes fallidas.
  10. Haz clic en Guardar.

Configura un feed en Google SecOps para transferir los registros de Azure App Service

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de Azure APP Service).
  4. Selecciona Microsoft Azure Blob Storage como el Tipo de fuente.
  5. Selecciona Azure APP Service como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifica valores para los siguientes parámetros de entrada:

    • URI de Azure: Es la URL del extremo de blob.
      • ENDPOINT_URL/BLOB_NAME
        • Reemplaza lo siguiente:
        • ENDPOINT_URL: La URL del extremo de blob (https://<storageaccountname>.blob.core.windows.net)
        • BLOB_NAME: Es el nombre del blob (por ejemplo, <logname>-logs).
    • URI is a: 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 fuentes: Selecciona la opción de eliminación según tus preferencias.

    • Clave compartida: Es la clave de acceso a Azure Blob Storage.

    • Espacio de nombres de recursos: Es el espacio de nombres de recursos.

    • Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.

  8. Haz clic en Siguiente.

  9. Revisa la configuración de tu nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
AppRoleInstance read_only_udm.principal.resource.product_object_id Asignación directa
AppRoleName read_only_udm.principal.resource.name Asignación directa
AppVersion read_only_udm.principal.resource.attribute.labels.value Asignación directa
Categoría read_only_udm.metadata.product_event_type Asignación directa
CIp read_only_udm.target.asset.ip Asignación directa
CIp read_only_udm.target.ip Asignación directa
ClientCity read_only_udm.principal.location.city Asignación directa
ClientCountryOrRegion read_only_udm.principal.location.country_or_region Asignación directa
ClientIP read_only_udm.principal.asset.ip Asignación directa
ClientIP read_only_udm.principal.ip Asignación directa
ClientStateOrProvince read_only_udm.principal.location.state Asignación directa
ClientType read_only_udm.additional.fields.value.string_value Asignación directa
ComputerName read_only_udm.principal.asset.hostname Asignación directa
ComputerName read_only_udm.principal.hostname Asignación directa
Cookie read_only_udm.principal.resource.attribute.labels.value Asignación directa
CsBytes read_only_udm.network.sent_bytes Se cambió el nombre de CsBytes
CsHost read_only_udm.additional.fields.value.string_value Asignación directa
CsMethod read_only_udm.network.http.method Asignación directa
CsUriQuery read_only_udm.principal.resource.attribute.labels.value Asignación directa
CsUriStem read_only_udm.additional.fields.value.string_value Asignación directa
CsUriStem read_only_udm.target.url Asignación directa
CsUsername read_only_udm.principal.user.user_display_name Asignación directa
EventIpAddress read_only_udm.principal.asset.ip Asignación directa
EventIpAddress read_only_udm.principal.ip Asignación directa
EventPrimaryStampName read_only_udm.additional.fields.value.string_value Asignación directa
EventStampName read_only_udm.additional.fields.value.string_value Asignación directa
EventStampType read_only_udm.additional.fields.value.string_value Asignación directa
Host read_only_udm.principal.asset.hostname Asignación directa
Host read_only_udm.principal.hostname Asignación directa
IKey read_only_udm.target.resource.attribute.labels.value Asignación directa
Instancia read_only_udm.additional.fields.value.string_value Asignación directa
Nombre read_only_udm.additional.fields.value.string_value Asignación directa
Protocolo read_only_udm.additional.fields.value.string_value Asignación directa
Protocolo read_only_udm.network.application_protocol Se asigna a HTTP si el protocolo es HTTP/1.1.
Referencia read_only_udm.network.http.referral_url Asignación directa
ResourceGUID read_only_udm.target.resource.product_object_id Se cambió el nombre de ResourceGUID
SDKVersion read_only_udm.additional.fields.value.string_value Asignación directa
SDKVersion read_only_udm.principal.resource.attribute.labels.value Asignación directa
SPort read_only_udm.principal.port Se cambió el nombre de SPort
ScBytes read_only_udm.network.received_bytes Se cambió el nombre de ScBytes
ScStatus read_only_udm.network.http.response_code Se cambió el nombre de ScStatus
TimeTaken read_only_udm.additional.fields.value.string_value Asignación directa
Tipo read_only_udm.additional.fields.value.string_value Asignación directa
Usuario read_only_udm.principal.user.userid Asignación directa
UserAddress read_only_udm.principal.asset.ip Se extrae de UserAddress si es una dirección IP válida.
UserAddress read_only_udm.principal.ip Se extrae de UserAddress si es una dirección IP válida.
UserAgent read_only_udm.network.http.user_agent Asignación directa
UserDisplayName read_only_udm.principal.user.user_display_name Asignación directa
category read_only_udm.metadata.product_event_type Asignación directa
level read_only_udm.security_result.severity Se cambió el nombre del nivel a mayúsculas
ubicación read_only_udm.principal.location.name Asignación directa
operationName read_only_udm.additional.fields.value.string_value Asignación directa
record.properties.Protocol read_only_udm.additional.fields.value.string_value Asignación directa
record.properties.Result read_only_udm.security_result.summary Asignación directa
record.time read_only_udm.metadata.event_timestamp Se analiza como marca de tiempo RFC 3339.
resourceId read_only_udm.target.resource.attribute.labels.value Asignación directa
resourceId read_only_udm.target.resource.product_object_id Se cambió el nombre de resourceId
read_only_udm.metadata.event_type Se determina según la presencia de principal, objetivo y protocolo. Se establece en NETWORK_HTTP si están presentes principal, objetivo y Protocol=HTTP. Se establece en NETWORK_CONNECTION si el principal y el objetivo están presentes. Se establece en STATUS_UPDATE si solo está presente el principal. De lo contrario, configúralo como GENERIC_EVENT.

Cambios

2024-10-18

Mejora:

  • Se asignó properties.XForwardedHost a principal.hostname y principal.asset.hostname.
  • Se asignó properties_category a additional.fields.
  • Se asignó properties.roleInstance a principal.resource.product_object_id.
  • Se asignó properties.message a security_result.summary.

2024-09-30

Mejora:

  • Se agregó compatibilidad para analizar el nuevo formato de registros JSON sin analizar.

2024-06-24

Mejora:

  • Se asignaron metadata.product_name y metadata.vendor_name a AZURE_APP_SERVICE.

2024-06-07

Mejora:

  • Se agregó compatibilidad con registros JSON, cuando no están en formato de array.
  • Se asignó properties.ScSubStatus a additional.fields.
  • Se asignó properties.ScWin32Status a additional.fields.

2024-04-25

Mejora:

  • Se asignó properties.User a principal.user.userid.
  • Se asignó properties.UserDisplayName a principal.user.user_display_name.
  • Se asignó properties.UserAddress a principal.ip.
  • Se asignaron properties.Protocol, ClientBrowser, ClientModel, ClientOS, OperationId, ParentId y ItemCount a additional.fields.
  • Se asignaron CsUriQuery, SDKVersion y Cookie a principal.resource.attribute.labels.
  • Se asignó SessionId a network.session_id.
  • Se asignó Message a security_result.summary.
  • Se asignó SeverityLevel a security_result.severity_details.

2024-02-20

Mejora:

  • Se asignó record.AppRoleInstance a principal.resource.product_object_id.
  • Se asignó record.AppRoleName a principal.resource.name.
  • Se asignó record.ClientCity a principal.location.city.
  • Se asignó record.ClientCountryOrRegion a principal.location.country_or_region.
  • Se asignó record.ClientStateOrProvince a principal.location.state.
  • Se asignó record.ClientIP a principal.ip.
  • Se asignó Result a security_result.summary.
  • Se asignó UserAgent a network.http.user_agent.
  • Se asignó Referer a network.http.referral_url.
  • Se asignó record.ResourceGUID a target.resource.product_object_id.
  • Si record.ResourceGUID no está presente, se asignó record.resourceId a target.resource.product_object_id.
  • Si record.ResourceGUID está presente, asigna record.resourceId a additional.fields.
  • Se asignó record.Type a additional.fields.
  • Se asignó record.ClientType a additional.fields.
  • Se asignó record.SDKVersion a additional.fields.
  • Se asignó record.Name a additional.fields.
  • Se asignó record.Instance a additional.fields.
  • Se asignó record.TimeTaken a additional.fields.
  • Se asignó record.Cookie a additional.fields.
  • Se asignó record.AppVersion a principal.resource.attribute.labels.
  • Se asignó record.IKey a target.resource.attribute.labels.
  • Se asignó record.Category a metadata.product_event_type.
  • Se asignó CsUriStem a target.url.
  • Se cambió la asignación de CsBytes de network.received_bytes a network.sent_bytes.
  • Se cambió la asignación de ScBytes de network.sent_bytes a network.received_bytes.

2023-12-07

  • Sin embargo, el analizador se creó recientemente.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.