Partager via


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.

Capture d’écran de la liste d’autorisation dans Azure Database pour PostgreSQL.

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 :

  1. Sélectionnez votre instance de serveur flexible Azure Database pour PostgreSQL.

  2. Dans la barre latérale, sélectionnez Paramètres du serveur.

  3. Recherchez le paramètre shared_preload_libraries.

  4. Sélectionnez pgaudit.

    Capture d’écran montrant le serveur flexible Azure Database pour PostgreSQL activant shared_preload_libraries pour `pgaudit`.

  5. 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.

  6. 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 :

  1. Sélectionnez votre base de données Azure pour le serveur PostgreSQL.

  2. Dans la barre latérale, sélectionnez Paramètres du serveur.

  3. Recherchez les paramètres pgaudit.

  4. Choisissez les paramètres de configuration appropriés à modifier. Par exemple, pour démarrer la journalisation, définissez pgaudit.log sur WRITE

  5. 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:"