Partager via


Audit de SQL Server (Moteur de base de données)

Applies to :SQL ServerAzure SQL Managed Instance

Auditing une instance du moteur de base de données SQL Server ou d’une base de données individuelle implique le suivi et la journalisation des événements qui se produisent sur le moteur de base de données. SQL Server audit vous permet de créer des audits de serveur, qui peuvent contenir des spécifications d’audit de serveur pour les événements au niveau du serveur et des spécifications d’audit de base de données pour les événements au niveau de la base de données. Les événements audités peuvent être écrits dans les journaux d’événements ou les fichiers d’audit.

Il existe plusieurs niveaux d’audit pour SQL Server, en fonction des exigences du gouvernement ou des normes pour votre installation. SQL Server Audit fournit les outils et les processus que vous devez avoir à activer, stocker et afficher des audits sur différents objets serveur et base de données.

Vous pouvez enregistrer des groupes d'actions d'audit du serveur par instance, et des groupes d'actions d'audit de base de données ou des actions d'audit de base de données par base de données. L’événement d’audit se produit chaque fois que l’action pouvant être auditée est rencontrée.

Cet article s’applique aux SQL Server et aux Azure SQL Managed Instance.

composants d’audit SQL Server

Un audit correspond à la combinaison de plusieurs éléments au sein d'un package unique pour un groupe spécifique d'actions de serveur ou d'actions de base de données. Les composants de l’audit SQL Server combinent pour produire une sortie appelée audit, tout comme une définition de rapport combinée avec des graphiques et des éléments de données produit un rapport.

SQL Server audit utilise Extended Events pour vous aider à créer un audit. Pour plus d’informations sur les événements étendus, consultez la vue d’ensemble des événements étendus.

audit SQL Server

L’objet SQL Server Audit collecte une instance unique d’actions au niveau du serveur ou de la base de données et des groupes d’actions à surveiller. L’audit est au niveau de l’instance SQL Server. Vous pouvez avoir plusieurs audits par instance de SQL Server.

Lorsque vous définissez un audit, vous spécifiez l'emplacement de sortie des résultats. Il s'agit de la destination de l'audit. L’audit est créé dans un état désactivé et ne s’exécute pas automatiquement pour contrôler les actions. Les données d'audit sont transmises vers la destination de l'audit lorsque ce dernier est activé.

Spécification de l'audit du serveur

L'objet Spécification de l'audit du serveur appartient à un audit. Vous pouvez créer une spécification d’audit de serveur par audit, car les deux sont créées dans l’étendue de l’instance SQL Server.

La spécification de l'audit du serveur recueille de nombreux groupes d'actions au niveau du serveur déclenchées par la fonctionnalité Événements étendus. Vous pouvez inclure des groupes d'actions d'audit dans une spécification de l'audit du serveur. Les groupes d’actions d’audit sont des groupes d’actions prédéfinis, qui sont des événements atomiques qui se produisent dans le Moteur de base de données. Ces actions sont envoyées pour audit, qui les consigne dans le système ciblé.

Les groupes d’actions d’audit au niveau du serveur sont décrits dans l’article SQL Server Groupes d’actions et actions d’audit.

Remarque

En raison des contraintes de performances, tempdb et les tables temporaires ne sont pas auditées. Bien que le groupe d’actions terminées par lots capture des instructions sur des tables temporaires, il se peut qu’il ne remplisse pas correctement les noms d’objets. Toutefois, la table source est toujours auditée, ce qui garantit que toutes les insertions de la table source vers des tables temporaires sont enregistrées.

Spécification de l'audit de la base de données

L’objet Database Audit Specification appartient également à un audit SQL Server. Vous pouvez créer une spécification d’audit de base de données par base de données SQL Server et par audit.

La spécification de l'audit de la base de données recueille des actions d'audit au niveau de la base de données déclenchées par la fonctionnalité Événements étendus. Vous pouvez ajouter des groupes d’actions d’audit ou des événements d’audit à une spécification de l’audit de la base de données. les événements Audit sont les actions atomiques qui peuvent être auditées par le moteur de SQL Server. Lesgroupes d'actions d'audit sont des groupes d'actions prédéfinis. Les deux se trouvent dans l’étendue de la base de données SQL Server. Ces actions sont envoyées pour audit, qui les consigne dans le système ciblé. N’incluez pas les objets à l’étendue du serveur, tels que les vues système, dans une spécification d’audit de base de données utilisateur.

