Soumettre un ticket Mes billets
Bienvenue sur
Connexion  S'inscrire

PowerDMARC et Elastic - Guide de mise en œuvre

Guide de mise en œuvre de PowerDMARC Elastic SIEM

Introduction

Grâce à l'intégration Elastic SIEM de PowerDMARC, vous pouvez facilement intégrer et surveiller vos données d'authentification des e-mails et d'audit de sécurité des domaines directement dans votre environnement Elastic Stack. En tirant parti de l'API PowerDMARC et de l'entrée httpjson intégrée à Elastic Agent, les entreprises peuvent mettre en place une intégration SIEM rationalisée sans scripts externes ni configurations complexes. Il suffit de configurer l'interface web Kibana, de la déployer et d'obtenir une visibilité centralisée sur la sécurité des e-mails dans tous les domaines.


Ce guide couvre l'ensemble de la configuration : de l'installation de l'agent Elastic à la configuration de l'intégration API, en passant par la création de pipelines d'ingestion pour le mappage et l'enrichissement des champs, et la création d'un tableau de bord de surveillance. Toutes ces opérations s'effectuent via l'interface utilisateur Web Kibana et la console Dev Tools.


Documentation API : https://app.powerdmarc.com/swagger-ui/index.html

Documentation alternative : https://api.powerdmarc.com/


Présentation de l'architecture

Dans cet exemple, nous utilisons le point de terminaison du journal d'audit à des fins de test et d'illustration.


API REST PowerDMARC

        ↓

Agent élastique (entrée httpjson) — installé sur votre hôte

        ↓

Pipeline d'ingestion Elasticsearch (mappage ECS, GeoIP, déduplication)

        ↓

Flux de données Elasticsearch (logs-powerdmarc.audit-*)

        ↓

Kibana (Découverte, Tableaux de bord, Alertes, Règles de détection)


L'agent Elastic s'exécute sur votre machine hôte (Windows, Linux ou macOS) et interroge l'API PowerDMARC à un intervalle configurable. Chaque réponse est divisée en événements de journal d'audit individuels, traitée via un pipeline d'ingestion pour la normalisation et l'enrichissement des champs, puis stockée dans un flux de données Elasticsearch. Kibana fournit la couche de visualisation et d'alerte.

Conditions préalables

Avant de commencer, assurez-vous d'avoir :


  • Déploiement d'Elastic Stack 8.x (Elastic Cloud ou autogéré) avec accès à Kibana

  • Fleet activé dans votre déploiement Elastic

  • Autorisation de créer des pipelines d'ingestion, des politiques d'agent et des politiques de package

  • Une machine hôte (Windows, Linux ou macOS) sur laquelle installer Elastic Agent.

  • Un jeton d'accès API PowerDMARC avec autorisation d'accéder aux journaux d'audit

  • Connectivité réseau entre l'hôte et l'API PowerDMARC ainsi que votre cluster Elasticsearch

Étapes de configuration

Toute la configuration s'effectue via la console Kibana Dev Tools. Celle-ci fournit une interface unique pour créer des pipelines, gérer les politiques Fleet et vérifier l'ingestion des données.

Étape 1 : Ouvrez la console des outils de développement.

  1. Ouvrez l'URL Kibana dans le navigateur.

  2. Cliquez sur le menu hamburger (☰) en haut à gauche.

  3. Faites défiler vers le bas jusqu'à Gestion et cliquez sur Outils de développement.

  4. L'éditeur Console s'ouvre avec un panneau gauche (entrée) et un panneau droit (réponse).

  5. Effacez tout exemple de code par défaut dans le panneau de gauche.


Étape 2 : Créer le pipeline d'ingestion

Le pipeline d'ingestion normalise les champs bruts de l'API PowerDMARC au format Elastic Common Schema (ECS), enrichit les adresses IP avec des données GeoIP et génère un identifiant de document basé sur une empreinte digitale à des fins de déduplication.


Collez et exécutez ce qui suit dans Dev Tools :


PUT _ingest/pipeline/powerdmarc-audit-pipeline

