SQL Server Audit (Database Engine)

  • 01/01/2020
  • 13 minutes to read
    • D
    • v
    • M
    • M
    • D
    • +8

Applies to: yes SQL Server (toutes les versions prises en charge)  Oui Instance gérée Azure SQL

L’audit d’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 dans des fichiers d’audit.

Important

Sur une instance gérée Azure SQL, cette fonctionnalité T-SQL présente certains changements de comportement. Reportez-vous à Azure SQL Managed Instance T-SQL differences from SQL Server pour plus de détails sur toutes les modifications de comportement T-SQL.

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 dont vous avez besoin pour activer, stocker et afficher des audits sur divers objets de serveur et de base de données.

Vous pouvez enregistrer des groupes d’actions d’audit de serveur par instance, ainsi que 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 produira chaque fois que l’action vérifiable est rencontrée.

Toutes les éditions de SQL Server prennent en charge les audits au niveau du serveur. Toutes les éditions prennent en charge les audits au niveau des bases de données à partir de SQL Server 2016 (13.x) DS1. Auparavant, l’audit au niveau de la base de données était limité aux éditions Enterprise, Developer et Evaluation. Pour plus d’informations, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2016.

Remarque

Cette rubrique s’applique à SQL Server. Pour la base de données SQL, consultez Démarrer avec l’audit de base de données SQL.

Composants d’audit SQL Server

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

L’audit SQL Server utilise des événements étendus pour aider à créer un audit. Pour plus d’informations sur les événements étendus, consultez Événements étendus.

Audit SQL Server

L’objet Audit SQL Server 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 se fait au niveau de l’instance SQL Server. Vous pouvez avoir plusieurs audits par instance SQL Server.

Lorsque vous définissez un audit, vous spécifiez l’emplacement de la sortie des résultats. C’est la destination de l’audit. L’audit est créé dans un état désactivé et n’audite pas automatiquement les actions. Une fois l’audit activé, la destination de l’audit reçoit les données de l’audit.

Spécification d’audit de serveur

L’objet Spécification d’audit de serveur appartient à un audit. Vous pouvez créer une spécification d’audit de serveur par audit, car les deux sont créées au niveau de la portée de l’instance SQL Server.

La spécification d’audit de serveur collecte de nombreux groupes d’actions au niveau du serveur générés par la fonctionnalité Événements étendus. Vous pouvez inclure des groupes d’actions d’audit dans une spécification d’audit de serveur. Les groupes d’actions d’audit sont des groupes d’actions prédéfinis, qui sont des événements atomiques se produisant dans le moteur de base de données. Ces actions sont envoyées à l’audit, qui les enregistre dans la cible.

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

Spécification d’audit de base de données

L’objet Spécification d’audit de base de données 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 par audit.

La spécification d’audit de base de données collecte les actions d’audit au niveau de la base de données soulevé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 d’audit de base de données. Les événements d’audit sont les actions atomiques qui peuvent être auditées par le moteur SQL Server. Les groupes d’actions d’audit sont des groupes d’actions prédéfinis. Les deux sont à la portée de la base de données SQL Server. Ces actions sont envoyées à l’audit, qui les enregistre dans la cible. N’incluez pas d’objets à portée de 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 la rubrique Groupes d’actions et actions d’audit SQL Server.

Cible

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

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 à celles du journal des événements de sécurité Windows et est moins sécurisé que le journal des événements de sécurité Windows.

L’écriture dans le journal de sécurité Windows nécessite l’ajout du compte de service SQL Server à la stratégie Générer des audits de sécurité. Par défaut, le Système local, le Service Local et le Service réseau font partie de cette stratégie. Ce paramètre peut être configuré à l’aide du composant logiciel enfichable de stratégie de sécurité (secpol.MSC). De plus, la stratégie de sécurité d’accès aux objets d’audit doit être activée pour le succès et l’échec. Ce paramètre peut être configuré à l’aide du composant logiciel enfichable de stratégie de sécurité (secpol.MSC). Dans Windows Vista ou Windows Server 2008, vous pouvez définir la stratégie générée par l’application plus granulaire à partir de la ligne de commande à l’aide du programme de stratégie d’audit (AuditPol.EXE). Pour plus d’informations sur les étapes à suivre pour activer l’écriture dans le journal de sécurité Windows, consultez Écrire des événements d’audit SQL Server dans le journal de sécurité. Pour plus d’informations sur Auditpol.programme exe, voir l’article 921469 de la base de connaissances, Comment utiliser la stratégie de groupe pour configurer un audit de sécurité détaillé. Les journaux d’événements Windows sont globaux pour le système d’exploitation Windows. Pour plus d’informations sur les journaux d’événements Windows, consultez Aperçu de l’observateur d’événements. Si vous avez besoin d’autorisations plus précises sur l’audit, utilisez la cible du fichier binaire.

