Casos de exportación de datos de Cloud Logging: Splunk

En esta situación, se muestra cómo exportar los registros seleccionados de Cloud Logging a Splunk Enterprise o Splunk Cloud en tiempo real. Splunk te permite buscar, analizar y visualizar los registros, los eventos y las métricas recopilados de tus implementaciones locales y en la nube para realizar un seguimiento de TI y de seguridad. Si integras los registros de Cloud Logging, puedes continuar usando los servicios de socios existentes, como Splunk, que es una solución de estadísticas de registros unificada, con opciones para implementar Splunk de forma local, en Google Cloud como SaaS o con un enfoque híbrido.

En este documento, se brinda una descripción general de dos métodos compatibles para exportar registros a Splunk: ya sea mediante el envío o la extracción de registros de Google Cloud. Como se explica en la siguiente sección, se recomienda el enfoque basado en envíos nativos de la nube. Para obtener información más detallada para implementar la solución de exportación de registros basada en envíos, consulta Implementa exportaciones de registros listas para la producción a Splunk mediante Dataflow.

Esta situación forma parte de la serie Patrones de diseño para exportar datos de Cloud Logging.

Introducción

Existen dos métodos para transferir datos de Google Cloud que son compatibles con Splunk:

Te recomendamos que uses el método basado en envíos para transferir datos de Google Cloud a Splunk. Este método tiene las siguientes ventajas:

  • Servicio administrado. El servicio administrado de Dataflow administra los recursos necesarios en Google Cloud para tareas de procesamiento de datos, como la exportación de registros.
  • Carga de trabajo distribuida. La carga de trabajo se distribuye en múltiples trabajadores para su procesamiento en paralelo. Por lo tanto, a diferencia de cuando se extraen datos con un servidor de reenvío pesado de Splunk, no hay un punto único de fallo.
  • Seguridad. Los datos se envían a Splunk HEC, por lo que no existe la carga de mantenimiento y seguridad asociada con la creación y administración de claves de cuentas de servicio. Para aplicar un método basado en extracciones también debes crear y administrar claves de cuentas de servicio.
  • Ajuste de escala automático. El servicio de Dataflow ajusta de forma automática la cantidad de trabajadores en respuesta a las variaciones en el volumen de registros entrante y en las tareas pendientes.
  • Tolerancia a errores. Los intentos de HEC de Splunk se manejan de forma automática si hay problemas temporales con las redes o los servidores. Este método también admite temas no procesados (también conocidos como temas de mensajes no entregados) para cualquier mensaje de registro que no se pueda entregar a fin de evitar la pérdida de datos.
  • Simplicidad. Evita la sobrecarga de administración y el costo de ejecutar uno o más servidores de reenvío de Splunk pesados.

Existen circunstancias en las que puedes usar el método basado en extracciones para transferir datos de Google Cloud a Splunk. Estas circunstancias son las siguientes:

  • Tu implementación de Splunk no ofrece un extremo de HEC de Splunk.
  • Tu volumen de registros es bajo.
  • Quieres extraer métricas de Cloud Monitoring, objetos de Cloud Storage o registros de bajo volumen.
  • Ya administras uno o más servidores de reenvío de Splunk (o estás usando un administrador de datos de entrada para Splunk Cloud alojado).

Configura la exportación de registros

En el siguiente diagrama, se muestran los pasos para habilitar la exportación de registros a Splunk a través de Pub/Sub.

Habilita la exportación de registros a Pub/Sub.

Configura una suscripción y un tema de Pub/Sub

Sigue las instrucciones para configurar el tema de Pub/Sub que recibirá los registros exportados y agrega una suscripción al tema.

En este documento, se usan los siguientes nombres de temas y suscripciones de Pub/Sub:

projects/compliance-logging-export/topics/logs-export-topic

projects/compliance-logging-export/topics/logs-export-subscription

Activa registros de auditoría para todos los servicios

Los registros de auditoría de la actividad del administrador siempre se escriben y no se pueden inhabilitar. Sin embargo, los registros de auditoría de acceso a los datos se encuentran inhabilitados de forma predeterminada, excepto para BigQuery. A fin de habilitar todos los registros de auditoría, sigue las instrucciones para actualizar la política de IAM con la configuración que se detalla en la documentación de la política de auditoría. A continuación, se detallan los pasos:

  • Descarga la política de IAM actual como un archivo.
  • Agrega el objeto JSON o YAML de la política de registro de auditoría al archivo de la política actual.
  • Actualiza el proyecto (o la organización) de Google Cloud con el archivo de la política modificado.

A continuación, se muestra un ejemplo de un objeto JSON que habilita todos los registros de auditoría para todos los servicios.

