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

En este caso, se muestra cómo exportar registros seleccionados de Cloud Logging a Pub/Sub para transferirlos a Splunk. Splunk es una solución de información de seguridad y administración de eventos (SIEM) que admite varias formas de transferir datos, como la recepción de datos de transmisión de Google Cloud a través del Recopilador de eventos de HTTP de Splunk (HEC) o la recuperación de datos desde las API de Google Cloud mediante el complemento de Splunk para Google Cloud.

Si usas la plantilla de Dataflow de Pub/Sub a Splunk, puedes reenviar de forma nativa los registros y eventos de un tema de Pub/Sub al HEC de Splunk. Si el HEC de Splunk no está disponible en tu implementación de Splunk, puedes usar el complemento para recopilar los registros y los eventos del tema de Pub/Sub.

Si usas soluciones de Splunk que ya están implementadas, Cloud Logging te permite exportar registros de Google Cloud a la solución de Splunk. Esta capacidad te ayuda a aprovechar las funciones nativas de registro, supervisión y diagnóstico y, también, te permite incluir estos registros en tus sistemas existentes.

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

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 de 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.

Mediante el siguiente comando de gcloud de ejemplo, se ejecuta la versión más reciente de la plantilla de Dataflow de Pub/Sub a Splunk en la suscripción de Pub/Sub de entrada o logs-export-subscription:

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 mediante el complemento de Splunk para Google Cloud

El complemento de Splunk para Google Cloud 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. Otorga los permisos de IAM para Pub/Sub roles/pubsub.viewer y roles/pubsub.subscriber a la cuenta de servicio que se creó como parte de la instrucción del complemento de Splunk.

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 de Splunk extrae mensajes. Mediante el uso del tipo de recurso y la métrica que aparecen a continuación, 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

Próximos pasos