Lorsque vous enregistrez des informations d’audit dans un fichier, pour éviter toute altération, vous pouvez restreindre l’accès à l’emplacement du fichier de la manière suivante:

  • Le compte de service SQL Server doit disposer d’une autorisation de lecture et d’écriture.

  • Les administrateurs d’audit ont généralement besoin d’une autorisation de lecture et d’écriture. Cela suppose que les administrateurs d’audit sont des comptes Windows pour l’administration des fichiers d’audit, tels que : les copier dans différents partages, les sauvegarder, etc.

  • Les lecteurs d’audit autorisés à lire les fichiers d’audit doivent avoir une autorisation de lecture.

Même lorsque le moteur de base de données écrit dans un fichier, les autres utilisateurs de Windows peuvent lire le fichier d’audit s’ils en ont la permission. 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 autorisées par CONTROL SERVER peuvent utiliser le moteur de base de données pour accéder aux fichiers d’audit. Pour enregistrer tout utilisateur qui lit le fichier d’audit, définissez un audit sur master.sys.fn_get_audit_fichier. Cela enregistre les connexions avec l’autorisation du SERVEUR de CONTRÔLE qui ont accédé au fichier d’audit via SQL Server.

Si un administrateur d’audit copie le fichier à un emplacement différent (à des fins d’archivage, etc.), les listes de contrôle d’accès du nouvel emplacement doivent être réduites aux 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 les rapports, vous pouvez empêcher les utilisateurs non autorisés d’accéder à l’enregistrement d’audit.

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

Pour plus d’informations sur les enregistrements d’audit écrits sur la cible, consultez Enregistrements d’audit SQL Server.

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 recevra des entrées.

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

Le processus général de création et d’utilisation d’un audit est le suivant.

  1. Créez un audit et définissez la cible.

  2. Créez une spécification d’audit de serveur ou une spécification d’audit de base de données qui correspond à l’audit. Activez la spécification d’audit.

  3. Activez l’audit.

  4. Lisez les événements d’audit à l’aide de l’Observateur d’événements Windows, de l’Observateur de fichiers journaux ou de la fonction fn_get_audit_file.

Pour plus d’informations, consultez Créer un Audit de serveur et une Spécification d’Audit de Serveur et Créer une Spécification d’audit de Serveur et d’Audit de base de données.

Considérations

En cas de défaillance lors du lancement de l’audit, le serveur ne démarre pas. Dans ce cas, le serveur peut être démarré en utilisant l’option -f sur la ligne de commande.

Lorsqu’un échec d’audit provoque l’arrêt ou le non-démarrage du serveur car ON_FAILURE=SHUTDOWN est spécifié pour l’audit, l’événement MSG_AUDIT_FORCED_SHUTDOWN sera écrit dans le journal. Comme l’arrêt se produira lors de la première rencontre de ce paramètre, l’événement sera écrit une fois. Cet événement est écrit après le message d’échec de l’audit à l’origine de l’arrêt. Un administrateur peut contourner les arrêts induits par l’audit en démarrant SQL Server en mode utilisateur unique à l’aide de l’indicateur -m. Si vous démarrez en mode Utilisateur unique, vous rétrograderez tout audit où ON_FAILURE=SHUTDOWN est spécifié pour s’exécuter dans cette session sous la forme ON_FAILURE=CONTINUE. Lorsque SQL Server est démarré à l’aide de l’indicateur -m, le message MSG_AUDIT_SHUTDOWN_BYPASSED sera écrit dans le journal des erreurs.

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

Attacher une base de données avec un Audit Défini

Attacher 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înera une spécification d’audit orpheline. Comme un audit avec un GUID correspondant n’existe pas sur l’instance du serveur, aucun événement d’audit ne sera enregistré. Pour corriger cette situation, utilisez la commande ALTER DATABASE AUDIT SPECIFICATION pour connecter la spécification d’audit orpheline à un audit de serveur existant. Vous pouvez également utiliser la commande CREATE SERVER AUDIT pour créer un nouvel audit de serveur avec le GUID spécifié.

Vous pouvez attacher une base de données sur laquelle une spécification d’audit est définie à une autre édition de SQL Server qui ne prend pas en charge l’audit SQL Server, telle que SQL Server Express, mais elle n’enregistrera pas les événements d’audit.

Mise en miroir de base 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 base de données inclura 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 pour permettre à la spécification d’audit de 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>.

  • Pour les cibles de fichiers binaires, le compte de service du serveur miroir doit disposer des autorisations appropriées à l’emplacement où la piste d’audit est en cours d’écriture.

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

Les administrateurs d’audit

Membres du rôle de serveur fixe sysadmin sont identifiés comme utilisateur dbo dans chaque base de données. Pour auditer les actions des administrateurs, auditez les actions de l’utilisateur dbo.

Création et gestion d’audits avec Transact-SQL

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

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:

Instructions DDL Description
ALTER AUTHORIZATION Change la propriété d’une garantie.
ALTER DATABASE AUDIT SPECIFICATION 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.
ALTER SERVER AUDIT SPECIFICATION Modifie un objet server audit specification à l’aide de la fonctionnalité SQL Server Audit.
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.
CREATE SERVER AUDIT Crée un objet server audit à 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.
SUPPRIMEZ la 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.
DROP SERVER AUDIT Supprime un objet d’audit de serveur à l’aide de la fonctionnalité d’audit SQL Server.
SUPPRIMER la SPÉCIFICATION d’AUDIT DE SERVEUR Supprime un objet de spécification d’audit de serveur à l’aide de la fonctionnalité d’audit SQL Server.

Vues et fonctions dynamiques

Le tableau suivant répertorie les vues et fonctions dynamiques que vous pouvez utiliser pour l’audit SQL Server.

Vues et fonctions dynamiques Description
sys.dm_audit_actions Renvoie une ligne pour chaque action d’audit pouvant être signalée dans le journal d’audit et pour chaque groupe d’actions d’audit pouvant être configuré dans le cadre de l’audit SQL Server.
sys.dm_server_audit_status Fournit des informations sur l’état actuel de l’audit.
sys.dm_audit_class_type_map Renvoie une table qui mappe le champ class_type du journal d’audit au champ class_desc de sys.dm_audit_actions.
fn_get_audit_file Renvoie les informations d’un fichier d’audit créé par un audit de serveur.

Vues de catalogue

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

Vues du catalogue Description
sys.database_audit_specifications 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_details 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 de serveur dans un audit SQL Server sur une instance de serveur.
sys.server_audit_specifications_details Contient des informations sur les détails de spécification d’audit de serveur (actions) dans un audit SQL Server sur une instance de serveur.
sys.server_file_audits Contient des informations étendues sur le type d’audit de fichier dans un audit SQL Server sur une instance de serveur.

Permissions

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

Pour créer, modifier ou supprimer un Audit de serveur ou une spécification d’audit de serveur, les directeurs de serveur ont besoin de l’autorisation ALTER ANY SERVER AUDIT ou CONTROL SERVER. Pour créer, modifier ou supprimer une spécification d’audit de base de données, les responsables de base de données ont besoin de l’autorisation ALTER ANY DATABASE AUDIT ou de l’autorisation ALTER or CONTROL sur la base de données. De plus, les mandants doivent être autorisés à se connecter à la base de données ou à MODIFIER les autorisations d’AUDIT ou de CONTRÔLE DU SERVEUR.

L’autorisation VIEW ANY DEFINITION permet d’afficher les vues d’audit au niveau du serveur et la DÉFINITION de VUE 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 du catalogue, même si le principal a la possibilité de MODIFIER N’IMPORTE QUEL AUDIT DE SERVEUR ou de MODIFIER les autorisations d’AUDIT DE BASE DE DONNÉES.

Pour plus d’informations sur l’octroi de droits et d’autorisations, consultez GRANT (Transact-SQL).

Attention

Les directeurs du rôle administrateur système peuvent altérer n’importe quel composant d’audit et ceux du rôle db_owner peuvent altérer les spécifications d’audit dans une base de données. L’audit SQL Server validera qu’une ouverture de session qui crée ou modifie une spécification d’audit a au moins l’autorisation ALTER ANY DATABASE AUDIT. Cependant, il ne fait aucune validation 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 les principes du rôle sysadmin ou db_owner.

Créer un Audit de Serveur et une Spécification d’Audit de Serveur

Créer un Audit de Serveur et une Spécification d’Audit de Base de données

Afficher un journal d’audit SQL Server

Écrire des événements d’audit SQL Server dans le Journal de sécurité

Propriétés du serveur (Page de sécurité)
Explique comment activer l’audit de connexion pour SQL Server. Les enregistrements d’audit sont stockés dans le journal des applications Windows.

L’option de configuration du serveur en mode d’audit c2
Explique le mode d’audit de conformité de la sécurité C2 dans SQL Server.

Catégorie d’événements d’audit de sécurité (Profileur SQL Server)
Explique les événements d’audit que vous pouvez utiliser dans le profileur SQL Server. Pour plus d’informations, consultez Profileur SQL Server.

SQL Trace
Explique comment SQL Trace peut être utilisé à partir de vos propres applications pour créer des traces manuellement, au lieu d’utiliser SQL Server Profiler.

Déclencheurs DDL
Explique comment utiliser les déclencheurs DDL (Data Definition Language) pour suivre les modifications apportées à vos bases de données.

Microsoft TechNet : Centre technique SQL Server: Sécurité et protection SQL Server 2005
Fournit des informations à jour sur la sécurité SQL Server.

Voir Aussi

Groupes et actions d’audit SQL Server
Enregistrements d’audit SQL Server