Journalisation d’audit dans Azure Database pour PostgreSQL : Serveur flexible
S’APPLIQUE À : Azure Database pour PostgreSQL : serveur flexible
L’enregistrement d’audit des activités de base de données dans le serveur flexible Azure Database pour PostgreSQL est disponible via l’extension Audit PostgreSQL : pgaudit
. pgaudit
fournit un enregistrement d’audit détaillé des sessions et/ou des objets.
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 le journal d’activité Azure.
Considérations sur l’utilisation
Par défaut, les instructions de journal pgaudit
et vos instructions de journal habituelles sont émises en utilisant la fonctionnalité de journalisation standard de Postgres. Dans le serveur flexible Azure Database pour PostgreSQL, vous pouvez configurer l’envoi de tous les journaux au magasin de journaux Azure Monitor pour analyse ultérieure dans Log Analytics. Si vous activez la journalisation des ressources Azure Monitor, vos journaux sont automatiquement envoyés (au format JSON) aux journaux Azure Monitor, Stockage Azure et/ou Event Hubs, selon votre choix.
Pour savoir comment configurer la journalisation dans les services Stockage Azure et Event Hubs ou les journaux Azure Monitor, consultez la section concernant les journaux de ressources dans l’article sur les journaux de serveur.
Installation de pgaudit
Avant de pouvoir installer l’extension pgaudit
dans le serveur flexible Azure Database pour PostgreSQL, vous devez ajouter l’extension pgaudit
à la liste d’autorisation pour pouvoir l’utiliser.
À l’aide du Portail Azure :
1. Sélectionnez votre instance de serveur flexible Azure Database pour PostgreSQL.
1. Dans la barre latérale, sélectionnez Paramètres du serveur.
1. Recherchez le paramètre azure.extensions
.
1. Sélectionnez pgaudit
comme extension à ajouter à la liste d’autorisation.
Avec Azure CLI :
Vous pouvez ajouter des extensions à la liste d’autorisation en utilisant la commande CLI « parameter set ».
az postgres flexible-server parameter set --resource-group <your resource group> --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value `pgaudit`
Pour installer pgaudit
, vous devez l’inclure dans les bibliothèques de préchargement partagé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 Azure, d’Azure CLI ou de l’API REST.
À l’aide du Portail Azure :
Sélectionnez votre instance de serveur flexible Azure Database pour PostgreSQL.
Dans la barre latérale, sélectionnez Paramètres du serveur.
Recherchez le paramètre
shared_preload_libraries
.Sélectionnez
pgaudit
.Vous pouvez vérifier que
pgaudit
est chargé dans shared_preload_libraries en exécutant la requête suivante dans psql :show shared_preload_libraries;
Vous devez voir
pgaudit
dans le résultat de la requête qui renvoie shared_preload_libraries.Connectez-vous à votre serveur avec 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 l’enregistrement de shared_preload_libraries
.
Paramètrespgaudit
pgaudit
vous permet de configurer l’enregistrement d’audit des sessions ou des 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.
Une fois que vous avez activé pgaudit
, vous pouvez configurer ses paramètres pour démarrer l’enregistrement.
Pour configurer pgaudit
, vous pouvez suivre les instructions ci-dessous.
À l’aide du Portail Azure :
Sélectionnez votre base de données Azure pour le serveur PostgreSQL.
Dans la barre latérale, sélectionnez Paramètres du serveur.
Recherchez les paramètres
pgaudit
.Choisissez les paramètres de configuration appropriés à modifier. Par exemple, pour démarrer la journalisation, définissez
pgaudit.log
surWRITE
Sélectionner le bouton Enregistrer pour enregistrer les modifications
La documentation pgaudit
donne la définition de chaque paramètre. Testez d’abord les paramètres pour vérifier que vous obtenez le comportement attendu.
La définition de pgaudit.log_client
sur Activé redirige les journaux vers un processus client (comme psql) au lieu de les écrire dans le fichier. Ce paramètre doit généralement rester désactivé.
pgaudit.log_level
est activé uniquement lorsque pgaudit.log_client
est activé.
Dans le serveur flexible Azure Database pour PostgreSQL, pgaudit.log
ne peut pas être défini avec un raccourci de signe -
(moins) comme décrit dans la documentation pgaudit
. Toutes les classes d’instruction requises (READ, WRITE, etc.) doivent être spécifiées individuellement.
Si vous définissez le paramètre log_statement sur DDL ou ALL, et que vous exécutez une commande CREATE ROLE/USER ... WITH PASSWORD ... ;
ou ALTER ROLE/USER ... WITH PASSWORD ... ;
, PostgreSQL crée une entrée dans les journaux PostgreSQL où le mot de passe est enregistré en texte clair, ce qui peut entraîner un risque de sécurité potentiel. Il s’agit d’un comportement attendu conformément à la conception du moteur PostgreSQL.
Toutefois, vous pouvez utiliser l’extension pgaudit
et définir le paramètre pgaudit.log=DDL
dans la page Paramètres du serveur, qui n’enregistre aucune instruction CREATE/ALTER ROLE
dans le journal Postgres, contrairement au paramètre log_statement=DDL
Postgres. Si vous n’avez pas besoin de journaliser ces instructions, vous pouvez ajouter pgaudit.log ='ROLE'
en plus, qui expurge le mot de passe des journaux pendant la journalisation de CREATE/ALTER ROLE
.
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
.
Mise en route
Pour commencer, définissez pgaudit.log
sur WRITE
, puis ouvrez vos journaux de serveur pour passer en revue la sortie.
Affichage des journaux d’audit
La façon dont vous accédez aux journaux dépend du point de terminaison que vous choisissez. Consultez l’article Compte de stockage des journaux pour le Stockage Azure. Consultez l’article Diffusion en streaming des journaux Azure pour Event Hubs.
Pour les journaux Azure 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. Les champs de la table sont décrits ci-dessous. En savoir plus sur l’interrogation et la génération d’alertes dans la vue d’ensemble Interroger les journaux Azure Monitor.
Vous pouvez utiliser cette requête pour commencer. Vous pouvez configurer des alertes basées sur les requêtes.
Rechercher toutes les entrées pgaudit
dans les journaux Postgres pour un serveur particulier au cours du dernier jour
AzureDiagnostics
| where Resource =~ "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"