Cassandra μέσω VPN: ξεχωριστή πρόσβαση για πελάτες και κόμβους
Ένα σύμπλεγμα Cassandra κρύβει τρεις κατηγορίες χρηστών. Αποφασίστε ξεχωριστά πώς φτάνουν σε αυτό οι πελάτες, οι ομότιμοι κόμβοι και οι χειριστές, και κρατήστε την ταυτότητα μέσα στη διαδρομή VPN.
Μια εγκατάσταση Cassandra δεν έχει ένα ενιαίο δίκτυο βάσης δεδομένων. Οι εφαρμογές μιλούν με την υπηρεσία πελατών, τα μέλη του συμπλέγματος μιλούν μεταξύ τους και οι χειριστές χρησιμοποιούν διαχειριστικές διεπαφές, και αυτές οι τρεις κατηγορίες δεν θα πρέπει να κληρονομούν η μία την προσβασιμότητα της άλλης. Μια ιδιωτική διαδρομή όπως ένα VPN είναι καλό σημείο εκκίνησης, αλλά δεν είναι η ταυτότητα χρήστη της βάσης δεδομένων και δεν είναι η πολιτική κρυπτογράφησής της. Αντιμετωπίστε την απόφαση συνδεσιμότητας και την απόφαση εξουσιοδότησης ως δύο ξεχωριστές αναθεωρήσεις.
Κάθε μία από τις τρεις κατηγορίες παίρνει τη δική της απάντηση, και οι ενότητες παρακάτω τις εξετάζουν με σειρά έκθεσης.
Τρεις κατηγορίες, τρεις αποφάσεις
Προσδιορίστε τι χρειάζεται πραγματικά κάθε ομάδα πριν αγγίξετε έναν κανόνα. Οι πελάτες χρειάζονται τον ακροατή πελατών και αρκετές πληροφορίες για να φτάσουν σε κάθε κόμβο που μπορεί να τους δοθεί, οι ομότιμοι κόμβοι χρειάζονται ο ένας τον άλλον στη θύρα μεταξύ κόμβων, και οι χειριστές χρειάζονται τη διεπαφή διαχείρισης για ό,τι ζητά πραγματικά το runbook. Τρεις λίστες, τρεις κατηγορίες, τρία επίπεδα εμπιστοσύνης.
Το συνηθισμένο λάθος είναι να χτιστεί ένα επίπεδο ιδιωτικό τμήμα και να υποτεθεί ότι το όριο του VPN κάνει τα υπόλοιπα. Μέσα σε αυτό, μια εφαρμογή που φτάνει στη θύρα πελατών συνήθως φτάνει και στη θύρα μεταξύ κόμβων, και τα διαχειριστικά εργαλεία ενός χειριστή συχνά βρίσκονται στον ίδιο ενδιάμεσο κεντρικό υπολογιστή με την εφαρμογή. Η ισοπέδωσή τους μαζί σημαίνει ότι μια παραβιασμένη ταυτότητα εφαρμογής έχει ήδη μεγαλύτερη εμβέλεια από τα δικά της ερωτήματα. Σχεδιάστε τις τρεις κατηγορίες ως τρεις γραμμές στο έγγραφο σχεδίασης, καθεμία με τον κανόνα που την επιτρέπει, και τα κενά γίνονται ορατά πριν τα χτίσει κανείς.
Τι χρειάζονται οι πελάτες, και τίποτε περισσότερο
Επιτρέψτε στις προοριζόμενες πηγές εφαρμογών πρόσβαση στα τελικά σημεία πελατών για την αναπτυγμένη έκδοση, και κρατήστε άσχετες υπηρεσίες συμπλέγματος και διαχείρισης έξω από αυτή την εμβέλεια. Στη συνέχεια ελέγξτε πώς ο οδηγός ανακαλύπτει κόμβους. Ένα προσβάσιμο αρχικό σημείο επαφής δεν αποδεικνύει ότι κάθε διεύθυνση κόμβου που θα επιλέξει μετά ο οδηγός είναι προσβάσιμη από αυτό το περιβάλλον πελάτη, επειδή ο οδηγός ζητά από το σύμπλεγμα ομότιμους και μετά συνδέεται σε όποιες διευθύνσεις διαφημίζει το σύμπλεγμα.
Γι' αυτό μία αναντιστοιχία ιδιωτικής διεύθυνσης παράγει το γνωστό μοτίβο: μια επιτυχημένη πρώτη σύνδεση που ακολουθείται από χρονικά όρια. Ρυθμίστε συνειδητά τις διαφημιζόμενες διευθύνσεις και τη δρομολόγηση πελατών· η δημοσίευση όλου του συμπλέγματος στο διαδίκτυο για να διορθώσετε μία αναντιστοιχία ανταλλάσσει ένα σφάλμα δρομολόγησης με μια έκθεση που δεν μπορείτε να πάρετε πίσω.
Κρατήστε επίσης τον έλεγχο ταυτότητας της βάσης δεδομένων της εφαρμογής και τα δικαιώματα ρόλων στη θέση τους. Μια κοινή μεταφρασμένη διεύθυνση VPN μπορεί να αντιπροσωπεύει πολλούς χρήστες ή υπηρεσίες, επομένως δεν υποκαθιστά ποτέ ξεχωριστές ταυτότητες βάσης δεδομένων.
Κρυπτογραφήστε ξεχωριστά πελάτη-προς-κόμβο και μεταξύ κόμβων
Η τεκμηρίωση ασφαλείας της Apache αντιμετωπίζει την κρυπτογράφηση πελάτη-προς-κόμβο και τη μεταξύ κόμβων ως ξεχωριστές ρυθμίσεις, και η ενεργοποίηση της μίας δεν ενεργοποιεί την άλλη. Αυτή η διάκριση ισχύει ακόμη και μέσα σε ένα VPN, επειδή η σήραγγα προστατεύει το δικό της τμήμα και δεν επεκτείνεται αυτόματα από τη διεργασία της εφαρμογής στη διεργασία της βάσης δεδομένων ούτε μεταξύ κάθε ζεύγους μελών του συμπλέγματος.
Μια ρύθμιση που ενεργοποιεί και τα δύο ρητά, αντί να κληρονομεί μια προεπιλογή προτύπου, μοιάζει περίπου έτσι:
client_encryption_options:
enabled: true
optional: false
server_encryption_options:
internode_encryption: allΣε ρυθμίσεις διακομιστή που επιτρέπουν προαιρετική κρυπτογράφηση πελάτη, η αποδοχή TLS μπορεί να συνυπάρχει με την αποδοχή μη κρυπτογραφημένων συνδέσεων, οπότε διαβάστε την πραγματική πολιτική και όχι την πρόθεση. Σχεδιάστε ονόματα πιστοποιητικών, διανομή εμπιστοσύνης και ανανέωση για τα τελικά σημεία με τα οποία επικοινωνεί πραγματικά κάθε πελάτης· η αντικατάσταση ενός ονόματος κεντρικού υπολογιστή με διεύθυνση IP αλλάζει τον έλεγχο ταυτότητας του πελάτη, όχι μόνο τη διαδρομή του.
Κρατήστε τη διαχείριση στη δική της διαδρομή
Η κίνηση μεταξύ κόμβων χρειάζεται το επιτρεπόμενο σύνολο ομότιμων και δική της πολιτική προστασίας. Η διαχειριστική πρόσβαση, συμπεριλαμβανομένου του JMX όπου χρησιμοποιείται, χρειάζεται ξεχωριστή κατηγορία και δικό της έλεγχο ταυτότητας. Μια εφαρμογή που επιτρέπεται να υποβάλλει συνήθη ερωτήματα δεν χρειάζεται γι' αυτό κάθε δυνατότητα διαχείρισης, και το αντίστροφο είναι χειρότερο: μια διαχειριστική διαδρομή εκτεθειμένη στο τμήμα εφαρμογών είναι η συντομότερη διαδρομή από ένα σφάλμα σε μια ανακατασκευή. Γράψτε αυτές τις δύο κατηγορίες χωριστά και ονομάστε τους ιδιοκτήτες τους, γιατί συνήθως είναι διαφορετικές ομάδες των οποίων οι κανόνες συγχωνεύτηκαν κατά λάθος.
Κρατήστε ευθυγραμμισμένους τους πραγματικούς κανόνες cloud, τους κανόνες κεντρικού υπολογιστή και τη ρύθμιση του ακροατή. Ένας ιδιωτικός ακροατής μπορεί ακόμη να εκτεθεί μέσω μιας ακούσιας μετάφρασης ή διαμεσολαβητή, και ένας ευρύς δημόσιος κανόνας μπορεί να στέκει ήσυχα δίπλα σε έναν στενό κανόνα VPN έως ότου κάποιος ελέγξει και τους δύο μαζί.
Όπου οι χειριστές χρειάζονται πραγματικά μια διαδρομή διαχείρισης, δώστε της έναν ονομασμένο ιδιοκτήτη και συντομότερη διάρκεια ζωής διαπιστευτηρίων από αυτήν της εφαρμογής. Αυτό κρατά την εκχώρηση ορατή όταν το επόμενο άτομο κληρονομήσει το σύμπλεγμα.
Τι υπόσχεται η σχεδίαση
Επικυρώστε και τις τρεις υποσχέσεις με πραγματικούς ρόλους και όχι μόνο με δοκιμές συνδεσιμότητας. Μια εγκεκριμένη εφαρμογή θα πρέπει να ολοκληρώνει την επιτρεπόμενη εργασία της και τίποτε άλλο, μια αποκλεισμένη πηγή θα πρέπει να αποτυγχάνει στην είσοδο πελατών, και μια ταυτότητα εφαρμογής θα πρέπει να απορρίπτεται στις δεσμευμένες διαχειριστικές διαδρομές. Προσθέστε την επανασύνδεση πελάτη και την επιλογή κόμβου στην ίδια δοκιμή ανάπτυξης, γιατί εκεί εμφανίζονται τα λάθη ανακάλυψης.
Ολοκληρώστε με τρεις προτάσεις στο έγγραφο σχεδίασης: ποιοι πελάτες μπορούν να υποβάλλουν ερωτήματα, ποιοι κόμβοι μπορούν να επικοινωνούν και ποιοι χειριστές μπορούν να διαχειρίζονται. Το να βρίσκεστε πίσω από ένα VPN είναι χρήσιμη πληροφορία τοπολογίας, αλλά δεν είναι απάντηση σε καμία από αυτές τις τρεις ερωτήσεις.