Collecter les journaux Jenkins

Compatible avec:

Présentation

Cet analyseur 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 journal, gérer les variations de structure et renseigner un modèle de données unifié (UDM) avec les champs extraits. L'analyseur classe é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 disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un accès privilégié à Google Cloud IAM.
  • Assurez-vous de disposer d'un accès privilégié à Google Cloud Storage.
  • Assurez-vous de disposer d'un accès privilégié à Jenkins.

Créer un bucket Google Cloud Storage

  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. Accordez au compte de service le rôle Créateur d'objets de stockage 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 d'identifiants Google OAuth dans Jenkins

  1. Accédez à Gérer Jenkins > Plug-ins.
  2. Sélectionnez Plug-ins disponibles.
  3. Recherchez le plug-in Identifiants Google OAuth.
  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 (Gérer Jenkins) > Credentials (Identifiants) > System (Système).

  2. Cliquez sur Ajouter 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: attribuez un nom aux 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 importer Google SecOps

  1. Dans la configuration de la tâche Jenkins, ajoutez Google Storage Build Log Upload (Importation du journal de compilation Google Storage) dans les actions post-compilation, 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 d'accès au 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 un flux dans Google SecOps pour ingérer les journaux Jenkins

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

    • URI du bucket de stockage: URL du bucket Google Cloud Storage au format gs://my-bucket/<value>.
    • Un URI est: sélectionnez Un répertoire qui inclut des sous-répertoires.
    • Options de suppression de la source: sélectionnez l'option de suppression de votre choix.
  9. Cliquez sur Suivant.

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

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
agir 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 format 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 Permet d'extraire l'objet et l'action. Si un / est présent, il est divisé en objet et action. Si » est présent, il est divisé en objet et action. Sinon, il est traité comme action et peut être analysé plus en détail.
msg2 metadata.description OU security_result.action_details Le cas échéant, mappé initialement sur metadata.description. Si elle contient "completed:", la valeur suivante est extraite et mappée sur security_result.action_details.
objet target.asset.product_object_id Extrait de msg1. Représente l'objet sur lequel l'action est 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 la forme "Nom du plug-in".
src_ip principal.ip Extrait du message ou des données. Représente l'adresse IP source.
Utilisateur principal.user.userid Extrait du message ou des données. Représente l'utilisateur associé à l'événement.
metadata.event_timestamp Copié à partir du champ calculé @code temporel.
metadata.event_type Déterminé par la logique de l'analyseur. Définissez cette 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 sous la forme Jenkins.
metadata.product_version Codé en dur sous la forme Jenkins.
metadata.vendor_name Codé en dur sous la forme JENKINS.
metadata.event_timestamp Construit à partir des champs année, mois, jour, heure et am/pm.

Modifications

2023-11-27

  • Analyseur nouvellement créé.