Το TLS, η πρόσβαση δικτύου και τα δικαιώματα SQL απαντούν σε διαφορετικά ερωτήματα
Η κρυπτογράφηση μιας σύνδεσης, η αποδοχή μιας πηγής και η παραχώρηση ενός πίνακα είναι τρεις αποφάσεις. Περάστε τις με σειρά πριν ρωτήσετε αν το TLS μπορεί να αντικαταστήσει ένα VPN.
Κάποιος προτείνει να δοθεί σε έναν πελάτη σύνδεση PostgreSQL ώστε μια αίτηση εξόδων να ταξιδεύει κρυπτογραφημένη από άκρη σε άκρη. Ο διαχειριστής βάσης δεδομένων χρειάζεται μια πραγματική συνεδρία SQL, και κάποιος άλλος προτείνει αντ’ αυτού μια φόρμα ιστού. Και οι δύο προτάσεις λύνουν το λάθος πρόβλημα, γιατί καμία δεν ξεκίνησε από τη λειτουργία που εκτελεί πραγματικά ο πελάτης. Περάστε τις τρεις αποφάσεις με σειρά και το ερώτημα αν το TLS μπορεί να αντικαταστήσει ένα VPN απαντά μόνο του.
Ξεκινήστε από τη λειτουργία που χρειάζεται ο πελάτης
Γράψτε τι πρέπει να επιτύχει ο πελάτης. Η υποβολή μιας αίτησης, η ανάγνωση μιας γραμμής αναφοράς και η εκτέλεση ενός στιγμιαίου ερωτήματος είναι τρεις διαφορετικές λειτουργίες με τρία διαφορετικά προφίλ κινδύνου.
Στη συνέχεια γράψτε ποιος κάνει το αίτημα. Ένας πελάτης, ένας πράκτορας υποστήριξης και ένας διαχειριστής δεν είναι εναλλάξιμοι ακόμη και όταν αγγίζουν τον ίδιο πίνακα. Η διαφορά καθορίζει πόση από τη γλώσσα ερωτημάτων πρέπει να βλέπει ποτέ ο πελάτης.
Το ζεύγος απαντήσεων καθορίζει τη διεπαφή. Όλα μετά από αυτό είναι υλοποίηση, και οι περισσότερες συζητήσεις για την κρυπτογράφηση είναι στην πραγματικότητα συζητήσεις για το ποια διεπαφή επιλέχθηκε.
Τρεις έλεγχοι, τρεις αποφάσεις
Το πιστοποιημένο TLS προστατεύει τη σύνδεση και καθορίζει ποιες ταυτότητες TLS γίνονται δεκτές. Η πρόσβαση δικτύου καθορίζει ποιες πηγές μπορούν να φτάσουν στον ακροατή. Η εξουσιοδότηση βάσης δεδομένων καθορίζει ποια αντικείμενα και ενέργειες μπορεί να χρησιμοποιήσει ένας ρόλος.
Κανένας από τους τρεις δεν υποκαθιστά τους άλλους, κάτι που ο πίνακας το δηλώνει ρητά.
| Control | What it decides | What it leaves open |
|---|---|---|
| Authenticated TLS | Connection protection and which TLS identities are accepted | Which tables a database user may touch |
| Restricted network entry | Which sources reach the listener | Whether an authenticated user should run a given statement |
| Database authorization | Which objects and actions a role may use | Whether the connection arrived by an approved path |
Διαβάστε τη γραμμή στην οποία βασίζεστε πριν αφαιρέσετε μια άλλη. Τα περισσότερα από αυτά τα σχέδια αποτυγχάνουν επειδή ένας έλεγχος θεωρήθηκε δεδομένος αντί να ρυθμιστεί.
Το άμεσο SQL αφήνει την πολιτική της βάσης δεδομένων υπεύθυνη
Με εγκεκριμένη άμεση σύνδεση, διατηρήστε και την επαλήθευση ταυτότητας υπηρεσίας και την προβλεπόμενη πολιτική πρόσβασης. Η ενεργοποίηση του TLS κάνει τις κρυπτογραφημένες συνδέσεις διαθέσιμες· δεν απορρίπτει τις μη κρυπτογραφημένες εκτός αν η διαμόρφωση πρόσβασης το απαιτεί μέσω καταχωρήσεων hostssl.
Αυτή η διάκριση αξίζει έλεγχο στη λειτουργική διαμόρφωση και όχι σε ένα πρότυπο. Ένας διακομιστής που προσφέρει TLS και δέχεται απλό κείμενο δεν είναι το σχέδιο που οι περισσότεροι νομίζουν ότι ανέπτυξαν. Διαβάστε τους κανόνες πρόσβασης και δείτε ποιες καταχωρήσεις το απαιτούν πραγματικά. Αυτός ο ένας έλεγχος χωρίζει έναν διακομιστή ικανό για κρυπτογράφηση από έναν μόνο κρυπτογραφημένο.
Χρησιμοποιήστε ρόλους μόνο με τα προνόμια που χρειάζεται η εργασία, και ελέγξτε την κυριότητα, την κληρονομημένη ιδιότητα μέλους και τις ευρέως χορηγημένες άδειες. Το μοντέλο προνομίων του PostgreSQL είναι το όριο εξουσίας για τα αντικείμενα της βάσης δεδομένων.
Ένα VPN μπορεί να περιορίσει ποιες συσκευές φτάνουν στην υπηρεσία πριν συμβεί η ταυτοποίηση στη βάση δεδομένων, και μια πύλη πρόσβασης μπορεί να κάνει κάτι παρόμοιο. Κανένα από τα δύο δεν αφαιρεί την ανάγκη συντήρησης του εκτεθειμένου στοιχείου, διαχείρισης διαπιστευτηρίων και περιορισμού της χρήσης πόρων.
Τα πιστοποιητικά πελάτη είναι διαπιστευτήριο, όχι ACL
Ένα πιστοποιητικό πελάτη μπορεί να προσθέσει μια απαίτηση κατά τη σύνδεση. Η ρύθμιση clientcert μπορεί να απαιτεί έμπιστο πιστοποιητικό και, στην αυστηρότερη λειτουργία, σχέση μεταξύ του ονόματος του πιστοποιητικού και του χρήστη της βάσης δεδομένων.
Αυτό είναι ένα ισχυρότερο διαπιστευτήριο. Δεν είναι λίστα εξουσιοδότησης, και δεν κάνει τον διακομιστή αόρατο, γιατί το στοιχείο που δέχεται τη σύνδεση εξακολουθεί να επεξεργάζεται δικτυακή κίνηση και μια χειραψία. Η αντιμετώπιση ενός πιστοποιητικού ως λίστα πρόσβασης αφήνει τις πραγματικές άδειες ανέγγιχτες. Επίσης τείνει να διευρύνει τη διανομή πιστοποιητικών, κάτι που δημιουργεί το επόμενο πρόβλημα.
Ένα ισχυρό πιστοποιητικό συνδεδεμένο με έναν ρόλο υπερβολικών προνομίων παράγει έναν καλά ταυτοποιημένο διαχειριστή. Ελέγξτε τον ρόλο πριν γιορτάσετε το πιστοποιητικό.
Επιλέξτε τη στενότερη διεπαφή όταν ταιριάζει
Για μια αίτηση εξόδων, ένα τελικό σημείο εφαρμογής που δέχεται την αίτηση, επιβάλλει τους επιχειρηματικούς κανόνες και επιστρέφει το επιτρεπόμενο αποτέλεσμα εκείνου του χρήστη αντιπροσωπεύει τη λειτουργία καλύτερα από έναν γενικό λογαριασμό SQL.
Η εφαρμογή χρησιμοποιεί τότε τη δική της περιορισμένη ταυτότητα στη βάση δεδομένων, και ο πελάτης δεν λαμβάνει ποτέ γλώσσα ερωτημάτων ως χαρακτηριστικό. Αυτή είναι μια μικρότερη επιφάνεια με λιγότερους τρόπους να κάνεις λάθος.
Αυτή είναι μια επιλογή σχεδίασης και όχι ισχυρισμός ότι ο κώδικας εφαρμογής είναι αυτόματα ασφαλέστερος. Αυτός ο κώδικας πρέπει να ταυτοποιεί τους καλούντες του, να εξουσιοδοτεί κάθε ενέργεια και να επικυρώνει την είσοδό του, και οι δικές του άδειες στη βάση δεδομένων εξακολουθούν να μετράνε.
Το άμεσο SQL παραμένει σωστό για ανθρώπους και εργαλεία των οποίων η εγκεκριμένη εργασία το απαιτεί. Περιορίστε αυτό το σχέδιο με ρόλους, εύρος δικτύου και λειτουργικά όρια, και αφήστε τους άλλους πελάτες να κρατήσουν τη στενότερη διεπαφή. Η ανάμειξη των δύο πληθυσμών σε έναν ρόλο είναι εκεί όπου ξεκινούν οι συζητήσεις.