SQL Server: Modification du & # 8220; Nom de l'application & # 8221; propriété à des fins d'audit

StackOverflow https://stackoverflow.com/questions/323494

Question

Comme nous n'implémentons pas les utilisateurs de nos applications en tant qu'utilisateurs sur un serveur SQL, lorsque ce dernier se connecte à une base de données, chaque application utilise toujours les mêmes informations d'identification pour se connecter à chaque base de données.

Ceci pose un problème d’audit. À l'aide de déclencheurs, nous souhaitons stocker chaque mise à jour, insérer, supprimer et attribuer chacune à un utilisateur particulier. Une solution possible consiste à ajouter un " mis à jour par l'utilisateur " colonne à chaque table et mettre à jour à chaque fois. Cela signifie une nouvelle colonne sur chaque table et un nouveau paramètre sur chaque procédure stockée. Cela signifie également que vous ne pouvez effectuer que des suppressions douces.

Au lieu de cela, je propose d'utiliser la propriété Application Name de la chaîne de connexion et de la lire avec la propriété App_Name () à l'intérieur du déclencheur. J'ai testé cela avec une application simple et cela semble fonctionner (le format pourrait en être ainsi: App = MyApp | User = 100).

La question pour vous les gars est, est-ce une mauvaise idée et en avez-vous une meilleure?

Était-ce utile?

La solution

J'utilise SET CONTEXT_INFO pour cela. C'est exactement ce dont vous avez besoin.

Autres conseils

Cela semble certainement une solution envisageable, bien que vous deviez injecter le nom d'utilisateur dans la chaîne de connexion à chaque chargement de votre application. Notez que cette solution ne fonctionnerait probablement pas avec une application Web, car votre chaîne de connexion sera différente à chaque fois, ce qui pourrait entraîner de gros problèmes de regroupement de connexions.

Une autre option consiste à récupérer le nom d’hôte / adresse IP (SELECT nom_hôte ()) et à le stocker.

Vous n'avez pas nécessairement besoin d'un nouveau paramètre sur chaque procédure stockée, car vous pouvez modifier chaque procédure stockée (ou le déclencheur) pour insérer automatiquement le nom_app / nom d'hôte.

Un inconvénient potentiel est que toutes les modifications effectuées via Management Studio ne porteront pas le nom_app_application personnalisé et vous laisseront l'option " Microsoft Management Studio " en tant qu'utilisateur.

Nous utilisons la propriété Nom de l’application pour contrôler les déclencheurs d’audit. Nous n’avons constaté aucun problème lorsqu’elle l’utilisait. Nous n’avons remarqué aucun problème de rapidité (bien que, dans notre cas, nous n’auditions spécifiquement pas pour certaines applications, il est donc difficile de mesure combien de temps il faut pour ne pas faire quelque chose:))

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top