2010-01-25 6 views
2

Nous avons construit un framework C# que toutes les modifications de données à notre base de données devraient passer. Nous ne voulons pas que quiconque modifie les données directement dans la base de données. Tous les changements doivent passer par notre cadre.SQL Server Autorisation/Sécurité Question

Ma question est de savoir comment faire respecter 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 sécurité/authentification SQL Server, donc j'ai besoin de conseils sur ce sujet.

Merci beaucoup.

Répondre

2

Créer une SQL Connectez-vous à votre application et accordez-lui des autorisations pour les procédures stockées ou les tables de base, quels que soient vos besoins.

N'accordez l'accès à personne d'autre. Mais vous parlez d'un «framework», ce qui signifie que de nombreuses applications et noms d'utilisateurs vont l'utiliser ... alors peut-être que vous avez besoin d'une autre approche.

0

Une façon serait grâce à l'utilisation des déclencheurs et la vérification soit app_name, nom_hôte

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

ou refuser écriture/mise à jour/supprimer l'accès à tous les noms d'utilisateur, mais celui que votre application utilise

+0

Qu'en est-il de SQLCMD? –

1

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