Passer au contenu principal

Journaux d’audit

Bénéficiez d'une meilleure visibilité sur les activités des utilisateurs grâce à l'enregistrement de chaque action, pour une réponse rapide aux incidents, une conformité simplifiée et une transparence accrue.

Écrit par Perplexity Support

Perplexity Enterprise offre des fonctionnalités complètes de journalisation d’audit qui permettent aux organisations de suivre les activités des utilisateurs et les actions administratives.

 

Les journaux d’audit enregistrent les requêtes de bout en bout, depuis les saisies utilisateur jusqu’aux étapes et réponses des agents, ainsi que toute modification des paramètres effectuée par un administrateur. Chaque entrée de journal enregistre des informations essentielles telles que le « type d’événement » (une action effectuée par un « utilisateur »), l’heure de l’événement et les informations de l’utilisateur, comme l’adresse e-mail et l’adresse IP. Vous trouverez un exemple ci-dessous.

 

Les journaux d’audit sont transmis en temps réel à un point de terminaison webhook que vous configurez via des requêtes HTTP POST, fournissant un enregistrement détaillé et chronologique de toutes les actions des utilisateurs et des événements système au sein de votre organisation.

Les journaux d’audit sont réservés aux organisations Enterprise comptant 50 sièges ou plus, ou disposant d’au moins un utilisateur Enterprise Max.

 

Activer les journaux d’audit

Pour activer les journaux d’audit pour votre organisation :

  1. Accédez à vos Paramètres d’organisation dans le portail Perplexity Enterprise.

  2. Faites défiler jusqu’à Paramètres du journal d’audit et Activer la journalisation d’audit

  3. Configurez votre URL de webhook (doit être HTTPS) et cliquez sur Enregistrer

  4. Pour plus de sécurité, vous pouvez définir un en-tête d’autorisation qui sera utilisé pour authentifier toutes les requêtes vers l’URL de votre webhook. À moins que vous ne spécifiiez un schéma d’autorisation, la valeur que vous saisissez sera envoyée sous forme de jeton Bearer

Authentification du webhook

Vous pouvez sécuriser votre point de terminaison webhook en utilisant l’une des méthodes suivantes :

Jeton Bearer

Veuillez fournir un jeton sans espaces. Le système ajoutera automatiquement Bearer à l’en-tête.

  • Exemple : votre-jeton-secret-123

  • Envoyé comme : Authorization: Bearer your-secret-token-123

En-tête d’autorisation personnalisé

Veuillez fournir une valeur complète pour l’en-tête d’autorisation (elle doit contenir un espace).

  • Exemple : Splunk xyz-token-456

  • Envoyé comme : Authorization: Splunk xyz-token-456

Livraison du webhook

Format de la requête

Les journaux d’audit sont transmis à votre URL de webhook via des requêtes HTTP POST avec :

  • Méthode : POST

  • Type de contenu : application/json

En-tête d’authentification

Si vous avez configuré un jeton d’en-tête d’authentification, il sera inclus dans la requête :

Authorization: Bearer votre-jeton-123

Ou pour les en-têtes personnalisés :

Authorization: Splunk votre-jeton-456

Gestion des réponses

  • Votre point de terminaison webhook doit renvoyer des codes d’état HTTP 2xx pour indiquer une réception réussie.

  • Les codes d’état HTTP 4xx ou 5xx seront enregistrés comme des erreurs dans le système de Perplexity.

Schéma du journal d’audit

Tous les événements du journal d’audit suivent ce schéma standard :

Champ

Type

Obligatoire

Description

uuid

string

Oui

Identifiant unique de cet événement du journal d’audit (UUID v4 généré automatiquement)

horodatage

string

Oui

Horodatage ISO 8601 au format RFC3339 (par exemple, 2024-01-15T10:30:45+00:00)

event_type

string

Oui

Type d’événement survenu (voir Types d’événements)

user_email

string

Oui

Adresse e-mail de l’utilisateur ayant effectué l’action

ip_address

string

Oui

Adresse IP du client ayant initié l’action

user_agent

string

Oui

Chaîne user agent du navigateur ou de l’application client

session_id

string

Non

Identifiant de session pour le suivi des actions associées (peut être nul)

métadonnées

objet

Non

Données supplémentaires spécifiques à l’événement (la structure varie selon le type d’événement)

Types d’événements

Vous trouverez ci-dessous une définition de chaque type d’événement que vous pourriez rencontrer dans vos journaux d’audit :

Événements d’activité utilisateur

Type d’événement

Description

login

Utilisateur authentifié et connecté avec succès

query

L’utilisateur a soumis une requête de recherche.

Lorsque des fichiers sont joints à une requête, cet événement comprend un champ attachments dans ses métadonnées, avec les valeurs file_uuid et file_name de chaque fichier joint.

answer_generated

La réponse générée par l’IA a été renvoyée à l’utilisateur.

file_upload

L’utilisateur a importé un fichier dans une requête ou un projet.

file_download

L’utilisateur a téléchargé un fichier depuis un projet.

file_delete

L’utilisateur a supprimé un fichier d’une requête ou d’un projet.

Événements liés aux sessions

Type d’événement

Description

thread_forked

L’utilisateur a créé une copie d’une session existante.

thread_exported

L’utilisateur a exporté une session, par exemple au format PDF ou Markdown.

thread_shared

L’utilisateur a partagé une session avec un autre utilisateur ou l’a rendue accessible au public.

thread_deleted

L’utilisateur a supprimé une session.

Événements liés aux membres

Type d’événement

Description

member_invited

Un administrateur a invité un nouveau membre dans l’organisation.

member_invite_rescinded

Un administrateur a annulé une invitation en attente.

member_removed

Un administrateur a retiré un membre de l’organisation.

member_role_changed

Un administrateur a modifié le rôle d’un membre dans l’organisation.

Événements liés aux rôles et aux groupes (RBAC)

Type d’événement

Description

role_created

Un administrateur a créé un rôle personnalisé.

role_updated

Un administrateur a modifié le nom, la description ou les autorisations d’un rôle.

role_deleted

Un administrateur a supprimé un rôle personnalisé.

role_users_changed

Un administrateur a directement ajouté ou retiré des utilisateurs d’un rôle. Les métadonnées comprennent un champ action égal à added ou removed.

role_groups_changed

Un administrateur a ajouté ou retiré des groupes d’un rôle. Les métadonnées comprennent un champ action égal à added ou removed.

group_created

Un administrateur a créé un groupe d’utilisateurs.

group_deleted

Un administrateur a supprimé un groupe d’utilisateurs.

group_members_changed

Un administrateur a ajouté ou retiré des membres d’un groupe d’utilisateurs.

Événements de l’agent

Type d’événement

Description

comet_agent_action

L’agent Comet a effectué une action automatisée

Événements liés aux connecteurs

Type d’événement

Description

connector_connected

L’utilisateur a connecté un connecteur tiers, par exemple Google Drive ou Slack.

connector_disconnected

L’utilisateur a déconnecté un connecteur tiers précédemment connecté.

Événements Perplexity Computer

Type d’événement

Description

computer_task_started

L’utilisateur a démarré une tâche Perplexity Computer.

computer_agent_action

Un agent Perplexity Computer a effectué une action automatisée pendant l’exécution d’une tâche.

computer_task_completed

Une tâche Perplexity Computer s’est terminée avec succès.

computer_task_error

Une tâche Perplexity Computer a échoué avec une erreur.

Exemples de payload

L’entrée suivante est enregistrée lorsqu’un utilisateur envoie une requête de recherche :

{
"uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"timestamp": "2024-01-15T14:25:12.345678+00:00",
"event_type": "query",
"user_email": "[alice@company.com](<mailto:alice@company.com>)",
"ip_address": "203.0.113.45",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"session_id": "query_xyz789",
"metadata": {
"query_str": "Quelles sont les meilleures pratiques pour la sécurité des API ?"
}
}

Mise en forme spécifique à la plateforme

Webhooks Slack

Si l’URL de votre webhook est un webhook Slack (https://hooks.slack.com/…), les journaux d’audit sont automatiquement mis en forme selon le format Block Kit de Slack pour un affichage enrichi :

{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Event Type:* Answer Generated"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*User:* [alice@company.com](<mailto:alice@company.com>)\n*IP Address:* 203.0.113.45\n*User Agent:* Mozilla/5.0...\n*Session ID:* query_xyz789\n*Timestamp:* 2024-01-15T14:25:18.987654+00:00"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n*Metadata:*\n• *answer:* API security best practices include...\n• *model:* claude-3-opus"
}
}
]
}

Remarque : Le formatage Slack inclut :

  • Le type d’événement est converti en majuscules initiales, sans les traits de soulignement.

  • Les valeurs de métadonnées sont tronquées à 500 caractères si elles dépassent cette limite.

  • La section des métadonnées totales est tronquée à 2 500 caractères pour respecter la limite de 3 000 caractères de Slack.

  • Les valeurs longues affichent un avis de troncature avec la longueur d’origine.

Collecteur d’événements HTTP Splunk (HEC)

Si votre en-tête d’authentification commence par « Splunk », les journaux d’audit sont automatiquement mis au format requis par Splunk :

{
"event": {
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"timestamp": "2024-01-15T10:30:45.123456+00:00",
"event_type": "login",
"user_email": "[user@company.com](<mailto:user@company.com>)",
"ip_address": "192.168.1.100",
"user_agent": "Mozilla/5.0...",
"session_id": "session-abc-123",
"metadata": {}
}
}

