Autorisation SQL Server / Question de security

Nous avons construit un cadre C # que toutes les modifications de données à notre database devraient passer. Nous ne voulons pas que quiconque modifie datatables directement dans la database. Tous les changements doivent passer par notre cadre.

Ma question est de savoir comment faire appliquer cela? Comment pouvons-nous faire en sorte que SQL Server autorise uniquement les instructions Insérer / Mettre à jour / Supprimer qui sont en cours de réalisation à partir de notre infrastructure, et non pas des centaines de personnes potentiellement connectées via SSMS ou un autre outil?

Je n'ai pas beaucoup d'expérience avec la security / l'authentification SQL Server, donc j'ai besoin de conseils sur ce sujet.

Merci beaucoup.

Créez une connection SQL pour votre application et accordez-lui des permissions pour les procédures stockées ou les tables de base, quels que soient vos besoins.

N'accordez pas l'access à quelqu'un d'autre.

Mais vous parlez d'un «cadre» qui signifie que de nombreuses applications et noms d'users vont l'utiliser … alors peut-être que vous avez besoin d'une autre approche.

Votre infrastructure doit accéder à SQL sous ses propres informations d'identification, qu'il s'agisse d'une connection SQL ou d'un count de domaine sous lequel l'infrastructure s'exécute. Accordez les permissions SQL appropriées à ce count.

Une façon serait d'utiliser des triggersurs et de vérifier soit app_name, host_name

if app_name() in('SQL Query Analyzer','Microsoft SQL Server Management Studio') raiserror (.....) return 

ou refuser l'access en écriture / mise à jour / suppression à tous les noms d'user, sauf celui que votre application utilise