Cassandra JMX Authentication & Authorization: Δημιουργία χρήστη

⚡ Έξυπνη Σύνοψη

Cassandra Η ασφάλεια βασίζεται στην εσωτερική πιστοποίηση, τα δικαιώματα ρόλων, τους κανόνες τείχους προστασίας και τον έλεγχο πρόσβασης JMX. Αυτή η σελίδα δείχνει πώς να ενεργοποιήσετε κάθε επίπεδο, να δημιουργήσετε χρήστες, να εκχωρήσετε δικαιώματα και να ασφαλίσετε την απομακρυσμένη πρόσβαση στο nodetool.

  • 🔐 Δύο στρώσεις: Η αυθεντικοποίηση αποδεικνύει ποιος είναι ένας χρήστης· η εξουσιοδότηση αποφασίζει τι μπορεί να κάνει αυτός ο χρήστης.
  • ⚙️ Ενεργοποίησέ το: Και οι δύο είναι απενεργοποιημένες από προεπιλογή και ενεργοποιούνται μέσω των ρυθμίσεων του ελέγχου ταυτότητας και του εξουσιοδοτητή.
  • 👤 Προεπιλεγμένος λογαριασμός: Ο ενσωματωμένος υπερχρήστης cassandra δημιουργεί κάθε άλλο λογαριασμό, οπότε αλλάξτε αμέσως τον κωδικό πρόσβασής του.
  • 🔑 Μοντέλο επιχορήγησης: Δικαιώματα όπως SELECT, MODIFY και ALTER εκχωρούνται ανά πόρο με GRANT.
  • 📡 Έλεγχος λιμένων: Ανοίξτε τους κόμβους 7000, 7001, 7199 και 9042 μεταξύ των κόμβων και διατηρήστε τον έλεγχο ταυτότητας του JMX.

Cassandra Έλεγχος ταυτότητας και εξουσιοδότηση JMX

Υπάρχουν δύο τύποι ασφάλειας σε 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 δεν έχουν σχολιαστεί

  • Στο 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 "όνομα χρήστη και κωδικός".

Η σύνδεση απορρίφθηκε στο cqlsh όταν δεν χρησιμοποιούνται τα προεπιλεγμένα διαπιστευτήρια

Τώρα, στο δεύτερο στιγμιότυπο οθόνης, μπορείτε να δείτε μετά τη χρήση του Cassandra προεπιλεγμένο διαπιστευτήριο σύνδεσης, μπορείτε να συνδεθείτε.

Επιτυχής σύνδεση στο cqlsh χρησιμοποιώντας τα προεπιλεγμένα διαπιστευτήρια της 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

Υπάρχουν οι ακόλουθοι τύποι αδειών που μπορούν να παραχωρηθούν στον χρήστη.

  1. ΌΛΟΙ
  2. ALTER
  3. ΕΞΟΥΣΙΟΔΟΤΩ
  4. ΔΗΜΙΟΥΡΓΩ
  5. DROP
  6. ΤΡΟΠΟΠΟΙΩ
  7. 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, γι' αυτό και επιστράφηκε σφάλμα.

Επιστράφηκε σφάλμα όταν η laura υποβάλλει ερώτημα στον πίνακα emp_bonus χωρίς άδεια

select* form emp_bonus;

Μπορείτε να λάβετε μια λίστα με όλα τα δικαιώματα που έχουν εκχωρηθεί στον χρήστη. Ακολουθεί ένα παράδειγμα λήψης πληροφοριών δικαιωμάτων.

Έξοδος λίστας όλων των δικαιωμάτων της laura

list all permissions of laura;

Μπορείτε επίσης να παραθέσετε όλα τα δικαιώματα σε έναν πόρο. Ακολουθεί το παράδειγμα λήψης δικαιωμάτων από έναν πίνακα.

