Recopila registros de Azure App Service
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
- En la consola de Azure, busca Cuentas de almacenamiento.
- Haz clic en + Crear.
- 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.
- Haz clic en Revisar + crear.
- Revisa la descripción general de la cuenta y haz clic en Crear.
- En la página Descripción general de la cuenta de almacenamiento, selecciona el submenú Llaves de acceso en Seguridad y herramientas de redes.
- Haz clic en Mostrar junto a clave1 o clave2.
- Haz clic en Copiar en el portapapeles para copiar la clave.
- Guarda la clave en una ubicación segura para usarla más adelante.
- En la página Descripción general de la cuenta de almacenamiento, selecciona el submenú Puntos finales en Configuración.
- 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
). - 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
- Accede al portal de Azure con tu cuenta con privilegios.
- Ve a Servicios de apps y selecciona el servicio de app que se está usando.
- Selecciona Supervisión > Registros del servicio de apps.
- ACTIVA la opción Registros de aplicaciones (blob).
- Selecciona Almacenamiento en Registro de servicios web.
- Selecciona la Suscripción y la Cuenta de almacenamiento.
- Define el período de retención y la cuota según tus requisitos.
- ACTIVA la opción Mensajes de error detallados.
- Activa ACTIVADO para Seguimiento de solicitudes fallidas.
- Haz clic en Guardar.
Configura un feed en Google SecOps para transferir los registros de Azure App Service
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de Azure APP Service).
- Selecciona Microsoft Azure Blob Storage como el Tipo de fuente.
- Selecciona Azure APP Service como el Tipo de registro.
- Haz clic en Siguiente.
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.
- URI de Azure: Es la URL del extremo de blob.
Haz clic en Siguiente.
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
aprincipal.hostname
yprincipal.asset.hostname
. - Se asignó
properties_category
aadditional.fields
. - Se asignó
properties.roleInstance
aprincipal.resource.product_object_id
. - Se asignó
properties.message
asecurity_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
ymetadata.vendor_name
aAZURE_APP_SERVICE
.
2024-06-07
Mejora:
- Se agregó compatibilidad con registros JSON, cuando no están en formato de array.
- Se asignó
properties.ScSubStatus
aadditional.fields
. - Se asignó
properties.ScWin32Status
aadditional.fields
.
2024-04-25
Mejora:
- Se asignó
properties.User
aprincipal.user.userid
. - Se asignó
properties.UserDisplayName
aprincipal.user.user_display_name
. - Se asignó
properties.UserAddress
aprincipal.ip
. - Se asignaron
properties.Protocol
,ClientBrowser
,ClientModel
,ClientOS
,OperationId
,ParentId
yItemCount
aadditional.fields
. - Se asignaron
CsUriQuery
,SDKVersion
yCookie
aprincipal.resource.attribute.labels
. - Se asignó
SessionId
anetwork.session_id
. - Se asignó
Message
asecurity_result.summary
. - Se asignó
SeverityLevel
asecurity_result.severity_details
.
2024-02-20
Mejora:
- Se asignó
record.AppRoleInstance
aprincipal.resource.product_object_id
. - Se asignó
record.AppRoleName
aprincipal.resource.name
. - Se asignó
record.ClientCity
aprincipal.location.city
. - Se asignó
record.ClientCountryOrRegion
aprincipal.location.country_or_region
. - Se asignó
record.ClientStateOrProvince
aprincipal.location.state
. - Se asignó
record.ClientIP
aprincipal.ip
. - Se asignó
Result
asecurity_result.summary
. - Se asignó
UserAgent
anetwork.http.user_agent
. - Se asignó
Referer
anetwork.http.referral_url
. - Se asignó
record.ResourceGUID
atarget.resource.product_object_id
. - Si
record.ResourceGUID
no está presente, se asignórecord.resourceId
atarget.resource.product_object_id
. - Si
record.ResourceGUID
está presente, asignarecord.resourceId
aadditional.fields
. - Se asignó
record.Type
aadditional.fields
. - Se asignó
record.ClientType
aadditional.fields
. - Se asignó
record.SDKVersion
aadditional.fields
. - Se asignó
record.Name
aadditional.fields
. - Se asignó
record.Instance
aadditional.fields
. - Se asignó
record.TimeTaken
aadditional.fields
. - Se asignó
record.Cookie
aadditional.fields
. - Se asignó
record.AppVersion
aprincipal.resource.attribute.labels
. - Se asignó
record.IKey
atarget.resource.attribute.labels
. - Se asignó
record.Category
ametadata.product_event_type
. - Se asignó
CsUriStem
atarget.url
. - Se cambió la asignación de
CsBytes
denetwork.received_bytes
anetwork.sent_bytes
. - Se cambió la asignación de
ScBytes
denetwork.sent_bytes
anetwork.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.