Aller au contenu principal

Logs WAF Akamai

info

Aperçu

Lakewatch est en aperçu privé. Pour demander l’accès, contactez l’équipe de votre compte Databricks.

Lakewatch fournit un connecteur API pour ingérer les logs WAF d'Akamai. Cet article couvre les prérequis, les instructions de configuration, les schémas de connecteurs et les observables de parseur Lakewatch.

Prérequis​

Le connecteur nécessite :

  1. Serverless Lakeflow Spark Declarative Pipelines activé dans votre workspace.
  2. Unity Catalog, avec les privilèges nécessaires pour créer ou utiliser une connexion Unity Catalog. Voir Autorisations de connexion.
  3. Un administrateur d’ Akamai Control Center doit activer l’intégration SIEM et provisionner l’utilisateur SIEM.
  4. L’utilisateur associé aux identifiants API doit avoir le rôle MANAGE_SIEM pour chaque groupe contenant une configuration de sécurité que vous souhaitez ingérer. Voir Intégration Akamai SIEM.
  5. L'intégration SIEM et la collecte de données doivent être activées pour chaque configuration de sécurité, et la configuration doit être active sur le réseau de production. Consultez start avec l'API d'intégration SIEM.

Limitations connues​

  • Le SCD de type 2 n'est pas pris en charge, car les logs Akamai WAF sont en ajout seul.
  • Le connecteur s’authentifie à l’aide d’identifiants EdgeGrid à longue durée de vie, dont la durée default est de 2 ans. À leur expiration, créez de nouveaux identifiants et mettez à jour la connexion.
  • La rétrospection historique ne peut pas dépasser les 12 heures pendant lesquelles Akamai conserve les logs WAF. Voir Choisir jusqu’où revenir en arrière pour l’ingestion.

Configurer Akamai pour l’ingestion​

Configurez Akamai pour permettre l’authentification depuis Databricks.

Récupérer les identifiants de configuration de la sécurité web​

  1. Connectez-vous au centre de contrôle Akamai en tant qu’administrateur.
  2. Cliquez sur l'icône de menu en haut à gauche de la page pour ouvrir le panneau de navigation.
  3. Dans le panneau de navigation, cliquez sur Your Services > Web & Data Center Security > Security Configurations > Web Security .
  4. Vérifier la liste des configurations de sécurité. Chaque configuration dispose d'un menu déroulant. Notez l' ID de contrat et de groupe sous le menu déroulant. Vous avez besoin de ces valeurs pour créer un utilisateur avec le rôle MANAGE_SIEM .
  5. Pour chaque configuration de sécurité pour laquelle vous souhaitez ingérer des logs :
    1. Cliquez sur la version sous Dernière création , Pré-production ou Production .
    2. Accédez à Advanced Settings > Logging > Data Collection For SIEM integration > Web Security Configuration ID .
    3. Notez l’ identifiant de configuration de sécurité Web . Vous avez besoin de ces valeurs lorsque vous créez un utilisateur avec le rôle MANAGE_SIEM .

Créer un utilisateur avec le rôle MANAGE_SIEM​

  1. Connectez-vous au centre de contrôle Akamai en tant qu’administrateur.
  2. Cliquez sur l'icône de menu en haut à gauche de la page pour ouvrir le panneau de navigation.
  3. Dans le panneau de navigation, cliquez sur Vos services > Administration de compte > Identité et accès .
  4. Cliquez sur Créer un utilisateur .
  5. Saisissez les valeurs E-mail et Vérifier l’e-mail .
  6. Sous Assigner des rôles , sélectionnez MANAGE_SIEM pour chacun des groupes utilisés pour définir les ID de configuration de sécurité Web de l’étape précédente.

Créer un client API​

  1. Connectez-vous au Centre de contrôle Akamai en tant qu'utilisateur créé à l'étape précédente.
  2. Cliquez sur l'icône de menu en haut à gauche de la page pour ouvrir le panneau de navigation.
  3. Dans le panneau de navigation, cliquez sur Vos services > Administration de compte > Identité et accès .
  4. Cliquez sur Créer un client API > Avancé .
  5. Sous APIs , sélectionnez Sélectionner les APIs .
  6. Cliquez sur Reset la sélection de l’API .
  7. Recherchez l’API SIEM .
  8. Sous Niveau d’accès , sélectionnez Lecture seule , puis cliquez sur Soumettre .
  9. Saisissez un nom unique pour le client d’API, puis cliquez sur Créer un client d’API .
  10. Copiez les valeurs client_secret , host , access_token et client_token . Akamai affiche ces identifiants une seule fois. Utilisez-les pour créer une connexion Unity Catalog dans Databricks.
astuce

Lors de la création d’une connexion via l’interface utilisateur Lakewatch, vous devez disposer des éléments Hôte , Jeton client , Secret client et Jeton d’accès obtenus ci-dessus.

Étapes suivantes​

Après avoir terminé la configuration ci-dessus, créez une source de données avec le connecteur Akamai WAF dans l'interface utilisateur de Lakewatch. Voir Connecteurs API pour obtenir des instructions.


Schémas de connecteur et Lakewatch​

Le connecteur ingère la table source suivante à partir du schéma source default :

Table source

Données Akamai

Analyseur Lakewatch intégré

akamai_waf_events

Événements de sécurité WAF de l’API d’intégration SIEM Akamai

akamai_waf

Table source

Données Akamai

Analyseur Lakewatch intégré

akamai_waf_events

Événements de sécurité WAF de l’API d’intégration SIEM Akamai