Έξοδος λίστας όλων των δικαιωμάτων στο dev.emp

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.

  1. Στο αρχείο 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
  2. Αντιγράψτε το αρχείο 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
  3. Αλλάξτε την ιδιοκτησία του jmxremote.password στον χρήστη που εκτελείτε Cassandra με και αλλάξτε την άδεια σε μόνο ανάγνωση.
    chown cassandra:cassandra /etc/cassandra/jmxremote.password 
    chmod 400 /etc/cassandra/jmxremote.password
  4. Επεξεργαστείτε το jmxremote.password και προσθέστε τον χρήστη και τον κωδικό πρόσβασης για βοηθητικά προγράμματα συμβατά με JMX:
    monitorRole QED 
    controlRole R&D 
    cassandra cassandrapassword
  5. Προσθέστε το Cassandra χρήστης με άδεια ανάγνωσης και εγγραφής στο /jdk_install_location/lib/management/jmxremote.access
    monitorRole readonly
    cassandra readwrite
    controlRole readwrite \
    create javax.management.monitor.,javax.management.timer. \ 
    unregister
  6. επανεκκίνηση Cassandra.
  7. Εκτελέστε το nodetool με το Cassandra χρήστη και κωδικό πρόσβασης.
    $ nodetool status -u cassandra -pw cassandra

Συχνές Ερωτήσεις

Και τα δύο βρίσκονται στον χώρο κλειδιών system_auth, στους πίνακες roles και role_permissions. Επειδή ένα χαμένο αντίγραφο του system_auth μπορεί να κλειδώσει όλους εκτός, αυξήστε τον συντελεστή αναπαραγωγής του πριν ενεργοποιήσετε τον έλεγχο ταυτότητας στην παραγωγή.

Οι ρόλοι CQL αντικατέστησαν την παλαιότερη σύνταξη χρήστη. Ένας ρόλος διατηρεί δικαιώματα και μπορεί να εκχωρηθεί σε άλλους ρόλους, επομένως η συνάρτηση CREATE ROLE αντικαθιστά τη συνάρτηση CREATE USER στις τρέχουσες εκδόσεις, οι οποίες διατηρούν τις εντολές χρήστη ως ψευδώνυμα.

Όχι. Ο έλεγχος ταυτότητας αποδεικνύει μόνο την ταυτότητα. Οι κωδικοί πρόσβασης εξακολουθούν να διασχίζουν το δίκτυο χωρίς σφάλματα, εκτός εάν είναι ενεργοποιημένη η επιλογή client_encryption_options. Ενεργοποιήστε το TLS ξεχωριστά για την κίνηση από υπολογιστή-πελάτη σε κόμβο και από κόμβο σε κόμβο.

Δημιουργήστε έναν αποκλειστικό υπερχρήστη και, στη συνέχεια, αλλάξτε τον ενσωματωμένο κωδικό πρόσβασης της Cassandra ή διαγράψτε τον λογαριασμό. Η πιο συνηθισμένη πρακτική είναι να αφήσετε ενεργό το τεκμηριωμένο ζεύγος Cassandra/Cassandra. Cassandra λανθασμένη διαμόρφωση.

Τα δικαιώματα αποθηκεύονται στην προσωρινή μνήμη. Μια αλλαγή τίθεται σε ισχύ μόνο μετά τη λήξη του παραθύρου ισχύος των δικαιωμάτων, επομένως συντομεύστε αυτήν τη ρύθμιση στο cassandra.yaml ή επανεκκινήστε τον κόμβο κατά τη δοκιμή μιας επιχορήγησης ή ανάκλησης.

Το μη εξουσιοδοτημένο JMX στη θύρα 7199 επιτρέπει τον πλήρη έλεγχο του κόμβου, συμπεριλαμβανομένης της απενεργοποίησης. Cassandra επομένως το συνδέει τοπικά και η απομακρυσμένη πρόσβαση θα πρέπει να ανοίγεται μόνο με ένα αρχείο κωδικού πρόσβασης ή SSL στη θέση του.

Τα μοντέλα μηχανικής μάθησης δημιουργούν προφίλ με κανονικά σχήματα ερωτημάτων, χρόνους σύνδεσης και διευθύνσεις πηγής ανά ρόλο και, στη συνέχεια, επισημαίνουν αποκλίσεις, όπως ένας λογαριασμός εφαρμογής που διαβάζει έναν μη σχετικό χώρο κλειδιού. Αυτό αποκαλύπτει την κατάχρηση διαπιστευτηρίων και την αποτυχία στατικών κανόνων.

Το Copilot συντάσσει γρήγορα τις εντολές CREATE ROLE και GRANT από ένα σχόλιο, αλλά τείνει να προτείνει ευρείες άδειες. Revελέγξτε κάθε παραγόμενη επιχορήγηση έναντι του ελάχιστου προνομίου πριν την εκτελέσετε σε ζωντανή μετάδοση συστάδα.

Συνοψίστε αυτήν την ανάρτηση με: