Recopila registros de auditoría de Azure Storage

Compatible con:

En este documento, se explica cómo exportar los registros de auditoría de Azure Storage a Google Security Operations con una cuenta de Azure Storage. El analizador procesa los registros en formato JSON y los transforma en el modelo de datos unificado (UDM). Extrae campos del registro sin procesar, realiza conversiones de tipos de datos, enriquece los datos con contexto adicional (como el análisis del agente de usuario y el desglose de la dirección IP) y asigna los campos extraídos a los campos correspondientes del UDM.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Un inquilino de Azure activo
  • 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:
    • 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 Informació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ú Endpoints 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 la exportación de registros para los registros de auditoría de Azure Storage

  1. Accede al portal de Azure con tu cuenta con privilegios.
  2. Ve a Cuentas de almacenamiento > Configuración de diagnóstico.
  3. Haz clic en + Agregar parámetro de configuración de diagnóstico.
  4. Selecciona la configuración de diagnóstico para blob, queue, table y file.
    • Selecciona la opción allLogs en Category groups para cada parámetro de configuración de diagnóstico.
    • Ingresa un nombre descriptivo para cada parámetro de configuración de diagnóstico.
  5. Selecciona la casilla de verificación Archivar en una cuenta de almacenamiento como destino.
    • Especifica la Suscripción y la Cuenta de almacenamiento.
  6. Haz clic en Guardar.

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 auditoría de Azure Storage.
  5. Selecciona Microsoft Azure Blob Storage como el Tipo de fuente.
  6. Selecciona Auditoría de Azure Storage 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: URL del extremo del blob (https://<storageaccountname>.blob.core.windows.net)
          • BLOB_NAME: Es el nombre del blob (por ejemplo, <logname>-logs).
    • 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.

    • 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, <logname>-logs).
  • 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
callerIpAddress principal.asset.ip La dirección IP se extrae del campo callerIpAddress con un patrón de Grok y se asigna a principal.asset.ip.
callerIpAddress principal.ip La dirección IP se extrae del campo callerIpAddress con un patrón de Grok y se asigna a principal.ip.
callerIpAddress principal.port El número de puerto se extrae del campo callerIpAddress con un patrón grok y se asigna a principal.port.
category security_result.category_details El valor del campo category se asigna a security_result.category_details.
correlationId security_result.detection_fields[0].key La cadena literal correlationId se asigna al campo de clave.
correlationId security_result.detection_fields[0].value El valor del campo correlationId se asigna a security_result.detection_fields[0].value. El valor del campo time se analiza como una marca de tiempo y se asigna a event.idm.read_only_udm.metadata.event_timestamp. Si category es StorageWrite y principal.user.userid existe (derivado de properties.accountName), el valor se establece en USER_RESOURCE_UPDATE_CONTENT. Si category es StorageDelete y principal.user.userid existe, el valor se establece en USER_RESOURCE_DELETION. De lo contrario, el valor se establece en USER_RESOURCE_ACCESS. La cadena literal AZURE_STORAGE_AUDIT se asigna a event.idm.read_only_udm.metadata.log_type. La cadena literal AZURE_STORAGE_AUDIT se asigna a event.idm.read_only_udm.metadata.product_name. El valor del campo schemaVersion se asigna a event.idm.read_only_udm.metadata.product_version. La cadena literal AZURE_STORAGE_AUDIT se asigna a event.idm.read_only_udm.metadata.vendor_name.
location target.location.name El valor del campo location se asigna a target.location.name.
operationName additional.fields[x].key La cadena literal operationName se asigna al campo de clave.
operationName additional.fields[x].value.string_value El valor del campo operationName se asigna a additional.fields[x].value.string_value.
operationVersion additional.fields[x].key La cadena literal operationVersion se asigna al campo de clave.
operationVersion additional.fields[x].value.string_value El valor del campo operationVersion se asigna a additional.fields[x].value.string_value.
properties.accountName principal.user.userid El valor del campo properties.accountName se asigna a principal.user.userid.
properties.clientRequestId additional.fields[x].key La cadena literal clientRequestId se asigna al campo de clave.
properties.clientRequestId additional.fields[x].value.string_value El valor del campo properties.clientRequestId se asigna a additional.fields[x].value.string_value.
properties.etag additional.fields[x].key La cadena literal etag se asigna al campo de clave.
properties.etag additional.fields[x].value.string_value El valor del campo properties.etag se asigna a additional.fields[x].value.string_value.
properties.objectKey additional.fields[x].key La cadena literal objectKey se asigna al campo de clave.
properties.objectKey additional.fields[x].value.string_value El valor del campo properties.objectKey se asigna a additional.fields[x].value.string_value.
properties.requestMd5 additional.fields[x].key La cadena literal requestMd5 se asigna al campo de clave.
properties.requestMd5 additional.fields[x].value.string_value El valor del campo properties.requestMd5 se asigna a additional.fields[x].value.string_value.
properties.responseMd5 additional.fields[x].key La cadena literal responseMd5 se asigna al campo de clave.
properties.responseMd5 additional.fields[x].value.string_value El valor del campo properties.responseMd5 se asigna a additional.fields[x].value.string_value.
properties.serviceType additional.fields[x].key La cadena literal serviceType se asigna al campo de clave.
properties.serviceType additional.fields[x].value.string_value El valor del campo properties.serviceType se asigna a additional.fields[x].value.string_value.
properties.tlsVersion network.tls.version El valor del campo properties.tlsVersion se asigna a network.tls.version.
properties.userAgentHeader network.http.parsed_user_agent El valor del campo properties.userAgentHeader se analiza como una cadena de agente de usuario y se asigna a network.http.parsed_user_agent.
properties.userAgentHeader network.http.user_agent El valor del campo properties.userAgentHeader se asigna a network.http.user_agent.
protocol network.application_protocol El valor del campo protocol se asigna a network.application_protocol.
resourceId target.resource.id El valor del campo resourceId se asigna a target.resource.id.
resourceId target.resource.product_object_id El valor del campo resourceId se asigna a target.resource.product_object_id. La cadena literal DATABASE se asigna a target.resource.resource_type.
resourceType additional.fields[x].key La cadena literal resourceType se asigna al campo de clave.
resourceType additional.fields[x].value.string_value El valor del campo resourceType se asigna a additional.fields[x].value.string_value. Si statusText es Success, el valor se establece en ALLOW.
statusCode network.http.response_code El valor del campo statusCode se convierte en un número entero y se asigna a network.http.response_code. La cadena literal MICROSOFT_AZURE se asigna a target.cloud.environment.
time timestamp El valor del campo time se analiza como una marca de tiempo y se asigna a timestamp.
uri network.http.referral_url El valor del campo uri se asigna a network.http.referral_url.

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