{

  « description » : « Traitement des journaux d'audit PowerDMARC dans les champs ECS »,

  « processeurs » : [

    {

      "json": {

        « champ » : « message »,

        « target_field » : « powerdmarc »

      }

    },

    {

      "date": {

        « champ » : « powerdmarc.created_at »,

        « formats » : [« aaaa-MM-jj HH:mm:ss »],

        « target_field » : « @timestamp »

      }

    },

    {

      "rename": {

        « champ » : « powerdmarc.user_name »,

        « target_field » : « user.name »,

        « ignore_missing » : vrai

      }

    },

    {

      "rename": {

        « champ » : « powerdmarc.action »,

        « target_field » : « event.action »,

        « ignore_missing » : vrai

      }

    },

    {

      "rename": {

        « champ » : « powerdmarc.ip_address »,

        « target_field » : « source.ip »,

        « ignore_missing » : vrai

      }

    },

    {

      "rename": {

        « champ » : « powerdmarc.a_username »,

        « target_field » : « user.target.name »,

        « ignore_missing » : vrai

      }

    },

    {

      "rename": {

        « field » : « powerdmarc.other »,

        « target_field » : « event.reason »,

        « ignore_missing » : vrai

      }

    },

    { "set": { "field": "event.kind",       "value": "event" } },

    { "set": { "field": "event.category",   "value": "configuration" } },

    { "set": { "field": "observer.vendor",  "value": "PowerDMARC" } },

    { "set": { "field": "observer.product", "value": "PowerDMARC" } },

    {

      "geoip": {

        « champ » : « source.ip »,

        « target_field » : « source.geo »,

        « ignore_missing » : vrai

      }

    },

    {

      "fingerprint": {

        « champs » : [« nom.utilisateur », « action.événement »,

                    « source.ip », « @timestamp »],

        « target_field » : « _id »,

        « ignore_missing » : vrai

      }

    },

    {

      "remove": {

        « field » : [« powerdmarc », « message »],

        « ignore_missing » : vrai

      }

    }

  ]

}


Réponse attendue :

{ "acknowledged": true }


Étape 3 : Trouvez votre numéro de police d'agent

Vous avez besoin de l'ID de la politique d'agent à laquelle l'intégration sera associée. Exécutez :


GET kbn:/api/fleet/agent_policies


Dans la réponse, localisez la stratégie que vous souhaitez utiliser et copiez sa valeur d'identifiant. Si vous disposez de plusieurs stratégies, utilisez celle attribuée à l'hôte exécutant Elastic Agent, qui n'est généralement pas la stratégie Fleet Server.

Étape 4 : Créer l'intégration httpjson

Cela crée une intégration httpjson gérée par Fleet qui interroge l'API PowerDMARC, gère l'authentification, la pagination et le fractionnement des réponses, le tout configuré via un seul appel API.


Avant de lancer, remplacez deux espaces réservés:

  • VOTRE_ID_POLICE_D'AGENT - l'identifiant obtenu à l'étape 3

  • VOTRE_CLÉ_API_POWERDMARC - votre jeton API Bearer PowerDMARC


POST kbn:/api/fleet/package_policies