Les groupes d’actions d’audit au niveau de la base de données et les actions d’audit sont décrits dans l’article SQL Server Audit action groups and actions.

Cible

Les résultats d’un audit sont envoyés à une cible, qui peut être un fichier, le journal des événements Sécurité Windows ou le journal des événements Windows Application. Les journaux doivent être examinés et archivés périodiquement afin de s’assurer que la cible dispose d’un espace suffisant pour écrire plus d’enregistrements.

Important

Tout utilisateur authentifié peut lire et écrire dans le journal des événements de l’application Windows. Le journal des événements d’application nécessite des autorisations inférieures au journal des événements Sécurité Windows et est moins sécurisé que le journal des événements Sécurité Windows.

Pour écrire dans le journal de sécurité de Windows, le compte de service SQL Server doit être ajouté à la stratégie Générer les audits de sécurité. Par défaut, les comptes Système Local, Service local et Service réseau font partie de cette stratégie. Ce paramètre peut être configuré à l'aide du module de stratégie de sécurité (secpol.msc). En outre, la stratégie de sécurité Auditer l'accès aux objets doit être activée pour Succès et Échec. Ce paramètre peut être configuré à l'aide du module de stratégie de sécurité (secpol.msc). Dans Windows Vista ou Windows Server 2008 (et versions ultérieures), vous pouvez définir la stratégie d’application générée plus granulaire à partir de la ligne de commande en utilisant le programme de stratégie d’audit (AuditPol.exe). Pour plus d’informations sur les étapes permettant d’écrire dans le journal de sécurité de Windows, consultez Écrire les événements d’audit SQL Server dans le journal de sécurité. Pour en savoir plus sur le programme Auditpol.exe, consultez l’article 921469 de la Base de connaissances : Comment faire pour utiliser la stratégie de groupe pour configurer des paramètres d'audit de sécurité détaillés. Les journaux d’événements Windows sont globaux dans le système d’exploitation Windows. Pour plus d’informations sur les journaux des événements Windows, consultez observateur d'événements Vue d’ensemble. Si vous avez besoin d'autorisations plus précises pour l'audit, utilisez le fichier binaire cible.

Lorsque vous enregistrez des informations d’audit dans un fichier, pour éviter toute falsification, vous pouvez limiter l’accès à l’emplacement du fichier des façons suivantes :

  • Le compte de service SQL Server doit disposer à la fois de l’autorisation Lecture et Écriture.

  • Les administrateurs d'audit ont généralement besoin des autorisations d'accès en lecture et en écriture. Cela suppose que les comptes Windows sont utilisés par les administrateurs d’audit pour la gestion des fichiers d’audit, notamment leur copie sur différents partages, leur sauvegarde, et autres tâches similaires.

  • Les lecteurs d'audit qui sont autorisés à lire les fichiers d'audit doivent disposer de l'autorisation d'accès en lecture.

Même lorsque l’Moteur de base de données écrit dans un fichier, d’autres utilisateurs Windows peuvent lire le fichier d’audit s’ils disposent d’autorisations. Le Moteur de base de données ne prend pas de verrou exclusif qui empêche les opérations de lecture.

Étant donné que le moteur de base de données peut accéder au fichier, les connexions SQL Server qui ont l’autorisation CONTROL SERVER sont capables d'utiliser le moteur de base de données pour accéder aux fichiers d’audit. Dans SQL Server 2022 (16.x) et versions ultérieures, l’autorisation VIEW SERVER SECURITY AUDIT suffit pour lire les fichiers d’audit à l’aide de fn_get_audit_file. Pour enregistrer tout utilisateur qui lit le fichier d’audit, définissez un audit sur master.sys.fn_get_audit_file. Cela enregistre les connexions avec l’autorisation CONTROL SERVER qui ont accédé au fichier d’audit via SQL Server. Pour plus d’informations sur fn_get_audit_file les autorisations, consultez sys.fn_get_audit_file.

