Collecter les journaux Jenkins

Compatible avec :

Présentation

Ce parseur extrait des informations clés telles que les codes temporels, les ID utilisateur, les adresses IP sources, les actions et les ID d'objet à partir des journaux au format JSON et SYSLOG. Il utilise des modèles Grok pour faire correspondre différents formats de messages de journaux, en gérant les variations de structure, et remplit un modèle de données unifié (UDM) avec les champs extraits. L'analyseur catégorise également les événements en fonction de la présence d'informations sur l'utilisateur ou l'adresse IP.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

  • Instance Google SecOps.
  • Accès privilégié à Google Cloud IAM.
  • Accès privilégié à Google Cloud Storage.
  • Accès privilégié à Jenkins.

Créer un bucket de stockage Google Cloud

  1. Accédez à Cloud Storage.
  2. Créez un bucket. Choisissez un nom unique et une région appropriée.
  3. Assurez-vous que le bucket dispose de contrôles d'accès appropriés (par exemple, seuls les comptes de service autorisés peuvent y écrire).

Créer un compte de service Google Cloud

  1. Accédez à IAM et administration > Comptes de service.
  2. Créez un compte de service. Attribuez-lui un nom descriptif (par exemple, jenkins-logs).
  3. Attribuez le rôle Créateur des objets de l'espace de stockage au compte de service sur le bucket GCS que vous avez créé à l'étape précédente.
  4. Créez une clé SSH pour votre compte de service : Créer et supprimer des clés de compte de service.
  5. Téléchargez un fichier de clé JSON pour le compte de service.

Installer le plug-in Google Cloud Storage dans Jenkins

  1. Accédez à Gérer Jenkins > Plug-ins.
  2. Sélectionnez Plug-ins disponibles.
  3. Recherchez le plug-in Google Cloud Storage.
  4. Installez le plug-in et redémarrez Jenkins si nécessaire.

Installer le plug-in Google OAuth Credentials dans Jenkins

  1. Accédez à Gérer Jenkins > Plug-ins.
  2. Sélectionnez Plug-ins disponibles.
  3. Recherchez le plug-in Google OAuth Credentials.
  4. Installez le plug-in et redémarrez Jenkins si nécessaire.

Configurer Jenkins pour s'authentifier auprès de Google Cloud

  1. Accédez à Manage Jenkins > Credentials > System.

  2. Cliquez sur add Add Credentials (Ajouter des identifiants).

  3. Kind (Type) : sélectionnez Google Service Account from private key (Compte de service Google à partir d'une clé privée).

  4. Nom du projet : définissez un nom pour les identifiants.

  5. Importez le fichier de clé JSON que vous avez obtenu lors de la création du compte de service Google Cloud .

  6. Cliquez sur Créer.

Configurer les journaux Jenkins pour les importer dans Google SecOps

  1. Dans la configuration du job Jenkins, ajoutez Google Storage Build Log Upload (Importation du journal de compilation Google Storage) dans les actions post-build, avec les paramètres suivants :
    • Identifiants Google : nom des identifiants Google que vous avez créés à l'étape précédente.
    • Nom du journal : nom du fichier dans lequel stocker le journal de compilation Jenkins, sous le chemin de stockage spécifié.
    • Emplacement de stockage : nom du bucket dans lequel vous souhaitez importer vos journaux. Le bucket doit être accessible au compte de service que vous avez créé.
  2. Testez l'importation des journaux.

Configurer des flux

Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :

  • Paramètres SIEM> Flux
  • Plate-forme de contenu > Packs de contenu

Configurer des flux à partir de Paramètres SIEM > Flux

Pour configurer un flux, procédez comme suit :

  1. Accédez à Paramètres SIEM > Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Jenkins).
  5. Sélectionnez Google Cloud Storage comme Type de source.
  6. Sélectionnez Jenkins comme type de journal.
  7. Cliquez sur Obtenir un compte de service en tant que compte de service Chronicle.
  8. Cliquez sur Suivant.
  9. Spécifiez les valeurs des paramètres d'entrée suivants :

    • URI du bucket Storage : URL du bucket Storage au format gs://my-bucket/<value>. Google Cloud
    • URI is a (L'URI est un) : sélectionnez Directory which includes subdirectories (Répertoire incluant des sous-répertoires).
    • Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
  10. Cliquez sur Suivant.

  11. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • URI du bucket Storage : URL du bucket Storage au format gs://my-bucket/<value>. Google Cloud
  • URI is a (L'URI est un) : sélectionnez Directory which includes subdirectories (Répertoire incluant des sous-répertoires).
  • Options de suppression de la source : sélectionnez l'option de suppression de votre choix.

Options avancées

  • Nom du flux : valeur préremplie qui identifie le flux.
  • Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
  • Espace de noms de l'élément : espace de noms associé au flux.
  • Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.

Table de mappage UDM

Champ de journal Mappage UDM Logique
act security_result.action_details Extrait des champs msg1 ou msg2. Représente l'action effectuée. Les espaces blancs de début sont supprimés.
données principal.user.userid OU principal.ip OU metadata.description Si data correspond à un modèle d'adresse IP, il est mappé sur principal.ip. S'il correspond à un modèle de nom d'utilisateur, il est mappé sur principal.user.userid. Sinon, il est mappé sur metadata.description.
msg1 target.asset.product_object_id OU security_result.action_details Utilisé pour extraire object et act. Si un / est présent, il est divisé en object et act. Si » est présent, il est divisé en object et act. Sinon, il est traité comme act et potentiellement analysé plus en détail.
msg2 metadata.description OU security_result.action_details Si elle est présente, elle est initialement mappée sur metadata.description. Si elle contient "completed:", la valeur qui suit est extraite et mappée à security_result.action_details.
object target.asset.product_object_id Extrait de msg1. Représente l'objet sur lequel l'action a été effectuée.
object_id target.resource.attribute.labels.value Extrait de l'objet si un / est présent. Représente un identifiant d'objet plus spécifique. La clé est codée en dur sous le nom "Plugin Name".
src_ip principal.ip Extrait de message ou data. Représente l'adresse IP source.
Utilisateur principal.user.userid Extrait de message ou data. Représente l'utilisateur associé à l'événement.
metadata.event_timestamp Copié à partir du champ @timestamp calculé.
metadata.event_type Déterminé par la logique de l'analyseur. Définissez la valeur sur USER_UNCATEGORIZED si user est présent, sur STATUS_UNCATEGORIZED si src_ip est présent et sur GENERIC_EVENT dans le cas contraire.
metadata.product_name Codé en dur en tant que Jenkins.
metadata.product_version Codé en dur en tant que Jenkins.
metadata.vendor_name Codé en dur en tant que JENKINS.
metadata.event_timestamp Construit à partir des champs year, month, day, time et ampm.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.