Ας κάνουμε μία αποτοξίνωση από τα BI post και ας πάμε να δούμε τι καλά έχουν έρθει στην ασφάλεια του SQL Server 2012.
Αν και ο SQL Server εδώ και πολλά χρόνια είναι ασφαλής σε σχέση με τον ανταγωνισμό εντούτοις δεν υπάρχει εφησυχασμός στο product group καθώς το θέμα ασφάλεια είναι μια ατέρμονη πάλη με τους κακούς.
Ας πάρουμε με την σειρά τα καλούδια που μας ήρθαν με τον SQL Server 2012 και αφορούν την ασφάλεια.
Νέα Permission
Δεκαεννέα (19) νέα permission εμφανίστηκαν στον SQL Server 2012. Αυτά είναι
Class | Permission |
AVAILABILITY GROUP | ALTER |
AVAILABILITY GROUP | CONTROL |
AVAILABILITY GROUP | TAKE OWNERSHIP |
AVAILABILITY GROUP | VIEW DEFINITION |
SCHEMA | CREATE SEQUENCE |
SEARCH PROPERTY LIST | ALTER |
SEARCH PROPERTY LIST | CONTROL |
SEARCH PROPERTY LIST | REFERENCES |
SEARCH PROPERTY LIST | TAKE OWNERSHIP |
SEARCH PROPERTY LIST | VIEW DEFINITION |
SERVER | ALTER ANY AVAILABILITY GROUP |
SERVER | ALTER ANY EVENT SESSION |
SERVER | ALTER ANY SERVER ROLE |
SERVER | CREATE AVAILABILITY GROUP |
SERVER | CREATE SERVER ROLE |
SERVER ROLE | ALTER |
SERVER ROLE | CONTROL |
SERVER ROLE | TAKE OWNERSHIP |
SERVER ROLE | VIEW DEFINITION |
Όπως είναι κατανοητό από την παραπάνω λίστα η εμφάνιση τους ήταν επιβεβλημένη καθώς νέα features εμφανίστηκαν στην έκδοση αυτή.
User-defined server roles
Μια απαίτηση χρόνων έλαβε σάρκα και οστά στην έκδοση αυτή, και δεν είναι άλλη από την δυνατότητα να μπορούμε να φτιάχνουμε δικούς μας server roles σε αντίθεση με το τι υπήρχε στις προηγούμενες εκδόσεις όπου υπήρχαν συγκεκριμένοι ρόλοι οι γνωστοί Fixed Server Roles.
Με αυτή την δυνατότητα μας λύνονται τα χέρια καθώς έτσι πλέον έχουμε την δυνατότητα να ραφινάρουμε με ακρίβεια το τι θέλουμε να κάνουν οι χρήστες με υψηλότερη προσβασιμότητα σε επίπεδο server. Για παράδειγμα μπορεί στον οργανισμό μας να θέλουμε να έχουμε sysadmins αλλά όλοι δεν μπορεί να είναι το ίδιο καθώς λόγο εμπειρίας κάποιοι πρέπει να έχουν χαμηλότερη πρόσβαση σε σχέση με άλλους. Έτσι πλέον μπορούμε να φτιάξουμε ένα ρόλο junior admin που να έχει τα δικαιώματα που θέλουμε.
Αυτό μπορεί να γίνει είτε μέσα από τον SSMS είτε με την χρήση της CREATE SERVER ROLE. Φυσικά και η διαχείριση των ρόλων αυτών μπορεί να γίνει πάλι είτε με τον SSMS είτε με τις ALTER SERVER ROLE και DROP SERVER ROLE.
Management Changes
Εκτός όμως από αυτό εμφανίστηκαν αλλαγές και στον τρόπο διαχείρισης όπως για παράδειγμα στην ALTER SERVER ROLE όπου έχω την δυνατότητα μέσω της WITH ADD/DROP MEMBER να προσθέσω μέλη.
Αυτό ισχύει και για την ALTER ROLE καθώς πλέον οι γνωστές sp_addrolemember και sp_droprolemember έχουν μπει σε κατάσταση απόσυρσης (deprecation).
Ακόμα αρκετές functions βελτιώθηκαν ή έκαναν την εμφάνιση τους όπως η IS_ROLEMEMBER με την οποία έχω την δυνατότητα στον κώδικα μου σε Τ-SQL να ελέγχω το εάν ένα db principle είναι μέλος σε συγκεκριμένο ρόλο ή όχι.
Default Schema σε Windows Groups
Όπως είναι γνωστό όπως βάζω ένα windows user στον SQL Server μπορώ να βάλω και ένα windows group. Μέχρι τώρα δεν μπορούσα να ορίζω default schema σε groups, τώρα όμως μπορώ.
Με αυτό τον τρόπο δεν θα αντιμετωπίζω αυτό που μέχρι τώρα είχα. Τι είχα;
Όπως είναι γνωστό κάθε users όταν τον βάζω να έχει πρόσβαση στον SQL Server ανήκει σε κάποιο schema εάν δεν το κάνω τότε θεωρείται ότι ανήκει στο default schema που δεν είναι άλλο το dbo. Εάν ο user αυτός έχει την δυνατότητα να φτιάξει ένα object π.χ. table τότε αυτό θα ανήκει στο schema που έχει ο user. Πχ dbo.Orders ή sales.Orders.
Αν όμως ο user αποκτούσε πρόσβαση στον SQL Server επειδή άνηκε σε κάποιο Windows Group και επειδή μέχρι τώρα δεν είχα την δυνατότητα να ορίσω default schema σε αυτά αλλά ούτε και στο user τότε αν είχα δώσει την δυνατότητα να δημιουργίας object ποιο θα ήταν το schema που θα άνηκε αυτό; Δυστυχώς δεν θα ήταν το dbo ή κάποιο συγκεκριμένο αλλά το όνομα του κάθε χρήστη. Εφιάλτης για τον DBA καθώς έτσι θα είχε να διαχειριστεί τόσα schemas όσα και οι users που υπάρχουν στο Windows Group.
Αυτό τώρα πλέον με την δυνατότητα να μπορώ να ορίζω το schema σε επίπεδο Windows Group εξαφανίζεται.
Contained Databases
Μέχρι τώρα όταν χρειάζονταν να μεταφερθεί μια βάση από έναν server σε έναν άλλο ή είχα υλοποιήσει database mirroring, replication γενικότερα κάποιο failover σενάριο θα έπρεπε να διασφαλίσω ότι οι χρήστες που είχαν την δυνατότητα να προσπελάσουν την συγκεκριμένη βάση στη αρχική θέση της θα μπορούν να το κάνουν και στην νέα θέση της. Αυτό για τον DBA ήταν ένας πονοκέφαλος καθώς θα έπρεπε να κρατάει in-sync τους users σε κάθε εμπλεκόμενο SQL Server. Απαραίτητο καθώς για να μπορέσει κάποιος user να φτάσει να "μιλήσει" στην βάση θα πρέπει πρώτα να γίνει authenticate από το database engine του SQL Server.
Πλέον με τις Contained Databases ο user μπορεί να έχει πρόσβαση σε αυτές χωρίς να χρειάζεται να περάσει από το database engine. Ιδανικό σενάριο για databases που θέλω να είναι AlwaysOn το νέο feature για availability που έχει ο SQL Server 2012 και όχι μόνο.
Σε επόμενο post θα ασχοληθώ αναλυτικά με αυτές αν και έχω ήδη κάνει παρουσίαση για αυτές όπως και για άλλα νέα features του SQL Server 2012 όταν ήταν ακόμα σε CTP το 2010 την οποία μπορείτε να δείτε εδώ.
Άλλες Βελτιώσεις
Πλέον των παραπάνω βελτιώσεων έγιναν και σε σημεία που δεν είναι ευδιάκριτα άμεσα όπως
- Στη HASHBYTES που υποστηρίζει πλέον SHA 256 και 512.
- Ο RC4 αν και ακόμα υποστηρίζεται για συμβατότητα εντούτοις θα πρέπει να αλλάξει σε ένα AES καθώς έχει περιέλθει σε κατάσταση κατάργησης (deprecation).
- Αυξήθηκε το μέγεθος των private keys που γίνονται import από εξωτερικές πηγές από 3.456 σε 4.096 bits
- Το Service Master Key και το Database Master Key άλλαξε από Triple DES σε AES για αυτό και σε περιπτώσεις instance migration θα πρέπει αυτά να ξαναδημιουργηθούν.
- Στην CREATE CRERTIFICATE έχουμε τo FROM BINARY option το οποίο μας δίνει την δυνατότητα να ορίσουμε το binary description ενός ASN encoded certificate.
- Nέες functions CERTENCODED και CERTPRIVATEKEY που μπορούν να χρησιμοποιηθούν για την εξαγωγή του binary description από ένα υπάρχον certificate.
- Οι Builtin\Administrators και NT AUTHORITY\SYSTEM αν και δεν γίνονται αυτόματα sysadmins κατά την εγκατάσταση του SQL Server εντούτοις μπορούν να έχουν πρόσβαση όταν το service ξεκινάει με τον flag -m (single user mode)
- Υποστηρίζονται πλήρως τα Managed Service και Virtual Accounts όταν είμαστε σε Windows Server 2008 R2 και Windows 7
- Η υποστήριξη των per-service SID είναι πλέον σε όλα τα OS που μπορεί να εγκατασταθεί ο SQL Server 2012.
- Σημαντικές αλλαγές έχουν γίνει στο auditing αλλά επειδή το θέμα αυτό είναι μεγάλο και θα είναι αμαρτία να το θάψω σε αυτό το post θα γράψω ξεχωριστό για αυτό.
Μέχρι το επόμενο post να είστε όλοι καλά στην υγεία σας.
/*antonch*/