Collecter les journaux Sysdig

Compatible avec :

Cet analyseur extrait les données d'événements de sécurité des journaux JSON Sysdig, puis transforme et mappe les champs de journaux bruts au format UDM de 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, une gestion des exceptions et une logique conditionnelle en fonction des valeurs des champs pour garantir une représentation UDM précise et complète.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

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

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

  1. Accédez à Google Cloud console > Identifiants.

    Accéder à "Identifiants"

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

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

Option 1

Configurer des flux

Pour configurer un flux, procédez comme suit :

  1. Accédez à Paramètres SIEM > Flux.
  2. Cliquez sur 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 des valeurs pour les paramètres d'entrée suivants :

    • Délimiteur de division : délimiteur utilisé pour séparer les lignes de journal, par exemple \n.
  9. Cliquez sur Suivant.

  10. Vérifiez la configuration du flux dans 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 cette action rendra l'ancienne 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.

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 webhook n'est pas compatible avec 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 un 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 des valeurs pour les paramètres d'entrée suivants :

    • Nom de l'intégration : fournissez un nom descriptif pour le 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 activant l'option 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 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 des valeurs pour les paramètres d'entrée suivants :
    • Nom de l'intégration : fournissez un nom descriptif pour l'intégration (par exemple, Intégration Google SecOps).
    • Numéro client : numéro client Google associé à votre Google Cloud compte. (Dans Google SecOps, accédez à Paramètres > Profil pour le trouver).
    • 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 dans le menu déroulant les types de données Sysdig à transférer.
    • Testez l'intégration, puis activez-la en activant l'option Activé.
    • Cliquez sur Enregistrer.

Table de mappage UDM

Champ du journal Mappage UDM Logique
agentId read_only_udm.metadata.product_deployment_id La valeur de agentId du journal brut est directement mappée à ce champ UDM.
category read_only_udm.security_result.category_details La valeur de category du journal brut est directement mappée à 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 à 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 à 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 à 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 à 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 à 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 à 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 à 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 à 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 à 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 à 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 à 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 à 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 à 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 à 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 à ce champ UDM.
content.policyId read_only_udm.security_result.rule_id La valeur de content.policyId du journal brut est directement mappée à 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 à 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 à ce champ UDM.
content.ruleName read_only_udm.security_result.rule_name La valeur de content.ruleName du journal brut est directement mappée à 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 dynamiquement en tant que "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 à 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 à ce champ UDM.
id read_only_udm.metadata.product_log_id La valeur de id du journal brut est directement mappée à 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 à 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 à 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 à 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 à 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 à 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 à principal.ip. Sinon, elle est mappée à principal.hostname.
labels.host.mac read_only_udm.principal.mac La valeur de labels.host.mac du journal brut est directement mappée à 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 à 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 à 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 à 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 à 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 à 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 à ce champ UDM.
machineId read_only_udm.principal.mac La valeur de machineId du journal brut est directement mappée à ce champ UDM.
name read_only_udm.security_result.summary La valeur de name du journal brut est directement mappée à 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 à 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 à 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 Défini par défaut sur "PROCESS_UNCATEGORIZED" ou sur "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éfini sur "CLOUD_PROJECT" si labels.aws.instanceId existe.

Journal des modifications

Consulter le journal des modifications de cet analyseur

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