akamai_waf

Le connecteur écrit la table source dans la destination brute de la source de données. L’analyseur intégré écrit une table analysée distincte portant le nom de l’analyseur, sauf si vous définissez une destination pour les données analysées lors de la configuration de la source de données.

Colonnes gérées par Lakewatch​

Le connecteur ajoute lw_id, une chaîne non nulle que Lakewatch utilise pour une déduplication stable et un ordre chronologique. Il dérive lw_id du timestamp de l'événement et de _databricks_primary_key. Le connecteur dérive :

  • _databricks_primary_key à partir d’un hachage stable de l’événement source.
  • time de httpMessage.start, interprété en secondes de l’époque Unix. Le connecteur utilise time comme champ curseur pour l’ingestion incrémentale.

La table analysée transfère lw_id vers l'avant. L'analyseur attribue également la colonne time analysée et ajoute :

  • lw_meta: Métadonnées de traitement Lakewatch standard.
  • lw_observables: Valeurs extraites de champs marqués comme observables de sécurité dans l’analyseur.

Pour plus d’information, consultez la référence du parser.

Schéma de la table du connecteur brut​

Le schéma suivant combine les champs standard LakeFlow Connect avec la colonne lw_id réservée à Lakewatch. Pour les définitions de champ, consultez l’ API d’intégration Akamai SIEM.

Schéma

Colonne

Type de données

lw_id

STRING

_databricks_primary_key

LONG

time

TIMESTAMP

format

STRING

type

STRING

version

STRING

attackData

STRUCT<appliedAction: STRING, clientIP: STRING, configId: STRING, policyId: STRING, ruleActions: STRING, ruleData: STRING, ruleMessages: STRING, ruleSelectors: STRING, ruleTags: STRING, ruleVersions: STRING, rules: STRING, apiId: STRING, apiKey: STRING, clientReputation: STRING, slowPostAction: STRING, slowPostRate: STRING, decodedRules: ARRAY<STRUCT<rule: STRING, ruleAction: STRING, ruleData: STRING, ruleMessage: STRING, ruleSelector: STRING, ruleTag: STRING, ruleVersion: STRING>>>

botData

STRUCT<botScore: STRING, responseSegment: STRING>

clientData

STRUCT<telemetryType: STRING, appBundleId: STRING, appVersion: STRING, sdkVersion: STRING>

custom

STRING

geo

STRUCT<asn: STRING, city: STRING, continent: STRING, country: STRING, regionCode: STRING>

httpMessage

STRUCT<bytes: STRING, host: STRING, method: STRING, path: STRING, port: STRING, protocol: STRING, query: STRING, requestHeaders: STRING, requestId: STRING, responseHeaders: STRING, start: STRING, status: STRING, tls: STRING>

identity

STRUCT<ja4: STRING, tlsFingerprintV2: STRING, tlsFingerprintV3: STRING>

userRiskData

STRUCT<allow: STRING, emailDomain: STRING, general: STRING, originUserId: STRING, risk: STRING, score: STRING, status: STRING, trust: STRING, username: STRING, uuid: STRING>

Colonne

Type de données

lw_id

STRING

_databricks_primary_key

LONG

time

TIMESTAMP

format

STRING

type

STRING

version

STRING

attackData

STRUCT<appliedAction: STRING, clientIP: STRING, configId: STRING, policyId: STRING, ruleActions: STRING, ruleData: STRING, ruleMessages: STRING, ruleSelectors: STRING, ruleTags: STRING, ruleVersions: STRING, rules: STRING, apiId: STRING, apiKey: STRING, clientReputation: STRING, slowPostAction: STRING, slowPostRate: STRING, decodedRules: ARRAY<STRUCT<rule: STRING, ruleAction: STRING, ruleData: STRING, ruleMessage: STRING, ruleSelector: STRING, ruleTag: STRING, ruleVersion: STRING>>>

botData

STRUCT<botScore: STRING, responseSegment: STRING>

clientData

STRUCT<telemetryType: STRING, appBundleId: STRING, appVersion: STRING, sdkVersion: STRING>

custom

STRING

geo

STRUCT<asn: STRING, city: STRING, continent: STRING, country: STRING, regionCode: STRING>

httpMessage

STRUCT<bytes: STRING, host: STRING, method: STRING, path: STRING, port: STRING, protocol: STRING, query: STRING, requestHeaders: STRING, requestId: STRING, responseHeaders: STRING, start: STRING, status: STRING, tls: STRING>

identity

STRUCT<ja4: STRING, tlsFingerprintV2: STRING, tlsFingerprintV3: STRING>

userRiskData

STRUCT<allow: STRING, emailDomain: STRING, general: STRING, originUserId: STRING, risk: STRING, score: STRING, status: STRING, trust: STRING, username: STRING, uuid: STRING>

Observables de l’analyseur​

Le parseur akamai_waf écrit les objets imbriqués sous la forme VARIANT et extrait les champs suivants dans lw_observables.

Observables

Champ

Observable

attackData.clientIP

ip

httpMessage.host

hostname

httpMessage.requestId

trace_id

userRiskData.emailDomain

domain

userRiskData.originUserId

actor_id

userRiskData.username

username

userRiskData.uuid

actor_id

Champ

Observable

attackData.clientIP

ip

httpMessage.host

hostname

httpMessage.requestId

trace_id

userRiskData.emailDomain

domain

userRiskData.originUserId

actor_id

userRiskData.username

username

userRiskData.uuid

actor_id