En lisant @ réponse de PerformanceDBA à Historical/auditable database a fait cette déclaration:Quelles permissions accordent aux utilisateurs des bases de données «réelles»?
Dans une véritable base de données (SQL standard ISO/IEC/ANSI), nous ne GRANT INSERT/UPDATE/DELETE autorisation aux utilisateurs. Nous accordons SELECT et REFERENCES seulement (aux utilisateurs choisis) Tous les INSERT/UPDATE/DELETE sont codés dans les transactions, ce qui signifie process enregistré. Ensuite, nous accordons EXEC sur chaque proc stocké aux utilisateurs sélectionnés (utilisez ROLES pour réduire l'administration).
Est-ce vrai? Comment cela jive avec les outils ORM qui génèrent dynamiquement INSERT/UPDATEs?
MISE À JOUR
OK, donc voici un exemple. J'ai une application web avec deux interfaces, un Admin et un Utilisateur. Le côté administrateur utilise lourd ORM capable de générer dynamiquement des centaines sinon des milliers de commandes SQL distinctes.
L'interaction de l'utilisateur est beaucoup plus simple, et j'ai une douzaine de SP qui traitent les UPDATE/INSERT pour quelques boutons de vote. Évidemment, les utilisateurs sous lesquels les applications s'exécutent ont des ensembles d'autorisations très différents. Du côté administrateur, l'utilisateur DB de l'ORM a un accès CRUD complet pour relier les tables, il n'y a aucun SP utilisé pour cette application - et je ne penserais pas à toucher les données sans passer par la logique métier dans le modèle de domaine . Même les importations de données en masse sont traitées via l'ORM. Les PS du côté des utilisateurs Je considère une petite concession à ce principe simplement parce que c'est un cas si spécial.
Maintenant, je trouve quelque peu dérangeant l'énoncé ci-dessus dans la question originale, car je considère que c'est quelque chose d'une base de données «réelle», ou du moins proche de celle-ci.
Craignez-vous que PerformanceDBA pourrait rire face à la conception de votre base de données et de l'application? Rien de mal avec ce que vous décrivez ici. –
Eh bien, j'essaie de toujours *** être inquiet qu'un dessin que j'utilise ne soit pas une bonne pratique comme un état d'esprit général. – Paul
Et à juste titre, mais les meilleures pratiques et le point de vue de quelqu'un de ce qui est « vrai » (quoi que cela signifie dans la citation) dépendent plus d'une chose et vous devez prendre une vue de l'application, pas seulement la base de données trouver les meilleures pratiques pour votre application. Si votre application utilise un ORM, SP uniquement via ORM ne vous permettra pas d'appliquer les meilleures pratiques dans votre ORM (chargement paresseux, etc.). –