Aller au contenu principal

Logs WAF Akamai

info

Bêta

Lakewatch est en Bêta. Les administrateurs de Workspace peuvent contrôler l'accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les aperçus au niveau du workspace.

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

Prérequis​

Le connecteur nécessite :

  1. LakeFlow Pipelines Serverless activés 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. L'aperçu de Lakeflow Connect pour Akamai WAF est activé dans votre workspace par un administrateur du workspace. Voir Activer l'aperçu du connecteur.
  4. Si la politique de réseau serverless de votre workspace utilise un accès restreint, les domaines API de la source doivent figurer dans la liste Domaines autorisés de la politique. Voir Autoriser les domaines API source dans votre politique de réseau.
  5. Un administrateur d’ Akamai Control Center doit activer l’intégration SIEM et provisionner l’utilisateur SIEM.
  6. 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.
  7. 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’ ID de configuration de la sécurité web . Conservez ces identifiants pour la configuration de l’autorisation MANAGE_SIEM et pour le champ ID(s) de configuration de sécurité de la source de données.

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 :

  1. Créez ou sélectionnez une connexion Unity Catalog en utilisant l’ hôte , le jeton client , le secret client et le jeton d’accès .
  2. Dans le champ obligatoire Identifiant(s) de configuration de sécurité du formulaire de source de données, saisissez les identifiants de configuration de sécurité Web sous forme d’entiers séparés par des virgules, par exemple 12345, 67890. Ces identifiants permettent de sélectionner les configurations à ingérer et sont distincts des informations d’identification de connexion.

Consultez les connecteurs d’API pour les paramètres de source de données restants.


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 chaque table source directement dans la destination configurée pour son analyseur intégré. Par default, la table de destination est nommée <parser>_<datasource>, où <datasource> est le nom de la source de données. Par exemple, avec le nom de source de données default akamai_waf, la table est akamai_waf_akamai_waf. Vous pouvez définir une destination différente lors de la création de la source de données. Il n’y a pas de table de staging brute séparée ou d’étape d’analyse ultérieure.

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.

Pour les sources de données Lakewatch, le connecteur ajoute également :

  • lw_meta: La source de données et l'identité de connexion, le nom et la version de l'analyseur, et l'heure d'ingestion.
  • lw_observables: Observables de sécurité extraits par le connecteur.

Pour plus d'informations, consultez les tables de sortie du connecteur.

Schéma de la table de sortie du connecteur​

La destination comprend les colonnes source et événement ci-dessous, ainsi que les colonnes lw_meta et lw_observables décrites ci-dessus.

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 sécurité​

Le connecteur 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