Νομίζω ότι υπάρχει ένα στοιχείο υπερβολής εδώ, πέρα από το γεγονός ότι η ίδια η ερώτηση είναι λάθος. Το θέμα δεν έχει να κάνει τίποτε με authentication (πως κάνει κάποιος login) αλλά με λίγο με authorization (τί δικαιώματα έχει) και περισσότερο με auditing, encryption και το πως δουλεύει η εταιρεία. Και το σίγουρο είναι ότι ο SQL Server χρησιμοποιείται με ασφάλεια σε εταιρικά περιβάλλοντα χωρίς λύσεις του στυλ "φτιάξε ξεχωριστό μηχάνημα".
Καταρχήν, μπορείς άνετα να ΜΗΝ δώσεις πρόσβαση στη βάση στους local ή domain admins. Μάλιστα είναι πολύ ευκολότερο να διαχειριστείς τους διάφορους ρόλους όταν χρησιμοποιείς Windows accounts και groups, παρά όταν βασίζεσαι στο SQL Authentication.
Αυτό που ΔΕΝ μπορείς να κάνεις, είναι να μην έχεις καν DBA ή να αρχίσεις να μιλάς για περιορισμούς στους DBA που αν το σκεφτείς θα κάνουν αδύνατη τη χρήση της βάσης. Κάποιος στο τέλος θα πρέπει να μπορεί να δώσει τα κατάλληλα δικαιώματα στους άλλους. Δεν είναι υποχρεωτικό αυτό το account να λέγεται sa (ο οποίος είναι by default απενεργοποιημένος).
Μπορείς να δώσεις διαφορετικούς ρόλους σε διαφορετικά άτομα. Δεν σημαίνει ότι επειδή κάποιος είναι DBA πρέπει να έχει ντε και καλά δικαιώματα server adminstrator - αν δουλειά του είναι να κάνει backup, του αρκούν τα κατάλληλα permissions. Ούτε σημαίνει ότι επειδή κάποιος έχει αυξημένα δικαιώματα στο server τα έχει και στη βάση. Άλλα τα δικαιώματα του server, άλλα της κάθε βάσης. Αρκεί να καθορίσεις σωστά τα δικαιώματα και τους ρόλους για να πετύχεις αυτό που θέλεις. Τα
permissions που μπορείς να ορίσεις φτάνουν σε πολύ μεγάλη λεπτομέρεια
Αυτό απαιτεί αρκετή οργάνωση από πλευράς εταιρείας. Κάποιος θα πρέπει να έχει το ρόλο του security administrator για να να μπορεί να δίνει στους DBAs τα κατάλληλα δικαιώματα στην κάθε βάση, χωρίς ο ίδιος να έχει δικαιώματα πέρα από το security. Οι ενέργειες αυτές θα πρέπει να γίνονται
audit για να είναι βέβαιο ότι ο security admin δεν έδωσε τίποτε περίεργα δικαιώματα. Και φυσικά, κάποιος θα πρέπει να ελέγχει τα audits για να δει αν έγινε τίποτε περίεργο.
Αν η εταιρεία θέλει ντε και καλά να προστατέψει τα δεδομένα από όλους, μπορεί να προχωρήσει ένα βήμα παραπέρα και να ενεργοποιήσει
encryption. Στην Enterprise έκδοση το encryption είναι γίνεται
αυτόματα σε επίπεδο IO ενώ για τις μικρότερες εκδόσεις θα πρέπει η κάθε εφαρμογή να χρησιμοποιήσει τις κατάλληλες εντολές.. Βέβαια αυτό είναι ακριβό λόγω licensing και απαιτεί επιπλέον διαχείριση γιατί απαιτούνται certificates και η αντίστοιχη διαχείριση. Αν πραγματικά όμως σε ενδιαφέρει να μην μπορεί να διαβάσει κανείς τα δεδομένα, ακόμα και αν πάρει το σκληρό και φύγει, είναι μονόδρομος.
Γενικά η ασφάλεια μίας βάσης σε εταιρικό περιβάλλον δεν είναι θέμα το οποίο μπορεί να απαντηθεί ή να περιγραφεί σε 1-2 προτάσεις, ούτε μπορεί κάποιος να σου πει "αυτό θα κάνεις" σαν τυφλοσούρτη. Τα Books Online του SQL Server περιλαμβάνουν αρκετά κεφάλαια που καλύπτουν την
ασφάλεια από το επίπεδο του λειτουργικού, του δικτύου, μέχρι το επίπεδο μεμονομένων permissions.
Από εκεί και πέρα πρέπει να δεις τί πραγματικά θέλει η εταιρεία σου, τί θέλει να πληρώσει (σε licensing και διαχειριστικά κόστη) και πόσο τελικά αξίζει το απόρρητο που απαιτεί. Ίσως τελικά να αρκεί το auditing, σε συνδυασμό με κάποια εργαλεία όπως το
SQL Secure της Idera για αυτοματοποίηση των ελέγχων.
Θα άξιζε επίσης να σκεφτείτε τη λύση του SQL Azure. Τα data centers της Microsoft έχουν
πιστοποιήσεις που απαιτούν auditing και confidentiality σε πολύ υψηλότερο επίπεδο απ' ότι μπορεί να εγγυηθεί ακόμα και τράπεζα (κάποιες τράπεζες ακόμα ΔΕΝ έχουν πάρει πιστοποίηση FISMA), ενώ φυσικά το κόστος είναι πολύ μικρότερο από το να υλοποιήσεις εσύ όλη αυτή την υποδομή και διαδικασίες.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos