Collecter les journaux Sysdig

Compatible avec :

Ce parseur extrait les données des événements de sécurité des journaux JSON Sysdig, puis transforme et mappe les champs de journaux bruts au format UDM Google Security Operations. Il gère différents champs, y compris les métadonnées, les informations sur le principal ou la cible, les détails des résultats de sécurité et le contexte lié à Kubernetes, ce qui enrichit les données pour l'analyse dans Google SecOps. L'analyseur effectue également des conversions de types de données, gestion des exceptions et applique une logique conditionnelle en fonction des valeurs des champs pour garantir une représentation précise et complète de l'UDM.

Avant de commencer

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

  • Instance Google SecOps.
  • Accès privilégié à Sysdig Secure.

Créer une clé API pour le flux de webhook

  1. Accédez à la consoleGoogle Cloud > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants, puis sélectionnez Clé API.

  3. Restreignez l'accès à la clé API à l'API Google Security Operations.

Option 1

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 Sysdig).
  5. Sélectionnez Webhook comme type de source.
  6. Sélectionnez Sysdig comme type de journal.
  7. Cliquez sur Suivant.
  8. Facultatif : Spécifiez les valeurs des paramètres d'entrée suivants :

    • Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que \n.
  9. Cliquez sur Suivant.

  10. Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.

  11. Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.

  12. Copiez et stockez la clé secrète. Vous ne pourrez plus afficher cette clé secrète. Si nécessaire, vous pouvez générer une nouvelle clé secrète, mais l'ancienne deviendra obsolète.

  13. Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.

  14. Cliquez sur OK.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que \n.

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.

  • Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.

  • Copiez et stockez la clé secrète. Vous ne pourrez plus afficher cette clé secrète. Si nécessaire, vous pouvez générer une nouvelle clé secrète, mais l'ancienne deviendra obsolète.

  • Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.

Spécifier l'URL du point de terminaison

  1. Dans votre application cliente, spécifiez l'URL du point de terminaison HTTPS fournie dans le flux de webhook.
  2. Activez l'authentification en spécifiant la clé API et la clé secrète dans l'en-tête personnalisé au format suivant :

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recommandation : Spécifiez la clé API en tant qu'en-tête au lieu de la spécifier dans l'URL.

  3. Si votre client de webhook n'accepte pas les en-têtes personnalisés, vous pouvez spécifier la clé API et la clé secrète à l'aide de paramètres de requête au format suivant :

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Remplacez les éléments suivants :

    • ENDPOINT_URL : URL du point de terminaison du flux.
    • API_KEY : clé API pour l'authentification auprès de Google SecOps.
    • SECRET : clé secrète que vous avez générée pour authentifier le flux.

Configurer le webhook dans Sysdig

  1. Connectez-vous à Sysdig Secure avec des droits d'administrateur.
  2. Accédez à Profil > Paramètres > Transfert d'événements.
  3. Cliquez sur + Ajouter une intégration, puis sélectionnez Webhook dans le menu déroulant.
  4. Spécifiez les valeurs des paramètres d'entrée suivants :

    • Nom de l'intégration : donnez un nom descriptif au webhook (par exemple, Webhook Google SecOps).
    • Point de terminaison : saisissez le webhook <ENDPOINT_URL>, suivi de <API_KEY et <SECRET>.
    • Données à envoyer : sélectionnez dans le menu déroulant les types de données Sysdig à transférer.

    • Testez l'intégration, puis activez-la en cliquant sur Activé.

    • Cliquez sur Enregistrer.

Option 2

Transférer des données directement vers Google SecOps

  1. Connectez-vous à Sysdig Secure à l'aide de vos identifiants d'administrateur.
  2. Accédez à Paramètres > Transfert d'événements.
  3. Cliquez sur + Ajouter une intégration, puis sélectionnez Google Chronicle dans le menu déroulant.
  4. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Nom de l'intégration : donnez un nom descriptif à l'intégration (par exemple, Intégration Google SecOps).
    • Numéro client : numéro client Google associé à votre compte Google Cloud . (Dans Google SecOps, accédez à Paramètres > Profil.)
    • Espace de noms : facultatif. Utilisez-le comme tag pour identifier le domaine de données approprié pour l'indexation et l'enrichissement.
    • Identifiants JSON : importez vos identifiants JSON Google SecOps.
    • Région : sélectionnez votre région, par exemple "États-Unis", "Europe" ou "Asie".
    • Données à envoyer : sélectionnez les types de données Sysdig à transférer dans le menu déroulant.
    • Testez l'intégration, puis activez-la en cliquant sur Activé.
    • Cliquez sur Enregistrer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