Webhooks génériques

Pour toutes les autres URL de webhook, la charge utile JSON standard (comme indiqué dans la section Exemples de charges utiles) est envoyée sans mise en forme supplémentaire.

 

Scénarios courants

Suivi des sessions de recherche utilisateur

Pour suivre la session de recherche d’un utilisateur, de la requête à la réponse :

  1. Événement de requête : L’utilisateur soumet une question

    • Contient query_str dans les métadonnées

    • Possède un session_id lié à la requête

  2. Événement de réponse générée : l’IA renvoie une réponse

    • Même session_id que l’événement de requête

    • Contient le texte complet de answer et le model d’IA utilisé

    • Peut être corrélé à l’événement de requête via session_id

Surveillance de l’accès aux fichiers

Pour suivre les fichiers consultés :

  1. Événement de téléversement de fichier : L’utilisateur ajoute un fichier à un projet

    • Contient filename, file_uuid, space_name et space_uuid

  2. Événement de téléchargement de fichier : l’utilisateur télécharge le fichier

    • Le même file_uuid peut être utilisé pour établir une corrélation avec le téléversement.

    • Indique qui a accédé au fichier et à quel moment

Audit des modifications de configuration

Pour suivre les modifications administratives :

Événement de mise à jour des paramètres de l’organisation :

L’administrateur modifie un paramètre

  • Contient la clé key du paramètre modifié

  • Affiche old_value et new_value à des fins de comparaison.

  • Peut être filtré par user_email pour identifier les administrateurs ayant effectué des modifications.

Meilleures pratiques

Implémentation du point de terminaison webhook

  • Répondez rapidement : votre point de terminaison doit répondre en moins d’une seconde pour éviter les délais d’expiration.

  • Traiter de manière asynchrone : Mettre en file d’attente les journaux d’audit pour traitement et répondre immédiatement

  • Valider les charges utiles : Vérifier la structure et le contenu des charges utiles entrantes

  • Sécurisez votre point de terminaison : Utilisez HTTPS et validez l’en-tête d’authentification

  • Gérer les échecs avec élégance : Consigner les erreurs, mais ne renvoyez pas de réponses d’erreur susceptibles de provoquer des tentatives répétées

Conservation et analyse des données

  • Stockage à long terme : Conservez les journaux d’audit pour la conformité et l’analyse de la sécurité

  • Indexez les champs clés : Indexez event_type, user_email, timestamp et session_id pour des requêtes efficaces

  • Corréler les événements : Utilisez session_id pour lier les événements associés (requêtes et réponses)

  • Surveiller les schémas : Surveiller les schémas d’accès inhabituels ou les activités suspectes

  • Exporter régulièrement : Conservez des sauvegardes des journaux d’audit en dehors du système de webhooks.

Considérations de sécurité

  • Protégez les URL de webhook : Gardez votre URL de webhook et votre jeton d’authentification confidentiels

  • Rotation des jetons : Effectuez une rotation périodique de vos jetons d’authentification

  • Surveiller les échecs de webhook : Suivre les échecs de livraison pour détecter les problèmes de point de terminaison

  • Valider les sources IP : Envisagez de valider que les requêtes webhook proviennent des plages IP de Perplexity.

  • Traitement des données personnelles : Les journaux d’audit contiennent les adresses e-mail et les adresses IP des utilisateurs. Traitez-les conformément à vos politiques de confidentialité.

Exemples de payloads JSON pour les événements du journal d’audit

 

/* Requête */
{
event_type: "query"
timestamp: 2025-02-20T09:05:31
user_email: "john@perplexity.ai"
ip_address: "162.229.229.229"
user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
metadata: {
query: "Quels ont été les résultats de notre dernier rapport de pentest ?"
}
}

/* Téléchargement de fichier */
{
event_type: "file_upload"
timestamp: 2025-02-20T09:05:31
user_email: "john@perplexity.ai"
ip_address: "162.229.229.229"
user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
metadata: {
file_name: "soc2_report.pdf"
file_uuid: "XXXXX"
space_name: "Security Reports"
space_uuid: "YYYYY"
}
}

 

Foire aux questions

Puis-je utiliser cette fonctionnalité si j’ai moins de 50 sièges dans mon organisation ?

Si votre organisation compte moins de 50 sièges, vous pouvez mettre à niveau au moins un siège vers Enterprise Max pour accéder aux journaux d'audit de votre organisation.

 

J’ai activé la fonctionnalité par erreur et des sièges supplémentaires m’ont été facturés.

Si vous avez activé les journaux d'audit par erreur et que vous n'êtes pas prêt à passer à plus de 50 sièges, nous pouvons ajuster la facturation de votre compte et annuler toute facturation ou tout paiement supplémentaire. Veuillez vous assurer d’avoir désactivé cette fonctionnalité, puis contactez-nous.