Si un administrateur d’audit copie le fichier à un autre emplacement (entre autres, à des fins d’archivage), les listes de contrôle d’accès du nouvel emplacement doivent disposer uniquement des autorisations suivantes :

  • Administrateur d’audit - Lecture/Écriture
  • Lecteur d’audit - Lire

Nous vous recommandons de générer des rapports d’audit à partir d’une instance distincte de SQL Server, telle qu’une instance de SQL Server Express, à laquelle seuls les administrateurs d’audit ou les lecteurs d’audit ont accès. En utilisant une instance distincte du Moteur de base de données pour la création de rapports, vous pouvez empêcher les utilisateurs non autorisés d’obtenir l’accès à l’enregistrement d’audit.

Vous pouvez offrir une protection supplémentaire contre l’accès non autorisé en chiffrant le dossier dans lequel le fichier d’audit est stocké à l’aide de Windows chiffrement de lecteur BitLocker ou de Windows chiffrement du système de fichiers.

** Pour plus d'informations sur les enregistrements d’audit écrits sur la cible, consultez SQL Server Audit Records.

Vue d’ensemble de l’utilisation de SQL Server Audit

Vous pouvez utiliser SQL Server Management Studio ou Transact-SQL pour définir un audit. Une fois l’audit créé et activé, la cible reçoit des entrées.

Vous pouvez lire les journaux des événements Windows à l’aide de l’utilitaire observateur d'événements dans Windows. Pour les cibles de fichier, vous pouvez utiliser la visionneuse de fichiers Log File Viewer dans SQL Server Management Studio ou la fonction fn_get_audit_file pour lire le fichier cible.

Voici le processus général employé pour créer et utiliser un audit.

  1. Créez un audit et définissez la cible.
  2. Créez une spécification de l'audit du serveur ou une spécification de l'audit de la base de données mappée à l'audit. Activez la spécification d'audit.
  3. Activez l'audit.
  4. Lisez les événements d’audit à l’aide de la Windows observateur d'événements, Log File Viewer ou de la fonction fn_get_audit_file.

Pour plus d’informations, consultez Créer une spécification d’audit de serveur et d’audit duserveur et créer une spécification d’audit de serveur et d’audit de base de données.

Considérations

En cas d’échec lors de l’initiation de l’audit, le serveur ne démarre pas. Dans ce cas, le serveur peut être démarré à l’aide de l’option sur la -f ligne de commande.

Lorsque l’échec d’un audit entraîne l’arrêt ou le non-démarrage du serveur parce que ON_FAILURE = SHUTDOWN est spécifié pour l’audit, l’événement MSG_AUDIT_FORCED_SHUTDOWN est écrit dans le journal. Étant donné que l’arrêt se produit lors de la première rencontre de ce paramètre, l’événement n'est consigné qu’une seule fois. Cet événement est consigné après le message d'échec de l'audit qui amène l'arrêt. Un administrateur peut contourner les arrêts induits par l’audit en démarrant SQL Server en mode Mono-utilisateur à l’aide de l’indicateur -m. Si vous démarrez en mode mono-utilisateur, vous allez rabaisser tout audit où ON_FAILURE = SHUTDOWN est spécifié pour s’exécuter dans cette session en tant que ON_FAILURE = CONTINUE. Lorsque SQL Server est démarré avec l’indicateur -m, le message MSG_AUDIT_SHUTDOWN_BYPASSED est écrit dans le journal des erreurs.

Pour plus d’informations sur les options de démarrage du service, consultez Moteur de base de données Options de démarrage du service.

Opérations internes dans Azure SQL Managed Instance

  • Dans Azure SQL Database et Azure SQL Managed Instance, les événements initiés par SQLDBControlPlaneFirstPartyApp sont une fonction de Azure interne du plan de contrôle Azure SQL Database. Les événements initiés par SQLDBControlPlaneFirstPartyApp font partie d’une opération de synchronisation interne entre le moteur SQL et Azure Resource Manager. Ces événements font normalement partie de la gestion des ressources et sont nécessaires pour une représentation et une opération de ressources correctes dans Azure.