agentId read_only_udm.metadata.product_deployment_id La valeur de agentId du journal brut est directement mappée sur ce champ UDM.
category read_only_udm.security_result.category_details La valeur de category du journal brut est directement mappée sur ce champ UDM.
content.fields.container.id read_only_udm.target.asset.asset_id La valeur de content.fields.container.id du journal brut est précédée de "container_id:" et mappée à ce champ UDM. Utilisé si containerId est vide.
content.fields.container.image.repository read_only_udm.target.file.full_path La valeur de content.fields.container.image.repository du journal brut est directement mappée sur ce champ UDM.
content.fields.container.image.tag read_only_udm.metadata.ingestion_labels.value où la clé est tag La valeur de content.fields.container.image.tag du journal brut est directement mappée sur ce champ UDM.
content.fields.evt.res read_only_udm.metadata.ingestion_labels.value où la clé est evt_res La valeur de content.fields.evt.res du journal brut est directement mappée sur ce champ UDM.
content.fields.evt.type read_only_udm.metadata.event_type La valeur de content.fields.evt.type du journal brut est directement mappée sur ce champ UDM.
content.fields.falco.rule read_only_udm.security_result.rule_name La valeur de content.fields.falco.rule du journal brut est directement mappée sur ce champ UDM. Utilisé si content.ruleName est vide.
content.fields.group.gid read_only_udm.target.group.product_object_id La valeur de content.fields.group.gid du journal brut est directement mappée sur ce champ UDM.
content.fields.group.name read_only_udm.target.group.group_display_name La valeur de content.fields.group.name du journal brut est directement mappée sur ce champ UDM.
content.fields.proc.cmdline read_only_udm.target.process.command_line La valeur de content.fields.proc.cmdline du journal brut est directement mappée sur ce champ UDM.
content.fields.proc.pcmdline read_only_udm.target.process.parent_process.command_line La valeur de content.fields.proc.pcmdline du journal brut est directement mappée sur ce champ UDM.
content.fields.proc.pid read_only_udm.target.process.pid La valeur de content.fields.proc.pid du journal brut est directement mappée sur ce champ UDM.
content.fields.proc.ppid read_only_udm.target.process.parent_process.pid La valeur de content.fields.proc.ppid du journal brut est directement mappée sur ce champ UDM.
content.fields.proc.sid read_only_udm.metadata.ingestion_labels.value où la clé est sid La valeur de content.fields.proc.sid du journal brut est directement mappée sur ce champ UDM.
content.fields.user.loginname read_only_udm.principal.user.user_display_name La valeur de content.fields.user.loginname du journal brut est directement mappée sur ce champ UDM.
content.fields.user.uid read_only_udm.principal.user.userid La valeur de content.fields.user.uid du journal brut est directement mappée sur ce champ UDM.
content.output read_only_udm.additional.fields.value.string_value où la clé est content_output La valeur de content.output du journal brut est directement mappée sur ce champ UDM.
content.policyId read_only_udm.security_result.rule_id La valeur de content.policyId du journal brut est directement mappée sur ce champ UDM.
content.policyOrigin read_only_udm.additional.fields.value.string_value où la clé est content_policyOrigin La valeur de content.policyOrigin du journal brut est directement mappée sur ce champ UDM.
content.policyVersion read_only_udm.additional.fields.value.string_value où la clé est content_policyVersion La valeur de content.policyVersion du journal brut est directement mappée sur ce champ UDM.
content.ruleName read_only_udm.security_result.rule_name La valeur de content.ruleName du journal brut est directement mappée sur ce champ UDM.
content.ruleTags read_only_udm.security_result.rule_labels Les valeurs du tableau content.ruleTags du journal brut sont mappées à ce champ UDM, avec des clés générées de manière dynamique sous la forme "ruletag_index".
content.ruleType read_only_udm.additional.fields.value.string_value où la clé est content_ruleType La valeur de content.ruleType du journal brut est directement mappée sur ce champ UDM.
containerId read_only_udm.target.asset.asset_id La valeur de containerId du journal brut est précédée de "container_id:" et mappée à ce champ UDM.
description read_only_udm.metadata.description La valeur de description du journal brut est directement mappée sur ce champ UDM.
id read_only_udm.metadata.product_log_id La valeur de id du journal brut est directement mappée sur ce champ UDM.
labels.container.label.io.kubernetes.container.name read_only_udm.additional.fields.value.string_value où la clé est container_name La valeur de labels.container.label.io.kubernetes.container.name du journal brut est directement mappée sur ce champ UDM.
labels.container.label.io.kubernetes.pod.name read_only_udm.additional.fields.value.string_value où la clé est pod_name La valeur de labels.container.label.io.kubernetes.pod.name du journal brut est directement mappée sur ce champ UDM. Utilisé si labels.kubernetes.pod.name est vide.
labels.container.label.io.kubernetes.pod.namespace read_only_udm.principal.namespace La valeur de labels.container.label.io.kubernetes.pod.namespace du journal brut est directement mappée sur ce champ UDM. Utilisé si labels.kubernetes.namespace.name est vide.
labels.aws.instanceId read_only_udm.target.resource.product_object_id La valeur de labels.aws.instanceId du journal brut est directement mappée sur ce champ UDM.
labels.aws.region read_only_udm.target.resource.attribute.cloud.availability_zone La valeur de labels.aws.region du journal brut est directement mappée sur ce champ UDM.
labels.host.hostName read_only_udm.principal.ip OU read_only_udm.principal.hostname Si la valeur contient "ip", elle est analysée en tant qu'adresse IP et mappée sur principal.ip. Sinon, il est mappé sur principal.hostname.
labels.host.mac read_only_udm.principal.mac La valeur de labels.host.mac du journal brut est directement mappée sur ce champ UDM. Utilisé si machineId est vide.
labels.kubernetes.cluster.name read_only_udm.additional.fields.value.string_value où la clé est kubernetes_cluster_name La valeur de labels.kubernetes.cluster.name du journal brut est directement mappée sur ce champ UDM.
labels.kubernetes.deployment.name read_only_udm.additional.fields.value.string_value où la clé est kubernetes_deployment_name La valeur de labels.kubernetes.deployment.name du journal brut est directement mappée sur ce champ UDM.
labels.kubernetes.namespace.name read_only_udm.principal.namespace La valeur de labels.kubernetes.namespace.name du journal brut est directement mappée sur ce champ UDM.
labels.kubernetes.node.name read_only_udm.additional.fields.value.string_value où la clé est kubernetes_node_name La valeur de labels.kubernetes.node.name du journal brut est directement mappée sur ce champ UDM.
labels.kubernetes.pod.name read_only_udm.additional.fields.value.string_value où la clé est pod_name La valeur de labels.kubernetes.pod.name du journal brut est directement mappée sur ce champ UDM.
labels.kubernetes.service.name read_only_udm.additional.fields.value.string_value où la clé est kubernetes_service_name La valeur de labels.kubernetes.service.name du journal brut est directement mappée sur ce champ UDM.
machineId read_only_udm.principal.mac La valeur de machineId du journal brut est directement mappée sur ce champ UDM.
name read_only_udm.security_result.summary La valeur de name du journal brut est directement mappée sur ce champ UDM.
severity read_only_udm.security_result.severity La valeur de severity du journal brut est mappée à une valeur de chaîne en fonction de ces plages : <4 = HIGH, >3 et <6 = MEDIUM, 6 = LOW, 7 = INFORMATIONAL.
source read_only_udm.security_result.description La valeur de source du journal brut est directement mappée sur ce champ UDM.
timestampRFC3339Nano read_only_udm.metadata.event_timestamp La valeur de timestampRFC3339Nano du journal brut est analysée en tant qu'horodatage et mappée à ce champ UDM.
type read_only_udm.metadata.product_event_type La valeur de type du journal brut est directement mappée sur ce champ UDM.
(Logique de l'analyseur) read_only_udm.metadata.product_name Codé en dur sur "SYSDIG".
(Logique de l'analyseur) read_only_udm.metadata.vendor_name Codé en dur sur "SYSDIG".
(Logique de l'analyseur) read_only_udm.metadata.event_type La valeur par défaut est "PROCESS_UNCATEGORIZED" ou "GENERIC_EVENT" si labels.host.hostName est vide.
(Logique de l'analyseur) read_only_udm.metadata.log_type Codé en dur sur "SYSDIG".
(Logique de l'analyseur) read_only_udm.target.resource.resource_type Définissez sur "CLOUD_PROJECT" si labels.aws.instanceId existe.

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