Nous développons une application web utilisant asp.net et sql server. Nous sommes tenus de faire une piste d'audit pour l'application. Si je comprends bien, une piste de vérification serait essentiellement pour tous les Inserts, les mises à jour et les suppressions sur la base de données, n'est-ce pas? Maintenant, la façon d'aborder cela est que j'ai une table de piste d'audit dans la base de données qui se remplit après que chaque insertion, mise à jour ou suppression est lancée (écrire manuellement le script dans la couche d'accès au client). Cependant, les modifications de DB directement lancées à partir de SQL Management Studio NE seront PAS enregistrées (pour des raisons évidentes: P).Audit Trail dans une application web utilisant le serveur sql
Pour répondre à ce que je pourrais créer un déclencheur et qui s'occupe de tout. J'ai également fait quelques recherches sur Google et découvert que SQL Server a la capacité de faire une piste de vérification. Cependant, le problème avec l'utilisation de déclencheurs est que je ne vais pas obtenir les informations de l'utilisateur qui s'est connecté sur le site Web. J'obtiendrai l'utilisateur de sql mais je ne donne pas deux huées à ce sujet, je suis préoccupé par l'utilisateur de site Web.
Une solution que j'ai trouvée était soit a) Avoir une piste de vérification de mon application Web et aussi avoir un déclencheur mis en place. Dans le rapport d'audit, je montre simplement un journal d'audit à partir d'une application Web et un journal d'audit à partir du serveur SQL. Problèmes évidents avec cette approche: sur la tête. Ecrire dans deux ensembles de tables différents sur CHAQUE CHANGEMENT DE DB.
b) J'ai une colonne appelée UserId ON CHAQUE TABLE DB. Ensuite, je crée un déclencheur pour capturer tous les changements de DB. Je passe cet userId sur chaque table que je change (insérer, mettre à jour, supprimer) et l'obtenir cet ID du déclencheur. Retraits évidents: colonne userid inutile dans chaque table
Je m'excuse pour le poste long. Fondamentalement, j'ai besoin d'un journal d'audit qui enregistre tous les changements de db (y compris direct hack à db) mais en même temps me donne les informations de connexion utilisateur pour les modifications de base de données qui ont été faites à partir de l'application web.
Appréciera toute contribution à cet égard.
Un grand merci
xeshu
Personnellement, je suis d'accord avec vous 100%. La principale préoccupation est essentiellement si quelqu'un va directement pirater la base de données et commencer à jouer avec les données, mais comme vous le dites, il peut très bien simplement supprimer les déclencheurs tous ensemble, donc il est inutile d'avoir des déclencheurs juste pour 0.00001% de chance ce qui peut très bien être supprimé si le hacker pirater. Bravo pour la réponse :) – xeshu
Audit de la base de données SQL se sent tellement plus sûr pour moi. Je sais d'où vous venez, mais Diebold a reçu une bonne dose de mauvaise presse pour l'audit de leur candidature et non via leur base de données: http://www.bbvforums.org/forums/messages/2197/2368.html – sarnold
dépend de votre application, un système de vote aurait besoin de contrôles beaucoup plus serrés que la plupart des applications. Cela peut sembler plus sûr, mais l'ajout de la journalisation au niveau de la base de données via les déclencheurs SQL n'offre pas en pratique une sécurité supplémentaire de la piste d'audit par rapport à l'audit au niveau de l'application. Toute personne ayant accès à la base de données et aux autorisations associées peut modifier les déclencheurs et insérer/mettre à jour/supprimer des enregistrements dans une table d'audit.Il est plus facile d'empêcher l'accès direct à la base de données et de créer votre sécurité et votre publicité dans l'application que de permettre un accès à certaines bases de données et de gérer des autorisations SQL au niveau fin. –