Scénarios d'exportation de données Cloud Logging : Splunk

Ce scénario vous montre comment exporter en temps réel les journaux sélectionnés dans Cloud Logging vers Splunk Enterprise ou Splunk Cloud. Splunk vous permet de rechercher, d'analyser et de visualiser les journaux, événements et métriques collectés à partir de vos déploiements sur site et dans le cloud pour la l'informatique et la surveillance de la sécurité. En intégrant les journaux à partir de Cloud Logging, vous pouvez continuer à utiliser les services partenaires existants tels que Splunk en tant que solution d'analyse unifiée des journaux, avec des options pour déployer Splunk sur site, dans Google Cloud comme SaaS ou via une approche hybride.

Ce document présente deux méthodes compatibles d'exportation de journaux vers Splunk : soit en transmettant, soit en extrayant les journaux de Google Cloud. Comme expliqué dans la section suivante, l'approche en mode push "cloud natif" basée sur le cloud est recommandée dans la plupart des cas. Pour en savoir plus sur le déploiement de la solution d'exportation de journaux en mode push, consultez la section Déployer des exportations de journaux prêtes à l'emploi vers Splunk à l'aide de Dataflow.

Ce scénario fait partie de la série Modèles de conception pour les exportations Cloud Logging.

Présentation

Il existe deux méthodes d'ingestion de données Google Cloud compatibles avec Splunk :

Nous vous recommandons d'utiliser la méthode en mode push pour ingérer les données Google Cloud dans Splunk. Cette méthode présente les avantages suivants :

  • Service géré. Le service géré Dataflow gère les ressources requises dans Google Cloud pour les tâches de traitement de données telles que l'exportation de journaux.
  • Charge de travail distribuée. La charge de travail est répartie sur plusieurs nœuds de calcul pour le traitement parallèle. Donc, contrairement à l'extraction de données avec un redirecteur lourd Splunk, il n'y a pas de point de défaillance unique.
  • Sécurité. Les données sont transférées vers Splunk HEC. Ainsi, la création et la gestion des clés de compte de service n'engendrent aucune charge de maintenance et de sécurité. La méthode en mode pull nécessite toujours la création et la gestion des clés de compte de service.
  • Autoscaling. Le service Dataflow assure l'autoscaling du nombre de nœuds de calcul en réponse aux variations du volume de journaux entrants et des tâches en attente.
  • Tolérance aux pannes. Les tentatives de récupération de la solution HEC de Splunk sont gérées automatiquement en cas de problèmes temporaires de serveur ou de réseau. Cette méthode est également compatible avec les sujets non traités (également appelés sujets de lettre de lettre) pour les messages de journal qui ne peuvent pas être acheminés afin d'éviter toute perte de données.
  • Simplicité. Vous évitez les frais de gestion et le coût d'exécution d'un ou plusieurs redirecteurs lourds Splunk.

