J'ai une application à déployer en production qui utilise la sécurité du «système d'honneur». Autrement dit, tous les utilisateurs se connectent à la base de données à l'aide d'un identifiant utilisateur SQL / passwd et l'application gère elle-même les autorisations. Cette dernière partie ne me dérange pas autant que le fait que l'objet de connexion contient des informations d'identification intégrées et puisse être copié librement. J'essaie de trouver un moyen de limiter les connexions à un ensemble de clients plus limité. Je peux bien sûr créer des règles de pare-feu à limiter par IP. Existe-t-il un moyen de «préqualifier» les connexions SQL soit par compte Machine, soit par appartenance à un domaine?
sql-server
sql-server-2012
security
Jeff Sacksteder
la source
la source
Réponses:
Vous pouvez y parvenir via un déclencheur d'ouverture de session . Dans votre déclencheur de connexion, vous pouvez avoir la logique pour effectuer les vérifications nécessaires que vous recherchez (comme le nom de la machine). Malheureusement, je ne pense pas qu'il existe un moyen d'obtenir l'appartenance au domaine de l'utilisateur si vous utilisez l'authentification SQL Server.
Vous pouvez regarder à l'aide de la fonction EVENTDATA pour voir si vous pouvez extraire d'autres informations pour déterminer si la connexion doit être autorisée ou non. Si vous ne voulez pas que cette connexion particulière réussisse, vous pouvez simplement tester conditionnellement et émettre a
ROLLBACK
.la source
Comme Thomas l'a mentionné, cela peut être fait à l'aide de LOGON Trigger. Voici le script qui vous aidera
la source
Host_Name()
n'est pas sécurisé et peut être facilement usurpé par n'importe qui. C'est particulièrement facile à faire à partir d'Excel. Votre@IPAddress
serait beaucoup plus fiable à cet effet.