Create a db_executor database role
Wednesday 21 January 2015
Επειδή το security στη database είναι αρκετά σημαντικό και πραγματικά δεν ξέρω γιατί οι περισσότεροι δεν δίνουν την πρέπουσα σημασία σε αυτό το σύντομο post θα σας δώσω ένα tip του οποίου η εφαρμογή ξεπερνάει το 99% των περιπτώσεων.
Οι περισσότεροι χρήστες που μπαίνουν σε μια database δεν χρειάζονται τίποτα περισσότερο από read / write δικαιώματα. Αυτά τα δικαιώματα είναι εύκολο να αποδοθούν εντάσσοντας τους χρήστες στους ήδη προκαθορισμένους ρόλους που κάθε database έχει και δεν είναι άλλοι από τους db_datareader και db_datawriter.
Σε μια βάση υπάρχουν αρκετές stored procedures και functions που χρειάζεται να εκτελούν οι χρήστες είτε άμεσα είτε μέσα από τις εφαρμογές. Αυτό σημαίνει ότι πρέπει οι χρήστες να έχουν το δικαίωμα EXECUTE για να μπορούν να τις εκτελέσουν.
Επειδή δεν υπάρχει κάποιος έτοιμος database role για να δίνει το EXECUTE permission και επειδή θα πρέπει να το κάνεις για κάθε χρήστη και για κάθε SP ή UDF οι περισσότεροι βαριούνται (ναι αυτό συμβαίνει) και βάζουν όλους τους χρήστες στον db_owner role.
ΛΑΘΟΣ, ΜΕΓΑ ΛΑΘΟΣ!!!
Το γεγονός ότι δεν υπάρχει ο ρόλος αυτός δεν σημαίνει ότι δεν μπορούμε να τον φτιάξουμε και μάλιστα δεν παίρνει πάνω από 1 λεπτό για να γίνει κάτι τέτοιο.
Στο script που ακολουθεί δημιουργούμε το ρόλο και σε αυτόν τον ρόλο του δίνουμε το δικαίωμα EXECUTE. Αυτό ήταν από εκεί και πέρα όταν βάζουμε ένα χρήστη στην database απλά τον βάζουμε και στο ρόλο αυτό.
Είναι τόσο απλό….
USE [northwind] -- change to your database
GO
CREATE ROLE [db_executor]
GO
GRANT EXECUTE TO db_executor
GO
/*antonch*/