Dans certains cas, il est possible d'utiliser la méthode en mode pull pour ingérer des données Google Cloud dans Splunk. Ces circonstances sont les suivantes :

  • Votre déploiement Splunk ne propose pas de point de terminaison HEC Splunk.
  • Votre volume de journaux est faible.
  • Vous souhaitez extraire des métriques Cloud Monitoring, des objets Cloud Storage ou des journaux à faible volume.
  • Vous gérez déjà un ou plusieurs redirecteurs lourds Splunks (ou utilisez un gestionnaire de données d'entrées pour Splunk Cloud hébergé).

Configurer l'exportation de journaux

Le schéma suivant montre les étapes à suivre pour activer l'exportation de journaux vers Spunk via Pub/Sub.

Activation de l'exportation de la journalisation vers Pub/Sub

Configurer un sujet et un abonnement Pub/Sub

Suivez les instructions pour configurer un sujet Pub/Sub qui recevra les journaux exportés et ajoutera un abonnement au sujet.

Ce document utilise les noms de sujet et d'abonnement Pub/Sub suivants :

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

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

Activer les journaux d'audit pour tous les services

Les journaux d'audit pour les activités d'administration sont toujours écrits et ne peuvent pas être désactivés. Toutefois, les journaux d'audit des accès aux données, à l'exception de BigQuery, sont désactivés par défaut. Pour activer tous les journaux d'audit, suivez les instructions pour mettre à jour la stratégie IAM avec la configuration répertoriée dans la documentation sur la stratégie d'audit. Les étapes sont les suivantes :

  • Télécharger la stratégie IAM actuelle sous forme de fichier
  • Ajouter au fichier de stratégie actuel l'objet JSON ou YAML de stratégie des journaux d'audit
  • Mettre à jour le projet (ou l'organisation) Google Cloud avec le fichier de stratégie modifié

Voici un exemple d'objet JSON qui active tous les journaux d'audit pour tous les services.

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

Configurer l'exportation de journaux

Une fois que vous avez configuré des exportations agrégées ou l'exportation de journaux, vous devez affiner les filtres de journalisation afin d'exporter les journaux d'audit, les journaux associés aux machines virtuelles, les journaux de stockage et les journaux de base de données. Le filtre de journalisation suivant inclut les journaux d'audit des activités d'administration et ceux de l'accès aux données, ainsi que les journaux correspondant à des types de ressources spécifiques.

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

À partir de l'outil de ligne de commande gcloud, utilisez la commande gcloud logging sinks create ou l'appel d'API organizations.sinks.create pour créer un récepteur doté des filtres appropriés. L'exemple de commande gcloud suivant crée un récepteur nommé gcp_logging_sink_pubsub pour l'organisation, dont la destination est le sujet Pub/Sub précédemment créé logs-export-topic. Le récepteur inclut tous les projets enfants et spécifie le filtrage permettant de sélectionner des journaux d'audit spécifiques.

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

Le résultat ressemble à ce qui suit :

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

Dans l'entrée serviceAccount renvoyée par l'appel d'API, l'identité gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com est incluse dans la réponse. Cette identité représente un compte de service Google Cloud créé pour l'exportation. Tant que vous n'accordez pas à cette identité l'autorisation de publier dans le sujet de destination, les exportations d'entrées de journal issues de ce récepteur échoueront. Pour en savoir plus, consultez la section ci-après ou la documentation suivante : Accorder l'accès pour une ressource.

Définir les autorisations de stratégie IAM pour le sujet Pub/Sub

En ajoutant le compte de service gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com au sujet pubsub.googleapis.com/projects/compliance-logging-export/topics/logs-export-topic avec les autorisations de publication Pub/Sub, vous accordez au compte de service l'autorisation de publier dans le sujet. Tant que vous n'aurez pas ajouté ces autorisations, les opérations d'exportation depuis le récepteur échoueront.

Pour ajouter les autorisations au compte de service, procédez comme suit :

  1. Dans Cloud Console, ouvrez la page Sujets Cloud Pub/Sub :

    ACCÉDER À LA PAGE "SUJETS"

  2. Sélectionnez le nom du sujet.

  3. Cliquez sur Afficher le panneau d'informations, puis sélectionnez les autorisations de l'Éditeur Pub/Sub.

    Autorisations de stratégie IAM – Éditeur Pub/Sub

Une fois que vous avez créé l'exportation de journalisation à l'aide de ce filtre, les fichiers journaux commencent à remplir le sujet Pub/Sub du projet configuré. Vous pouvez vérifier que le sujet reçoit des messages dans l'Explorateur de métriques de Cloud Monitoring. À l'aide du type de ressource et de la métrique ci-dessous, observez le nombre d'opérations d'envoi de messages sur une courte période. Si vous avez correctement configuré l'exportation, vous constaterez une activité supérieure à 0 sur le graphique, comme illustré dans cette capture d'écran.

  • Type de ressource : pubsub_topic
  • Métrique : pubsub/topic/send_message_operation_count

Graphique d'activité

Configurer l'ingestion de données Splunk

Option A : Diffuser les journaux à l'aide de Pub/Sub vers Splunk Dataflow

Vous utilisez le modèle Pub/Sub vers Splunk Dataflow pour créer une tâche Dataflow qui extrait les messages de l'abonnement Pub/Sub précédemment créé, convertit les charges utiles au format d'événement HEC de Splunk et les transfère à Hunk. Par conséquent, il nécessite une URL de point de terminaison HEC de Splunk et un jeton HEC, avec une URL accessible à partir du réseau de la tâche Dataflow. Si vous ne l'avez pas déjà fait, suivez les instructions de configuration de la solution HEC de Splunk.

Outre charger en parallèle et répartir la charge de travail entre plusieurs nœuds de calcul, le service Dataflow gère ces ressources et ajuste automatiquement le nombre de nœuds de calcul en fonction du traitement des messages existants de Pub/Sub et de l'utilisation actuelle des ressources.

En ce qui concerne la tolérance aux pannes, le modèle Pub/Sub vers Splunk Dataflow gère les tentatives (avec un intervalle exponentiel entre les tentatives) vers le collecteur HEC de Splunk en cas de panne du point de terminaison en aval ou de problème de connexion réseau. En cas d'erreurs de traitement des messages et pour éviter toute perte de données, ces messages sont transférés vers un autre sujet de lettre morte Pub/Sub, qui doit également être créé avant d'exécuter le modèle Dataflow.

Une fois que le point de terminaison HEC de Splunk est configuré pour recevoir des données, vous pouvez exécuter le pipeline Pub/Sub vers Splunk Dataflow via Cloud Console, l'outil de ligne de commande gcloud ou l'API Dataflow. Notez que vous pouvez éventuellement appliquer une fonction JavaScript définie par l'utilisateur pour transformer la charge utile du message avant de la transférer vers Splunk.

L'exemple de commande gcloud suivant exécute la dernière version de modèle Pub/Sub vers Splunk Dataflow sur l'abonnement Pub/Sub d'entrée logs-export-subscription. Remplacez your-splunk-hec-token et your-splunk-hec-url par votre jeton et votre point de terminaison HEC Splunk, par exemple 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

Vous pouvez vérifier que le pipeline Dataflow envoie correctement les messages vers Splunk en utilisant l'explorateur de métriques dans Cloud Monitoring. À l'aide du type de ressource et des métriques suivants, observez le nombre d'événements sortants réussis et d'éventuels événements ayant échoué sur une courte période.

  • Type de ressource : dataflow_job
  • Métrique 1 : custom.googleapis.com/dataflow/outbound-successful-events
  • Métrique 1 : custom.googleapis.com/dataflow/outbound-failed-events

Si vous avez correctement configuré le modèle, vous constaterez une activité supérieure à 0 sur le graphique, comme illustré dans cette capture d'écran.

Activité du graphique pour les événements sortants

Option B : Extraire des journaux à l'aide du module complémentaire Splunk pour Google Cloud Platform

Le module complémentaire Splunk pour Google Cloud Platform utilise le sujet Pub/Sub et un compte de service dans Google Cloud. Le compte de service permet de générer une clé privée que le module complémentaire utilise pour établir un abonnement Pub/Sub et ingérer les messages du sujet d'exportation de journaux. Les autorisations IAM appropriées sont requises pour permettre au compte de service de créer l'abonnement et de répertorier les composants du projet Pub/Sub contenant l'abonnement.

Suivez les instructions de configuration du module complémentaire Splunk pour Google Cloud Platform. Accordez les autorisations IAM Pub/Sub roles/pubsub.viewer et roles/pubsub.subscriber pour le compte de service créé dans le cadre de l'instruction de module complémentaire.

Une fois que vous avez configuré le module complémentaire, les messages Pub/Sub de l'exportation de la journalisation s'affichent dans Splunk.

En utilisant l'Explorateur de métriques dans Cloud Monitoring, vous pouvez vérifier que l'abonnement utilisé par le module complémentaire extrait les messages. À l'aide du type de ressource et de la métrique ci-dessous, observez le nombre d'opérations d'extraction de messages sur une courte période.

  • Type de ressource : pubsub_subscription
  • Métrique : pubsub/subscription/pull_message_operation_count

Si vous avez correctement configuré l'exportation, vous constatez une activité supérieure à 0 sur le graphique, comme illustré dans cette capture d'écran.

Activité du graphique pour les opérations d'extraction

Utiliser les journaux exportés

Une fois que les journaux exportés ont été ingérés dans Splunk, vous pouvez utiliser Splunk de la même manière que toute autre source de données pour effectuer les tâches suivantes :

  • Faire des recherches dans les journaux
  • Mettre des événements complexes en corrélation
  • Visualiser les résultats à l'aide de tableaux de bord

Étape suivante