Cassandra JMX Authentication & Authorization: Δημιουργία χρήστη
⚡ Έξυπνη Σύνοψη
Cassandra Η ασφάλεια βασίζεται στην εσωτερική πιστοποίηση, τα δικαιώματα ρόλων, τους κανόνες τείχους προστασίας και τον έλεγχο πρόσβασης JMX. Αυτή η σελίδα δείχνει πώς να ενεργοποιήσετε κάθε επίπεδο, να δημιουργήσετε χρήστες, να εκχωρήσετε δικαιώματα και να ασφαλίσετε την απομακρυσμένη πρόσβαση στο nodetool.

Υπάρχουν δύο τύποι ασφάλειας σε Apache Cassandra και DataStax Enterprise.
- Εσωτερικός έλεγχος ταυτότητας
- εξουσιοδότηση
Τι είναι ο εσωτερικός έλεγχος ταυτότητας και η εξουσιοδότηση
Η εσωτερική επαλήθευση είναι ουσιαστικά η επικύρωση μιας σύνδεσης χρήστη. Ο χρήστης επαληθεύεται με όνομα χρήστη και κωδικό πρόσβασης. Όλοι οι λογαριασμοί χρηστών διαχειρίζονται σε Cassandra εσωτερικώς.
Η εσωτερική εξουσιοδότηση αφορά τα δικαιώματα ενός χρήστη. Ασχολείται με τις ενέργειες που μπορεί να εκτελέσει ένας χρήστης. Για παράδειγμα, μπορούμε να δώσουμε δικαιώματα όπως ποιος χρήστης έχει μόνο δικαίωμα ανάγνωσης δεδομένων, ποιος χρήστης έχει δικαίωμα εγγραφής δεδομένων και ποιος χρήστης έχει δικαίωμα διαγραφής δεδομένων.
Ωστόσο, ο έλεγχος ταυτότητας μπορεί επίσης να ελεγχθεί εξωτερικά με το Kerberos (το Kerberos χρησιμοποιείται για την ασφαλή διαχείριση των διαπιστευτηρίων) και το LDAP (το LDAP χρησιμοποιείται για τη διατήρηση έγκυρων πληροφοριών σχετικά με τους λογαριασμούς, όπως σε τι επιτρέπεται η πρόσβαση).
Ο εξωτερικός έλεγχος ταυτότητας είναι ο έλεγχος ταυτότητας που υποστηρίζεται με Kerberos και LDAP. Apache Cassandra δεν υποστηρίζει εξωτερικό έλεγχο ταυτότητας.
Μόνο το DataStax Enterprise υποστηρίζει εξωτερικό έλεγχο ταυτότητας με Kerberos και LDAP, ενώ ο εσωτερικός έλεγχος ταυτότητας υποστηρίζεται και στις δύο περιπτώσεις. Apache Cassandra καθώς και η DataStax Enterprise.
Διαμόρφωση ελέγχου ταυτότητας και εξουσιοδότησης
In Cassandra, από προεπιλογή, οι επιλογές ελέγχου ταυτότητας και εξουσιοδότησης είναι απενεργοποιημένες. Πρέπει να διαμορφώσετε το αρχείο cassandra.yaml για την ενεργοποίηση του ελέγχου ταυτότητας και της εξουσιοδότησης.
Ανοίξτε το cassandra.yaml και αποσχολιάστε τις γραμμές που αφορούν την εσωτερική αυθεντικοποίηση και εξουσιοδότηση, όπως φαίνεται παρακάτω.
- Στο cassandra.yaml, από προεπιλογή, η τιμή του authenticator είναι 'AllowAllAuthenticator'. Αλλάξτε αυτήν την τιμή του authenticator από 'AllowAllAuthenticator' σε 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
- Ομοίως, στο cassandra.yaml, από προεπιλογή, η τιμή εξουσιοδότησης θα είναι 'AllowAllAuthorizer'. Αλλάξτε αυτήν την τιμή εξουσιοδότησης από 'AllowAllAuthorizer' σε 'com.datastax.bdp.cassandra.auth.CassandraΕξουσιοδότης».
Αυτά τα δύο ονόματα κλάσεων είναι οι τιμές DataStax Enterprise. Σε ανοιχτού κώδικα Apache Cassandra οι ίδιες ρυθμίσεις ισχύουν PasswordAuthenticator και CassandraAuthorizerκαι τα διαπιστευτήρια στη συνέχεια βρίσκονται στο system_auth keyspace, του οποίου ο συντελεστής αναπαραγωγής θα πρέπει να αυξηθεί πάνω από ένα.
Σύνδεση στο
Τώρα ο έλεγχος ταυτότητας είναι ενεργοποιημένος, εάν προσπαθήσετε να αποκτήσετε πρόσβαση σε οποιοδήποτε χώρο κλειδιών, Cassandra θα επιστρέψει ένα σφάλμα.
Από προεπιλογή, Cassandra παρέχει στον υπερλογαριασμό το όνομα χρήστη 'cassandra' και τον κωδικό πρόσβασης 'cassandra'. Συνδεόμενοι στον λογαριασμό 'cassandra', μπορείτε να κάνετε ό,τι θέλετε.
Ας δούμε το παρακάτω στιγμιότυπο οθόνης για αυτό, όπου δεν θα σας επιτρέψει να συνδεθείτε εάν δεν χρησιμοποιείτε την προεπιλεγμένη Cassandra "όνομα χρήστη και κωδικός".
Τώρα, στο δεύτερο στιγμιότυπο οθόνης, μπορείτε να δείτε μετά τη χρήση του Cassandra προεπιλεγμένο διαπιστευτήριο σύνδεσης, μπορείτε να συνδεθείτε.
Μπορείτε επίσης να δημιουργήσετε έναν άλλο χρήστη με αυτόν τον λογαριασμό. Συνιστάται να αλλάξετε τον προεπιλεγμένο κωδικό πρόσβασης. Ακολουθεί ένα παράδειγμα σύνδεσης ως εξής: Cassandra χρήστη και αλλαγή του προεπιλεγμένου κωδικού πρόσβασης.
alter user cassandra with password 'newpassword';
Δημιουργία νέου χρήστη
Νέοι λογαριασμοί μπορούν να δημιουργηθούν με τον λογαριασμό «cassandra».
Για τη δημιουργία ενός νέου χρήστη, καθορίζονται τα στοιχεία σύνδεσης και ο κωδικός πρόσβασης, καθώς και το εάν ο χρήστης είναι υπερχρήστης ή όχι. Μόνο ένας υπερχρήστης μπορεί να δημιουργήσει νέους χρήστες.
create user robin with password 'manager' superuser; create user robin with password 'newhire';
Μπορείτε να λάβετε μια λίστα με όλους τους χρήστες με την ακόλουθη σύνταξη.
list users;
Η έξοδος παραθέτει κάθε λογαριασμό μαζί με τη σημαία υπερχρήστη του.
Οι χρήστες μπορούν να διαγραφούν με την ακόλουθη σύνταξη.
drop user laura;
εξουσιοδότηση
Η εξουσιοδότηση είναι η εκχώρηση δικαιωμάτων στους χρήστες, αποφασίζοντας ποια ενέργεια μπορεί να εκτελέσει ένας συγκεκριμένος χρήστης.
Εδώ είναι η γενική σύνταξη για την εκχώρηση άδειας στους χρήστες.
GRANT permission ON resource TO user
Υπάρχουν οι ακόλουθοι τύποι αδειών που μπορούν να παραχωρηθούν στον χρήστη.
- ΌΛΟΙ
- ALTER
- ΕΞΟΥΣΙΟΔΟΤΩ
- ΔΗΜΙΟΥΡΓΩ
- DROP
- ΤΡΟΠΟΠΟΙΩ
- SELECT
Ακολουθούν παραδείγματα εκχώρησης άδειας στον χρήστη.
Create user laura with password 'newhire'; grant all on dev.emp to laura; revoke all on dev.emp to laura; grant select on dev.emp to laura;
Δημιουργείται ένας νέος χρήστης "laura" με κωδικό πρόσβασης "newhire".
Ακολουθεί το παράδειγμα όπου ο χρήστης 'laura' προσπαθεί να αποκτήσει πρόσβαση στον πίνακα emp_bonus. Η Laura έχει μόνο άδεια πρόσβασης στο dev.emp και όχι άδεια στον πίνακα dev.emp_bonus, γι' αυτό και επιστράφηκε σφάλμα.
select* form emp_bonus;
Μπορείτε να λάβετε μια λίστα με όλα τα δικαιώματα που έχουν εκχωρηθεί στον χρήστη. Ακολουθεί ένα παράδειγμα λήψης πληροφοριών δικαιωμάτων.
list all permissions of laura;
Μπορείτε επίσης να παραθέσετε όλα τα δικαιώματα σε έναν πόρο. Ακολουθεί το παράδειγμα λήψης δικαιωμάτων από έναν πίνακα.
list all permissions on dev.emp;
Διαμόρφωση τείχους προστασίας
Εάν το τείχος προστασίας εκτελείται, οι ακόλουθες θύρες πρέπει να ανοίξουν για επικοινωνία μεταξύ κόμβων, συμπεριλαμβανομένων ορισμένων Cassandra λιμάνια. Αν Cassandra οι θύρες δεν θα ανοίξουν, Cassandra Οι κόμβοι θα λειτουργούν ως αυτόνομοι διακομιστές βάσεων δεδομένων αντί να εντάσσονται στο σύμπλεγμα βάσεων δεδομένων.
Cassandra Client Ports
| Αριθμός θύρας | Περιγραφή |
|---|---|
| 9042 | Cassandra Λιμάνι πελατών |
| 9160 | Cassandra Client Port Thrift |
Cassandra Internode λιμάνια
| Αριθμός θύρας | Περιγραφή |
|---|---|
| 7000 | Cassandra επικοινωνία συμπλέγματος μεσογονάτου |
| 7001 | Cassandra Επικοινωνία συμπλέγματος μεσογονιδίων SSL |
| 7199 | Cassandra Θύρα παρακολούθησης JMX |
Δημόσια λιμάνια
| Αριθμός θύρας | Περιγραφή |
|---|---|
| 22 | Θύρα SSH |
| 8888 | Ιστοσελίδα OpsCenter. Αίτημα προγράμματος περιήγησης http. |
Cassandra Θύρες OpsCenter
| Αριθμός θύρας | Περιγραφή |
|---|---|
| 61620 | Θύρα παρακολούθησης OpsCenter. |
| 61621 | Θύρα πράκτορα Opscenter |
Τα τρέχοντα προγράμματα οδήγησης χρησιμοποιούν μόνο την θύρα 9042. Η θύρα 9160 εξυπηρετεί την παλαιότερη διεπαφή Thrift και μπορεί να παραμείνει κλειστή σε νέα clusters.
Ενεργοποίηση ελέγχου ταυτότητας JMX
Με τις προεπιλεγμένες ρυθμίσεις του Cassandra, Η πρόσβαση στο JMX είναι δυνατή μόνο από τον τοπικό κεντρικό υπολογιστή. Εάν θέλετε να αποκτήσετε πρόσβαση στο JMX εξ αποστάσεως, αλλάξτε τη ρύθμιση LOCAL_JMX στο cassandra-env.sh και ενεργοποιήστε τον έλεγχο ταυτότητας ή το SSL.
Αφού ενεργοποιήσετε τον έλεγχο ταυτότητας JMX, βεβαιωθείτε OpsCenter και το nodetool έχουν ρυθμιστεί να χρησιμοποιούν έλεγχο ταυτότητας.
Διαδικασία
Ακολουθούν τα παρακάτω βήματα για την ενεργοποίηση του ελέγχου ταυτότητας JMX.
- Στο αρχείο cassandra-env.sh, προσθέστε ή ενημερώστε τις ακόλουθες γραμμές.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true" JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
Επίσης, αλλάξτε τη ρύθμιση LOCAL_JMX στο cassandra-env.sh.
LOCAL_JMX=no
- Αντιγράψτε το αρχείο jmxremote.password.template από το /jdk_install_location/lib/management/ στο /etc/cassandra/ και μετονομάστε το σε jmxremote.password.
cp /jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password - Αλλάξτε την ιδιοκτησία του jmxremote.password στον χρήστη που εκτελείτε Cassandra με και αλλάξτε την άδεια σε μόνο ανάγνωση.
chown cassandra:cassandra /etc/cassandra/jmxremote.password chmod 400 /etc/cassandra/jmxremote.password
- Επεξεργαστείτε το jmxremote.password και προσθέστε τον χρήστη και τον κωδικό πρόσβασης για βοηθητικά προγράμματα συμβατά με JMX:
monitorRole QED controlRole R&D cassandra cassandrapassword
- Προσθέστε το Cassandra χρήστης με άδεια ανάγνωσης και εγγραφής στο /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly cassandra readwrite controlRole readwrite \ create javax.management.monitor.,javax.management.timer. \ unregister
- επανεκκίνηση Cassandra.
- Εκτελέστε το nodetool με το Cassandra χρήστη και κωδικό πρόσβασης.
$ nodetool status -u cassandra -pw cassandra