Attacher une base de données avec un audit défini

L’attachement d’une base de données qui a une spécification d’audit et spécifie un GUID qui n’existe pas sur le serveur entraîne une spécification d’audit orpheline . Étant donné qu’il n’existe pas d’audit avec un GUID correspondant sur l’instance de serveur, aucun événement d’audit n’est enregistré. Pour corriger cette situation, utilisez la ALTER DATABASE AUDIT SPECIFICATION commande pour connecter la spécification d’audit orpheline à un audit de serveur existant. Vous pouvez également utiliser la CREATE SERVER AUDIT commande pour créer un audit de serveur avec le GUID spécifié.

Vous pouvez attacher une base de données qui a une spécification d'audit définie sur elle à une autre édition de SQL Server qui ne prend pas en charge l'audit SQL Server, comme SQL Server Express, mais il n'enregistre pas les événements d'audit.

Mise en miroir de bases de données et audit SQL Server

Une base de données qui a une spécification d’audit de base de données définie et qui utilise la mise en miroir de bases de données inclut la spécification d’audit de base de données. Pour fonctionner correctement sur l'instance SQL en miroir, les éléments suivants doivent être configurés :

  • Le serveur miroir doit avoir un audit avec le même GUID afin de permettre à la spécification de l'audit de la base de données d'écrire des enregistrements d'audit. Cela peut être configuré à l’aide de la commande CREATE AUDIT WITH GUID = <guid-from-source-server-audit>.

  • Si la cible est un fichier binaire, le compte de service de serveur miroir doit avoir des autorisations appropriées pour l'emplacement où le journal d'audit est écrit.

  • Pour les cibles du journal des événements de Windows, la stratégie de sécurité sur l’ordinateur où se trouve le serveur miroir doit autoriser l’accès du compte de service au journal des événements de sécurité ou au journal des événements d'application.

Auditer l’activité de l’administrateur

Les membres du rôle serveur fixe sysadmin sont identifiés comme utilisateur dbo dans toutes les bases de données. Pour auditer les actions des administrateurs, auditez les actions de l'utilisateur dbo .

autorisations

Chaque fonctionnalité et commande pour SQL Server Audit a des exigences d’autorisation individuelles.

Pour créer, modifier ou supprimer une spécification d’audit de serveur ou d’audit du serveur, les principaux du serveur nécessitent l’autorisation ALTER ANY SERVER AUDIT ou l’autorisation CONTROL SERVER . Pour créer, modifier ou supprimer une spécification d'audit de base de données, les principaux de base de données ont besoin de l'autorisation ALTER ANY DATABASE AUDIT, ou de l'autorisation ALTER ou CONTROL sur la base de données. En outre, les principaux doivent avoir l’autorisation de se connecter à la base de données, ou ALTER ANY SERVER AUDIT ou CONTROL SERVER.

L’autorisation VIEW ANY DEFINITION fournit l’accès pour afficher les vues d’audit au niveau du serveur et VIEW DEFINITION permet d’afficher les vues d’audit au niveau de la base de données. Le refus de ces autorisations annule la possibilité d’afficher les vues de catalogue, même si le principal dispose des autorisations ALTER ANY SERVER AUDIT ou ALTER ANY DATABASE AUDIT.

Pour lire les données d’audit à l’aide de fn_get_audit_file, SQL Server 2019 (15.x) et les versions antérieures nécessitent l’autorisation CONTROL SERVER sur le serveur, tandis que SQL Server 2022 (16.x) et les versions ultérieures nécessitent VIEW SERVER SECURITY AUDIT autorisation. Pour plus d’informations, consultez sys.fn_get_audit_file.

Pour plus d’informations sur l’octroi de droits et d’autorisations, consultez GRANT.

Attention

Les principaux du rôle sysadmin peuvent falsifier n’importe quel composant d’audit, et les principaux du rôle db_owner peuvent falsifier les spécifications d’audit dans une base de données. SQL Server Audit vérifie qu’une ouverture de session qui crée ou modifie une spécification d’audit a au moins l’autorisation ALTER ANY DATABASE AUDIT. Toutefois, aucune validation n'est effectuée lorsque vous attachez une base de données. Vous devez supposer que toutes les spécifications d’audit de base de données sont aussi fiables que ces principaux dans le rôle sysadmin ou db_owner .

