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 d’audit PostgreSQL : pgAudit. pgAudit permet une journalisation d’audit détaillée 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 sont émises en même temps que vos instructions de journal habituelles à l’aide de la fonctionnalité de journalisation standard de Postgres. Dans le serveur flexible Azure Database pour PostgreSQL, vous pouvez configurer tous les journaux à envoyer 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) au services Stockage Azure et Event Hubs, et/ou aux journaux Azure Monitor, conformément à 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 cette extension à la liste d’autorisation pgAudit pour utilisation.

À 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 azure.extensions.
  4. Sélectionnez pgAudit comme extension que vous souhaitez autoriser. Capture d’écran montrant des extensions de la liste d’autorisation Azure Database pour PostgreSQL pour installation.

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 devriez voir pgaudit dans le résultat de la requête qui renverra shared_preload_libraries.

  6. Connectez-vous à votre serveur à l’aide d’un client (comme 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ètres pgAudit

pgAudit vous permet de configurer la journalisation d’audit des sessions et 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 la journalisation. Pour configurer pgAudit, vous pouvez suivre les instructions ci-dessous. À l’aide du Portail Azure :

  1. Sélectionnez votre serveur Azure Database pour 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 WRITECapture d’écran montrant Azure Database pour PostgreSQL - configuration de la journalisation avec pgaudit
  5. Cliquez sur 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.

Notes

L’affectation de la valeur ON à pgaudit.log_client permet de rediriger les journaux vers un processus client (comme psql) au lieu de les écrire dans un fichier. Ce paramètre doit généralement rester désactivé.

pgaudit.log_level est activé uniquement lorsque pgaudit.log_client est activé.

Remarque

Dans le serveur flexible Azure Database pour PostgreSQL, pgaudit.log ne peut pas être défini à l’aide d’un raccourci de signe - (moins) contrairement à ce qui est dit dans la documentation pgAudit. Toutes les classes d’instruction requises (READ, WRITE, etc.) doivent être spécifiées individuellement.

Notes

Si vous affectez au paramètre log_statement la valeur DDL ou ALL, et que vous exécutez une commande CREATE ROLE/USER ... WITH PASSWORD ... ; ou ALTER ROLE/USER ... WITH PASSWORD ... ;, PostgreSQL crée alors 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 en fonction de 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, ce qui permet, lors de la journalisation à'CREATE/ALTER ROLE' de biffer le mot de passe des journaux.

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.

Prise en main

Pour commencer, définissez pgaudit.log sur WRITE, puis ouvrez vos journaux de serveur pour consulter 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. Pour le stockage Azure, consultez l’article Compte de stockage des journaux. Pour Event Hubs, consultez l’article Diffusion des journaux Azure.

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

Étapes suivantes