"auditConfigs": [
    {
        "service": "allServices",
        "auditLogConfigs": [
            { "logType": "ADMIN_READ" },
            { "logType": "DATA_READ"  },
            { "logType": "DATA_WRITE" },
        ]
    },
]

Configura la exportación de registros

Una vez que configures las exportaciones agregadas o la exportación de registros, debes definir mejor los filtros de registro para exportar registros de auditoría, registros relacionados con máquinas virtuales, registros de almacenamiento y registros de base de datos. El siguiente filtro de registros incluye los registros de auditoría de actividad del administrador y acceso a los datos, y los registros para tipos de recursos específicos.

logName:"/logs/cloudaudit.googleapis.com" OR
resource.type:gce OR
resource.type=gcs_bucket OR
resource.type=bigquery_resource

En la herramienta de línea de comandos de gcloud, usa el comando gcloud logging sinks create o la llamada a la API organizations.sinks.create para crear un receptor con los filtros adecuados. Mediante el siguiente comando de gcloud de ejemplo, se crea un receptor llamado gcp_logging_sink_pubsub para la organización, cuyo destino es el tema de Pub/Sub logs-export-topic que se creó antes. El receptor incluye todos los proyectos secundarios y especifica los filtros para seleccionar registros de auditoría específicos.

gcloud logging sinks create gcp_logging_sink_pubsub \
    pubsub.googleapis.com/projects/compliance-logging-export/topics/logs-export-topic \
    --log-filter='logName:"/logs/cloudaudit.googleapis.com" OR \
    resource.type:\"gce\" OR \
    resource.type=\"gcs_bucket\" OR   \
    resource.type=\"bigquery_resource\"' \
    --include-children   \
    --organization=your-organization

El resultado del comando es similar al siguiente:

Created [https://logging.googleapis.com/v2/organizations/your-organization/sinks/gcp_logging_export_pubsub_sink].
Please remember to grant `serviceAccount:gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com` Pub/Sub Publisher role to the topic.
More information about sinks can be found at /logging/docs/export/configure_export

En la entrada serviceAccount que muestra la llamada a la API, la identidad gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com se incluye en la respuesta. Esta identidad representa una cuenta de servicio de Google Cloud que se creó para la exportación. Hasta que otorgues a esta identidad acceso de publicación al tema de destino, las exportaciones de entradas de registro desde este receptor fallarán. Para obtener más información, consulta la siguiente sección o la documentación Otorga acceso a un recurso.

Establece permisos de políticas de IAM para el tema de Pub/Sub

Si agregas la cuenta de servicio gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com al tema pubsub.googleapis.com/projects/compliance-logging-export/topics/logs-export-topic con los permisos de publicador de Pub/Sub, otorgas a esta cuenta permiso para publicar en el tema. La exportación del receptor fallará hasta que agregues estos permisos.

Para agregar permisos a la cuenta de servicio, sigue estos pasos:

  1. En Cloud Console, abre la página Temas de Cloud Pub/Sub:

    IR A LA PÁGINA TEMAS

  2. Selecciona el nombre del tema.

  3. Haz clic en Mostrar panel de información y, luego, selecciona los permisos de publicador de Pub/Sub.

    Permisos de la política de IAM: Publicador de Pub/Sub.

Después de crear la exportación de registros mediante este filtro, los archivos de registro comienzan a propagarse en el tema de Pub/Sub del proyecto configurado. Puedes confirmar que el tema recibe mensajes mediante el Explorador de métricas en Cloud Monitoring. Mediante el uso del siguiente tipo de recurso y métrica, observa la cantidad de operaciones de envío de mensajes realizadas durante un período breve. Si configuraste la exportación de forma correcta, verás la actividad por encima de 0 en el gráfico, como se muestra en esta captura de pantalla.

  • Tipo de recurso: pubsub_topic
  • Métrica: pubsub/topic/send_message_operation_count

Gráfico de actividad.

Configura la transferencia de datos de Splunk

Opción A: Transmite registros mediante la plantilla de Dataflow de Pub/Sub a Splunk

Usa la plantilla de Dataflow de Pub/Sub a Splunk para crear un trabajo de Dataflow que extraiga mensajes de la suscripción de Pub/Sub que se creó antes, convierta las cargas útiles en formato de eventos de HEC de Splunk y las reenvíe al HEC de Splunk. Por lo tanto, requiere una URL de extremo del HEC de Splunk y un token de HEC; además, se debe poder acceder a la URL desde la red del trabajo de Dataflow. Si aún no lo hiciste, sigue las instrucciones para configurar el HEC de Splunk.

Además de paralelizar y distribuir la carga de trabajo entre varios trabajadores, el servicio de Dataflow administra estos recursos y ajusta de forma automática la cantidad de trabajadores según los mensajes existentes pendientes de Pub/Sub y el uso de recursos de los trabajadores actuales.

En cuanto a la tolerancia a errores, la plantilla de Dataflow de Pub/Sub a Splunk administra los reintentos (con retirada exponencial) en el HEC de Splunk en caso de que el extremo inferior esté inactivo o que haya un problema de conectividad de red. En caso de se produzcan errores de procesamiento de mensajes y para garantizar que no haya pérdida de datos, esos mensajes se reenvían a otro tema de mensajes no entregados de Pub/Sub, que también debe crearse antes de ejecutar esta plantilla de Dataflow.

Después de configurar el extremo del HEC de Splunk para recibir datos, puedes ejecutar la canalización de Pub/Sub a Splunk a través de Cloud Console, la herramienta de línea de comandos de gcloud o la API de Dataflow. Ten en cuenta que puedes aplicar una función de JavaScript definida por el usuario para transformar la carga útil del mensaje antes de reenviarlo a Splunk.

El siguiente comando gcloud de ejemplo ejecuta la última versión de la plantilla de Dataflow de Pub/Sub a Splunk en la suscripción de Pub/Sub de entrada logs-export-subscription. Reemplaza your-splunk-hec-token y your-splunk-hec-url por el token y el extremo de HEC de Splunk, por ejemplo https://splunk-hec-host:8088:

JOB_NAME=pubsub-to-splunk-$USER-`date +"%Y%m%d-%H%M%S%z"`
gcloud dataflow jobs run $JOB_NAME \
    --gcs-location gs://dataflow-templates/latest/Cloud_PubSub_to_Splunk \
    --max-workers 2 \
    --parameters \
  inputSubscription=projects/compliance-logging-export/subscriptions/logs-export-subscription,\
  token=your-splunk-hec-token,\
  url=your-splunk-hec-url,\
  outputDeadletterTopic=projects/compliance-logging-export/topics/splunk-pubsub-deadletter,\
  batchCount=10,\
  parallelism=8

Puedes confirmar que la canalización de Dataflow envía mensajes de manera correcta a Splunk mediante el Explorador de métricas en Cloud Monitoring. Mediante el uso del tipo de recurso y las métricas que aparecen a continuación, observa la cantidad de eventos de salida exitosos y los posibles eventos con fallas en un período breve.

  • Tipo de recurso: dataflow_job
  • Métrica 1: custom.googleapis.com/dataflow/outbound-successful-events
  • Métrica 1: custom.googleapis.com/dataflow/outbound-failed-events

Si configuraste la plantilla de manera correcta, verás la actividad por encima de 0 en el gráfico, como en esta captura de pantalla.

Gráfico de la actividad de los eventos de salida.

Opción B: Extrae registros con el complemento de Splunk para Google Cloud Platform

El complemento de Splunk para Google Cloud Platform usa el tema de Pub/Sub y una cuenta de servicio en Google Cloud. La cuenta de servicio se usa para generar una clave privada que el complemento usa para establecer una suscripción de Pub/Sub y transferir mensajes desde el tema de exportación de registros. Se requieren permisos de IAM específicos para que la cuenta de servicio pueda crear la suscripción y enumerar los componentes del proyecto de Pub/Sub que contiene la suscripción.

Sigue las instrucciones para configurar el complemento de Splunk para Google Cloud Platform. Otorga los permisos de IAM de Pub/Sub roles/pubsub.viewer y roles/pubsub.subscriber a la cuenta de servicio creada como parte de la instrucción del complemento.

Después de configurar el complemento, los mensajes de Pub/Sub de la exportación de registros aparecerán en Splunk.

Si usas el Explorador de métricas en Cloud Monitoring, puedes confirmar si la suscripción que usa el complemento extrae mensajes. Mediante el uso del tipo de recurso y la métrica siguiente, observa la cantidad de operaciones de extracción de mensajes realizadas durante un período breve.

  • Tipo de recurso: pubsub_subscription
  • Métrica: pubsub/subscription/pull_message_operation_count

Si configuraste la exportación de forma correcta, verás la actividad por encima de 0 en el gráfico, como se muestra en esta captura de pantalla.

Gráfico de la actividad de las operaciones de extracción.

Usa los registros exportados

Después de transferir los registros exportados a Splunk, puedes usarlo como lo harías con cualquier otra fuente de datos para realizar las siguientes tareas:

  • Buscar los registros
  • Correlacionar los eventos complejos
  • Visualizar los resultados mediante el uso de paneles

¿Qué sigue?