Créer et gérer des audits avec Transact-SQL

Vous pouvez utiliser des instructions DDL, des vues de gestion dynamique et des fonctions et des vues catalogue pour implémenter tous les aspects de SQL Server Audit.

Instructions de langage de définition de données

Vous pouvez utiliser les instructions DDL suivantes pour créer, modifier et supprimer des spécifications d'audit :

Déclarations DDL Descriptif
MODIFIER L'AUTORISATION Modifie la propriété d'un objet sécurisable.
MODIFIER LA SPÉCIFICATION D'AUDIT DE LA BASE DE DONNÉES Modifie un objet de spécification d’audit de base de données à l’aide de la fonctionnalité d’audit SQL Server.
ALTER SERVER AUDIT Modifie un objet d’audit de serveur à l’aide de la fonctionnalité d’audit SQL Server.
ALTERER LA SPÉCIFICATION DE L'AUDIT DU SERVEUR Modifie un objet de spécification d’audit du serveur à l’aide de la fonctionnalité d’audit SQL Server.
CRÉER UNE SPÉCIFICATION D'AUDIT DE BASE DE DONNÉES Crée un objet de spécification d’audit de base de données à l’aide de la fonctionnalité d’audit SQL Server.
CRÉER UN AUDIT DE SERVEUR Crée un objet d’audit de serveur à l’aide de SQL Server Audit.
CRÉER UNE SPÉCIFICATION D'AUDIT DE SERVEUR Crée un objet de spécification d’audit de serveur à l’aide de la fonctionnalité d’audit SQL Server.
SUPPRIMER SPÉCIFICATION D'AUDIT DE BASE DE DONNÉES Supprime un objet de spécification d’audit de base de données à l’aide de la fonctionnalité d’audit SQL Server.
SUPPRIMER L'AUDIT DU SERVEUR Supprime un objet d’audit de serveur à l’aide de la fonctionnalité d’audit SQL Server.
SUPPRIMER SPÉCIFICATION D'AUDIT DU SERVEUR Supprime un objet de spécification d’audit de serveur à l’aide de la fonctionnalité d’audit SQL Server.

Fonctions et vues dynamiques

Le tableau suivant répertorie les vues dynamiques et la fonction que vous pouvez utiliser pour SQL Server Audit.

Fonctions et vues dynamiques Descriptif
sys.dm_audit_actions Retourne une ligne pour chaque action d’audit qui peut être signalée dans le journal d’audit et chaque groupe d’actions d’audit qui peut être configuré dans le cadre de SQL Server Audit.
sys.dm_server_audit_status Fournit des informations sur l'état actuel de l'audit.
sys.dm_audit_class_type_map Retourne une table qui mappe le champ class_type dans le journal d’audit au champ class_desc dans sys.dm_audit_actions.
fn_get_audit_file Retourne des informations à partir d'un fichier d'audit créé par un audit du serveur.

Affichages catalogue

Le tableau suivant répertorie les vues de catalogue que vous pouvez utiliser pour l’audit SQL Server.

Affichages catalogue Descriptif
sys.database_spécifications_d'audit Contient des informations sur les spécifications d’audit de base de données dans un audit SQL Server sur une instance de serveur.
sys.database_audit_specification_détails Contient des informations sur les spécifications d’audit de base de données dans un audit SQL Server sur une instance de serveur pour toutes les bases de données.
sys.server_audits Contient une ligne pour chaque audit SQL Server dans une instance de serveur.
sys.server_audit_specifications Contient des informations sur les spécifications d’audit du serveur dans un audit SQL Server sur une instance de serveur.
spécifications_d'audit_serveur_détails Contient des informations sur les détails de la spécification d’audit du serveur (actions) dans un audit SQL Server sur une instance de serveur.
sys.server_vérifications_de_fichiers Contient des informations étendues sur le type d’audit de fichier dans un audit SQL Server sur une instance de serveur.

Étape suivante