{

  « policy_ids » : [« VOTRE_ID_POLICE_D'AGENT »],

  "package": { "name": "httpjson", "version": "1.24.0" },

  « nom » : « powerdmarc-audit-logs »,

  « description » : « Intégration de l'API REST des journaux d'audit PowerDMARC »,

  « namespace » : « default »,

  "inputs": {

    "generic-httpjson": {

      « activé » : vrai,

      "streams": {

        "httpjson.generic": {

          « activé » : vrai,

          "vars": {

            « data_stream.dataset » : « powerdmarc.audit »,

            « pipeline » : « powerdmarc-audit-pipeline »,

            « request_url » : « https://app.powerdmarc.com/api/v1/audit-logs »,

            « request_interval » : « 60m »,

            « request_method » : « GET »,

            « request_transforms » : [

              {

                "set": {

                  « target » : « url.params.api_key »,

                  « valeur » : « VOTRE_CLÉ_API_ICI »

                }

              }

            ],

            « response_split » : « target : body.data »,

            « response_pagination » : [

              {

                "set": {

                  « target » : « url.params.page »,

                  « valeur » : « [[.last_response.body.current_page]] »,

                  « fail_on_template_error » : vrai

                }

              }

            ],

            « request_redirect_headers_ban_list » : [],

            « oauth_scopes » : [],

            « tags » : [« transféré », « powerdmarc-audit »]

          }

        }

      }

    }

  }

}



Réponse attendue :

{

  "item": {

    "id": "<integration-id>",

    « nom » : « powerdmarc-audit-logs »,

    ...

  }

}

Étape 5 : Installer l'agent Elastic

L'agent Elastic doit être installé sur une machine hôte qui dispose d'un accès réseau à l'API PowerDMARC et à votre cluster Elasticsearch. L'agent fonctionne comme un service et est géré à distance via Fleet.

Vous pouvez télécharger l'agent directement depuis le site Web d'Elastic ici


Étape 6 : Valider l'ingestion des données

Une fois que l'agent a récupéré la police (généralement dans un délai de 1 à 2 minutes), la première récupération API devrait se faire automatiquement. Vérifiez que les données circulent :


6a. Vérifier le nombre de documents

Dans les outils de développement :

GET logs-powerdmarc.audit-*/_count


Un nombre supérieur à 0 confirme que les données sont en cours de réception.


6b. Inspecter un document type

GET logs-powerdmarc.audit-*/_search?size=1


Vérifiez que le document contient des champs ECS correctement analysés :

  • user.name — nom d'utilisateur de la personne qui a effectué l'action

  • événement.action — description de l'action entreprise

  • source.ip — adresse IP d'origine

  • source.geo.* — Enrichissement GeoIP (pays, ville, coordonnées)

  • @timestamp — horodatage de l'événement analysé


6c. Vérifier dans Discover

  1. Accédez à Analytics → Découvrir.

  2. Cliquez sur le menu déroulant « Data View » (Affichage des données) et sélectionnez ou créez un affichage des données pour logs-powerdmarc.audit-*.

  3. Définissez la plage de temps sur « 30 derniers jours ».

  4. Les événements du journal d'audit doivent apparaître avec tous les champs mappés.

Étape 7 : Créer une vue de données Kibana

Créez une vue de données dédiée afin que les données d'audit PowerDMARC apparaissent dans Discover et puissent être utilisées dans les visualisations du tableau de bord.


Exécuter dans Dev Tools :


POST kbn:/api/data_views/data_view

{

  "data_view": {

    « title » : « logs-powerdmarc.audit-* »,

    « nom » : « Journaux d'audit PowerDMARC »,

    « timeFieldName » : « @timestamp »

  }

}


Notez la valeur d'identifiant renvoyée : elle est nécessaire si vous souhaitez créer des panneaux de tableau de bord par programmation.

Étape 8 : Créer un tableau de bord

Vous pouvez télécharger le fichier dashboard.txt joint à la fin de ce guide et l'exécuter à l'aide de Dev Tools pour créer automatiquement le tableau de bord. 

Prochaines étapes

À ce stade, les journaux d'audit PowerDMARC sont correctement importés dans Elastic. Vous pouvez désormais :


  • Créer des règles de détection pour les activités suspectes (par exemple, connexions à partir d'adresses IP ou de pays inattendus, échecs de connexion, modifications de configuration en masse)

  • Configurez les alertes via le cadre d'alerte intégré d'Elastic ou les connecteurs vers les e-mails, Slack, etc.

  • Corrélation des données d'audit PowerDMARC avec d'autres journaux de sécurité dans votre SIEM pour une détection complète des menaces

  • Étendre l'intégration à d'autres points de terminaison de l'API PowerDMARC (rapports agrégés DMARC, rapports d'analyse)

  • Créez des rapports de conformité à l'aide des fonctionnalités de reporting de Kibana.


P
PowerDMARC est l'auteur de cet article de solution.

L'avez-vous trouvé utile ? Oui Non

Envoyez vos commentaires
Désolé, nous n'avons pas pu vous aider. Aidez-nous à améliorer cet article en nous faisant part de vos commentaires.