Journalisation d’audit dans Azure Database pour PostgreSQL - Serveur unique

S’APPLIQUE À : Azure Database pour PostgreSQL – Serveur unique versions

Important

Azure Database pour PostgreSQL - Serveur unique est en voie de mise hors service. Nous vous recommandons vivement de procéder à une mise à niveau vers un serveur flexible Azure Database pour PostgreSQL. Pour plus d’informations sur la migration vers le Serveur flexible Azure Database pour PostgreSQL, consultez l’article Qu’arrive-t-il au Serveur unique Azure Database pour PostgreSQL ?.

La journalisation d’audit des activités de base de données dans Azure Database pour PostgreSQL – Serveur unique est disponible via l’extension d’audit PostgreSQL, pgAudit. L’extension pgAudit permet une journalisation d’audit détaillée des sessions et des objets.

Notes

L’extension pgAudit est disponible en préversion sur Azure Database pour PostgreSQL. Elle peut uniquement être activée sur les serveurs à usage général et à mémoire optimisée.

Si vous souhaitez des journaux de niveau ressource Azure pour des opérations telles que la mise à l’échelle du stockage et du calcul, consultez Vue d’ensemble des journaux de plateforme Azure.

Considérations sur l’utilisation

Par défaut, les instructions de journal pgAudit sont émises en même temps que vos instructions de journal habituelles à l’aide de la fonction de journalisation standard de Postgres. Dans Azure Database pour PostgreSQL, ces fichiers .log peuvent être téléchargés à partir du portail Azure ou d’Azure CLI. Le stockage maximal pour la collection de fichiers est de 1 Go. Chaque fichier est disponible pour un maximum de sept jours. La valeur par défaut est de trois jours. Ce service est une option de stockage à court terme.

Vous pouvez également configurer tous les journaux à envoyer au magasin Journaux d’activité Azure Monitor pour analyse ultérieure dans Log Analytics. Si vous activez l’option Superviser la journalisation des ressources, vos journaux sont automatiquement envoyés au format JSON à Stockage Azure, Azure Event Hubs ou Journaux d’activité Monitor, selon votre choix.

L’activation de pgAudit génère un grand volume de journalisation sur un serveur, ce qui a un impact sur les performances et le stockage des journaux. Nous vous recommandons d’utiliser Journaux d’activité Monitor, qui offre des options de stockage à plus long terme, ainsi que des fonctionnalités d’analyse et de génération d’alertes. Désactivez la journalisation standard afin de réduire l’impact d’une journalisation supplémentaire sur les performances :

  1. Définissez le paramètre logging_collector sur OFF.
  2. Redémarrez le serveur pour appliquer les modifications.

Pour savoir comment configurer la journalisation vers Stockage, Event Hubs ou Monitor Logs, consultez la section relative aux journaux d’activité de ressources dans Journaux dans Azure Database pour PostgreSQL – Serveur unique.

Installer pgAudit

Pour installer pgAudit, vous devez l’inclure dans les bibliothèques partagées préchargées du serveur. Une modification apportée au paramètre shared_preload_libraries de Postgres nécessite un redémarrage du serveur pour prendre effet. Vous pouvez modifier les paramètres à l’aide du portail, de CLI ou de l’API REST.

Pour utiliser le portail :

  1. Sélectionnez votre serveur Azure Database pour PostgreSQL.

  2. À gauche, sous Paramètres, sélectionnez Paramètres du serveur.

  3. Recherchez shared_preload_libraries.

  4. Sélectionnez PGAUDIT.

    Capture d’écran montrant Azure Database pour PostgreSQL activant shared_preload_libraries pour PGAUDIT.

  5. Redémarrez le serveur pour appliquer les modifications.

  6. Connectez-vous à votre serveur à l’aide d’un client (par exemple, psql), puis activez l’extension pgAudit :

    CREATE EXTENSION pgaudit;
    

Conseil

Si une erreur s’affiche, vérifiez que vous avez redémarré le serveur après avoir enregistré shared_preload_libraries.

Paramètres pgAudit

À l’aide de pgAudit, vous pouvez configurer la journalisation d’audit de sessions ou d’objets. La journalisation d’audit des sessions émet des journaux détaillés où se trouvent les instructions exécutées. La journalisation d’audit des objets est limitée à certaines relations. Vous pouvez choisir de configurer un ou plusieurs types de journalisation.

Notes

Les paramètres pgAudit sont spécifiés globalement et ne peuvent pas être spécifiés au niveau d’une base de données ou d’un rôle.

Après avoir installé pgAudit, vous pouvez configurer ses paramètres pour démarrer la journalisation.

Pour configurer pgAudit, dans le portail :

  1. Sélectionnez votre serveur Azure Database pour PostgreSQL.

  2. À gauche, sous Paramètres, sélectionnez Paramètres du serveur.

  3. Recherchez les paramètres pgaudit.

  4. Sélectionnez les paramètres appropriés pour les modifier. Par exemple, pour démarrer la journalisation, définissez pgaudit.log sur WRITE.

    Capture d’écran montrant Azure Database pour PostgreSQL configurant la journalisation avec pgAudit.

  5. Cliquez sur Enregistrer pour enregistrer vos modifications.

La documentation pgAudit donne la définition de chaque paramètre. Testez d’abord les paramètres et confirmez que vous obtenez le comportement attendu. Par exemple :

  • Lorsque le paramètre pgaudit.log_client est activé, il redirige les journaux vers un processus client comme psql au lieu de les écrire dans un fichier. De manière générale, laissez ce paramètre désactivé.
  • Le paramètre pgaudit.log_level est activé uniquement lorsque pgaudit.log_client est activé.

Notes

Dans Azure Database pour PostgreSQL, pgaudit.log ne peut pas être défini en utilisant le raccourci du signe moins (-) comme décrit dans la documentation de pgAudit. Toutes les classes d’instructions requises, telles que READ et WRITE, doivent être spécifiées individuellement.

Format du journal d’audit

Chaque entrée d’audit est indiquée par AUDIT: en début de ligne. Le format du reste de l’entrée est abordé en détail dans la documentation pgAudit.

Si vous avez besoin d’autres champs pour votre audit, utilisez le paramètre log_line_prefix Postgres. La chaîne log_line_prefix est une sortie qui apparaît au début de chaque ligne de journal Postgres. Par exemple, le paramètre log_line_prefix suivant fournit l’horodatage, le nom d’utilisateur, le nom de la base de données et l’ID de processus :

t=%m u=%u db=%d pid=[%p]:

Pour en savoir plus sur log_line_prefix, consultez la documentation de PostgreSQL.

Bien démarrer

Pour une prise en main rapide, définissez pgaudit.log sur WRITE. Ouvrez ensuite vos journaux pour examiner la sortie.

Afficher les journaux d’audit

Si vous utilisez des fichiers .log, vos journaux d’audit sont inclus dans le même fichier que vos journaux d’erreurs PostgreSQL. Vous pouvez télécharger des fichiers journaux à partir du portail ou de CLI.

Si vous utilisez la journalisation des ressources Azure, la façon dont vous accédez aux journaux dépend du point de terminaison que vous choisissez. Pour Stockage, consultez Journaux de ressources Azure. Pour Event Hubs, consultez également Journaux de ressources Azure.

Pour Journaux d’activité Monitor, les journaux sont envoyés à l’espace de travail que vous avez sélectionné. Les journaux Postgres utilisent le mode de collecte AzureDiagnostics pour qu’ils puissent être interrogés à partir de la table AzureDiagnostics, comme illustré. Pour en savoir plus sur les requêtes et les alertes, consultez Requêtes de journal dans Azure Monitor.

Utilisez cette requête pour commencer. Vous pouvez configurer des alertes basées sur les requêtes.

Recherchez tous les journaux Postgres pour un serveur particulier au cours du dernier jour :

AzureDiagnostics
| where LogicalServerName_s == "myservername"
| where TimeGenerated > ago(1d) 
| where Message contains "AUDIT:"

Étapes suivantes