À l’ère de l’information d’aujourd’hui, les données sont collectées à grande échelle. Avec la facilité d’accès à ces données, il est devenu crucial de mettre en place des exigences d’audit normalisées pour suivre et enquêter sur toute activité suspecte. Microsoft a introduit la fonctionnalité d’audit dans SQL Server à partir de la version 2008 pour répondre à ce besoin.
Audit dans SQL Server avant 2008
Avant SQL Server 2008, l’audit devait être effectué en utilisant une combinaison de fonctionnalités telles que l’audit de connexion, l’audit C2, les déclencheurs et les notifications d’événements, et la trace SQL en conjonction avec le profileur SQL. Cependant, cette approche était fastidieuse et nécessitait une configuration importante. Les données accumulées par ces méthodes étaient enregistrées de différentes manières dans divers emplacements, ce qui rendait difficile leur assimilation. De plus, certaines de ces actions pouvaient avoir des impacts potentiels sur les performances.
Audit dans SQL Server à partir de 2008
L’audit de SQL Server est une nouvelle fonctionnalité qui utilise des événements étendus pour vous permettre d’auditer tout ce qui se passe sur votre serveur. Cela inclut les modifications des paramètres du serveur, ainsi que les modifications apportées à des tables spécifiques dans la base de données. Les informations d’audit sont ensuite écrites dans le journal de sécurité Windows, le journal d’application Windows ou dans un fichier plat.
Dans SQL Server 2008, l’audit était une fonctionnalité réservée aux entreprises. Cependant, dans SQL Server 2012, l’audit du serveur est disponible pour toutes les éditions, tandis que l’audit de la base de données reste réservé aux clients de l’entreprise.
Événements étendus
Les événements étendus sont une architecture hautement configurable utilisée pour gérer les événements se produisant dans SQL Server. Ils ont un impact minimal sur les performances car ils sont intégrés au code de SQL Server. Les événements étendus utilisent des packages pour regrouper des objets. L’un de ces packages est le package SecAudit, utilisé par SQL Audit. Malheureusement, les événements de ce package ne sont pas accessibles de manière externe.
Composants de l’audit
La fonctionnalité d’audit de SQL Server comprend trois composants principaux :
- L’audit du serveur
- La spécification d’audit du serveur
- La spécification d’audit de la base de données
L’audit du serveur
L’audit du serveur est le composant parent d’un audit SQL Server et peut contenir à la fois des spécifications d’audit du serveur et/ou des spécifications d’audit de la base de données. Il réside dans la base de données master et est utilisé pour définir l’endroit où les informations d’audit seront stockées, la politique de rotation des fichiers, le délai de la file d’attente et la manière dont SQL Server doit réagir en cas d’impossibilité d’audit.
Dans la configuration de l’audit, vous pouvez spécifier le nom de l’audit du serveur, le délai de la file d’attente (qui détermine si l’audit est traité de manière synchrone ou asynchrone) et l’action à prendre en cas d’impossibilité de continuer l’enregistrement de l’audit.
La spécification d’audit du serveur
La spécification d’audit du serveur est utilisée pour définir ce qui doit être audité au niveau du serveur. Elle se trouve sous le nœud de sécurité dans SQL Server et peut être créée avec SQL Server Management Studio ou en utilisant Transact SQL. La spécification d’audit du serveur est désactivée par défaut et doit être activée individuellement.
La spécification d’audit de la base de données
La spécification d’audit de la base de données audite les événements au niveau de la base de données. Malheureusement, elle n’est disponible que dans l’édition Enterprise de SQL Server. La spécification d’audit de la base de données permet l’audit au niveau de l’objet ou de l’utilisateur, mais pas au niveau de la colonne. Elle peut être créée sous le nœud de sécurité de la base de données concernée.
Événements d’audit définis par l’utilisateur
Une des nouvelles fonctionnalités de SQL Server 2012 est la possibilité de créer des événements d’audit définis par l’utilisateur. Ces événements peuvent être utilisés pour intégrer des applications tierces avec l’audit de SQL Server. Les événements d’audit définis par l’utilisateur sont créés à l’aide de la procédure sp_audit_write, qui accepte des paramètres tels que l’ID de l’événement défini par l’utilisateur, le statut de réussite et des informations supplémentaires.
Lecture des données du fichier d’audit
Lorsque les informations d’audit sont écrites dans une cible de fichier, elles le sont au format binaire. La fonction de table-valued fn_get_audit_file() est utilisée pour lire ces données. Elle accepte des paramètres tels que le motif du fichier, le nom de fichier initial et le décalage de l’enregistrement d’audit.
Sécurisation des journaux d’audit
Les journaux d’audit eux-mêmes doivent être protégés contre tout accès et modification non autorisés. Une façon d’augmenter la sécurité est d’écrire les journaux d’audit dans un partage de fichiers sur un serveur différent auquel l’administrateur système n’a pas la permission d’accéder. Une autre option consiste à écrire dans le journal de sécurité Windows, ce qui nécessite d’ajouter le compte de service SQL Server à la stratégie de génération d’audits de sécurité et de modifier la stratégie d’accès aux objets d’audit.
Meilleures pratiques
Voici quelques meilleures pratiques à prendre en compte lors de la mise en œuvre de l’audit de SQL Server :
- Écrire les journaux d’audit dans un emplacement centralisé pour faciliter le traitement
- Charger les journaux dans une base de données pour une meilleure gestion
- Utiliser un fichier comme cible pour des performances optimales
- Utiliser un audit ciblé pour minimiser les données collectées et améliorer les performances
- S’assurer que la politique de rotation des journaux Windows est alignée sur votre stratégie d’audit
Conclusion
L’audit de SQL Server est une fonctionnalité puissante qui doit être utilisée avec une planification et une réflexion attentives. Il est essentiel de bien comprendre ce qui doit être audité, qui a besoin d’accéder aux informations et comment y accéder. La réussite de l’audit dépend également du stockage, du traitement et de la surveillance appropriés des données d’audit. En suivant les meilleures pratiques et en tenant compte des exigences spécifiques de votre organisation, l’audit de SQL Server peut être un outil efficace pour maintenir la sécurité des données et la conformité.