Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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. L'auditSQL Server vous permet de créer des audits de serveur, qui peuvent contenir des spécifications d'audit de serveur pour les événements de niveau serveur, ainsi que des spécifications d'audit de base de données pour les événements de niveau 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 pour 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 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 produit chaque fois que l’action auditable est rencontrée.
Toutes les éditions de SQL Server prennent en charge les audits au niveau du serveur. L’audit au niveau de la base de données est limité aux éditions Entreprise, Développeur et Évaluation. Pour plus d'informations, consultez Features Supported by the Editions of SQL Server 2014.
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 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.
L’audit SQL Server utilise des événements étendus pour faciliter la création d’un audit. Pour plus d'informations sur les événements étendus, consultez événements étendus.
Audit de 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 est 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. Il s’agit de la destination d’audit. L’audit est créé dans un état désactivé et n’audite pas automatiquement les actions. Une fois l’audit activé, la destination d’audit reçoit les données de l’audit.
Spécification de l’audit du serveur
L’objet Server Audit Specification 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 d’audit du serveur collecte de nombreux groupes d’actions au niveau du serveur déclenchés par la fonctionnalité Événements étendus. Vous pouvez inclure des groupes d’actions d’audit dans une spécification d’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 à l’audit, qui les enregistre dans l'objectif.
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 de l’audit de 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 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 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 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 au niveau de l’étendue de la base de données SQL Server. Ces actions sont envoyées à l’audit, qui les enregistre dans le système cible. N’incluez pas d’objets au niveau 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 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 de l’application Windows. Les journaux doivent être examinés et archivés régulièrement pour s’assurer que la cible dispose d’un espace suffisant 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 au 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 module de stratégie de sécurité (secpol.msc). En outre, la stratégie de sécurité de l’accès aux objets audit doit être activée pour la réussite et l’échec. Ce paramètre peut être configuré à l’aide du module 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 permettant d’écrire 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 le programme Auditpol.exe, consultez l’article 921469 de la Base de connaissances, Comment utiliser la stratégie de groupe pour configurer l’audit de sécurité détaillé. Les journaux des événements Windows sont globaux pour le système d’exploitation Windows. Pour plus d’informations sur les journaux des événements Windows, consultez Vue d’ensemble de l’Observateur d’événements. Si vous avez besoin d’autorisations plus précises sur l’audit, utilisez le fichier binaire cible.
Lorsque vous enregistrez des informations d’audit dans un fichier, pour empêcher toute falsification, vous pouvez restreindre l’accès à l’emplacement du fichier de la manière suivante :
Le compte de service SQL Server doit disposer à la fois de l’autorisation Lecture et Écriture.
Les administrateurs d’audit nécessitent généralement l’autorisation Lecture et écriture. Cela suppose que les administrateurs d’audit sont des comptes Windows pour l’administration des fichiers d’audit, tels que : les copier sur différents partages, les sauvegarder, etc.
Les lecteurs d’audit autorisés à lire les fichiers d’audit doivent avoir la permission de lecture.
Même lorsque le 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 disposant d’une autorisation CONTROL SERVER peuvent utiliser le moteur de base de données pour accéder aux fichiers d’audit. Pour enregistrer un 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.
Si un administrateur d’audit copie le fichier à un autre emplacement (à des fins d’archivage, et ainsi de suite), les listes de contrôle d’accès sur le nouvel emplacement doivent être réduites aux autorisations suivantes :
Administrateur d’audit - Lecture/écriture
Lecteur d’audit - Lecture des données
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 du chiffrement de lecteur Windows BitLocker ou du système de fichiers de chiffrement Windows.
Pour plus d’informations sur les enregistrements d’audit écrits vers la cible, consultez SQL Server Audit Records.
Vue d’ensemble de l’utilisation de l’audit SQL Server
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 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.
Créez un audit et définissez la cible.
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.
Activez l’audit.
Lisez les événements d’audit à l’aide de l'Observateur d’événements Windows, de la Visionneuse de fichiers journaux 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 de serveur 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 -f sur la ligne de commande.
Lorsqu'un échec d'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 sera écrit dans le journal. Étant donné que l’arrêt se produira lors de la première activation de ce paramètre, l’événement sera consigné 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 mono-utilisateur à l’aide de l’indicateur -m . Si vous démarrez en mode Mono-utilisateur, vous allez réduire tout audit où ON_FAILURE=SHUTDOWN est spécifié pour qu'il s’exécute dans cette session avec ON_FAILURE=CONTINUE. Lorsque SQL Server est démarré à l’aide de 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 Options de démarrage du service moteur de base de données.
Attachement d’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’un audit avec un GUID correspondant n’existe pas sur l’instance de serveur, aucun événement d’audit n’est 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 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 dessus à une autre édition de SQL Server qui ne prend pas en charge l’audit SQL Server, telle que SQL Server Express, mais elle 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 mise 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 la base de données d’écrire des enregistrements d’audit. Cela peut être configuré à l’aide de la commande CREATE AUDIT WITH GUID
=< depuis l’audit du serveur source>.Pour les cibles de fichiers binaires, le compte de service du serveur miroir doit disposer des autorisations appropriées pour l’emplacement où la piste d’audit est enregistrée.
Pour les cibles du journal des événements Windows, la stratégie de sécurité sur l’ordinateur où se trouve le serveur miroir doit autoriser l’accès au compte de service au journal des événements de sécurité ou d’application.
Administrateurs d’audit
Les membres du sysadmin rôle serveur fixe sont identifiés comme l’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 de gestion dynamique et des fonctions 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 :
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 | 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 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 | 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 serveur. |
Vues du catalogue
Le tableau suivant répertorie les vues de catalogue que vous pouvez utiliser pour l’audit SQL Server.
| Affichages catalogue | Descriptif |
|---|---|
| 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 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_file_audits | Contient des informations étendues sur le type d’audit de fichier dans un audit SQL Server sur une instance de serveur. |
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 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 nécessitent l’autorisation ALTER ANY DATABASE AUDIT ou 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 des autorisations ALTER ANY SERVER AUDIT ou CONTROL SERVER.
Sauf indication contraire, l’affichage des affichages catalogue nécessite qu’un principal ait l’une des options suivantes :
Appartenance au rôle de serveur fixe sysadmin.
Autorisation CONTROL SERVER.
Autorisation VIEW SERVER STATE.
Autorisation d'ALTER ANY AUDIT.
L'autorisation VIEW AUDIT STATE (donne uniquement à l'entité principale l'accès à la vue de catalogue sys.server_audits).
Un principal doit disposer de l’autorisation VIEW SERVER STATE ou ALTER ANY AUDIT pour utiliser les vues de gestion dynamique.
Pour plus d’informations sur l’octroi de droits et d’autorisations, consultez GRANT (Transact-SQL).
Avertissement
Les principaux du rôle sysadmin peuvent falsifier n’importe quel composant d’audit et ceux 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, il n’effectue 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 uniquement aussi fiables que les utilisateurs ayant le rôle de sysadmin ou de propriétaire de base de données.
Tâches associées
Créer un audit du serveur et une spécification d’audit du serveur
Créer une spécification d’audit de serveur et 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é
Rubriques étroitement liées à l’audit
Propriétés du serveur (page 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.
Option de configuration du serveur en mode 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é (SQL Server Profiler)
Explique les événements d’audit que vous pouvez utiliser dans SQL Server Profiler. Pour en savoir plus, voir SQL Server Profiler.
Trace SQL
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 des déclencheurs DDL (Data Definition Language) pour suivre les modifications apportées à vos bases de données.
Microsoft TechNet : SQL Server TechCenter : Sécurité et protection SQL Server 2005
Fournit up-to-date d’informations sur la sécurité DE SQL Server.
Voir aussi
Groupes d’actions et actions d’audit SQL Server
Enregistrements SQL Server Audit