Cassandra JMX-Authentifizierung und -Autorisierung: Benutzer erstellen
⚡ Intelligente Zusammenfassung
Cassandra Die Sicherheit basiert auf interner Authentifizierung, Rollenberechtigungen, Firewall-Regeln und JMX-Zugriffskontrolle. Diese Seite zeigt, wie Sie die einzelnen Ebenen aktivieren, Benutzer anlegen, Berechtigungen erteilen und den Remote-Zugriff auf Nodetools sichern.
Es gibt zwei Arten von Sicherheit Apache Cassandra und DataStax Enterprise.
- Interne Authentifizierung
- Genehmigung
Was ist interne Authentifizierung und Autorisierung?
Die interne Authentifizierung dient im Wesentlichen der Überprüfung einer Benutzerverbindung. Der Benutzer wird mit Benutzername und Passwort authentifiziert. Alle Benutzerkonten werden in der internen Authentifizierung verwaltet. Cassandra im Inneren.
Die interne Autorisierung regelt die Berechtigungen eines Benutzers. Sie legt fest, welche Aktionen ein Benutzer ausführen darf. Beispielsweise können wir Berechtigungen vergeben, etwa: Welcher Benutzer darf nur Daten lesen, welcher Benutzer darf Daten schreiben und welcher Benutzer darf Daten löschen?
Die Authentifizierung kann jedoch auch extern mit Kerberos (Kerberos wird zur sicheren Verwaltung von Anmeldeinformationen verwendet) und LDAP (LDAP wird zur Speicherung autoritativer Informationen über die Konten verwendet, z. B. worauf diese zugreifen dürfen) gesteuert werden.
Bei der externen Authentifizierung handelt es sich um die Authentifizierung, die mit Kerberos und LDAP unterstützt wird. Apache Cassandra unterstützt keine externe Authentifizierung.
Nur DataStax Enterprise unterstützt die externe Authentifizierung mit Kerberos und LDAP, während die interne Authentifizierung sowohl in Apache Cassandra sowie DataStax Enterprise.
Konfigurieren Sie Authentifizierung und Autorisierung
In CassandraStandardmäßig sind Authentifizierungs- und Autorisierungsoptionen deaktiviert. Sie müssen die Datei cassandra.yaml konfigurieren, um Authentifizierung und Autorisierung zu aktivieren.
Öffnen Sie die Datei cassandra.yaml und entfernen Sie die Kommentarzeichen vor den Zeilen, die sich mit der internen Authentifizierung und Autorisierung befassen, wie unten gezeigt.
- In der Datei cassandra.yaml ist der Wert für den Authentifizierungsalgorithmus standardmäßig auf „AllowAllAuthenticator“ gesetzt. Ändern Sie diesen Wert von „AllowAllAuthenticator“ in „com.datastax.bdp.cassandra.auth.PasswordAuthenticator“.
- In der Datei cassandra.yaml ist der Wert für den Autorisierer standardmäßig auf 'AllowAllAuthorizer' gesetzt. Ändern Sie diesen Wert von 'AllowAllAuthorizer' in 'com.datastax.bdp.cassandra.auth'.CassandraAutorisierer‘.
Diese beiden Klassennamen sind die DataStax Enterprise-Werte. Auf Open-Source-Plattformen Apache Cassandra die gleichen Einstellungen PasswordAuthenticator und CassandraAuthorizerund die Anmeldeinformationen befinden sich dann im system_auth Schlüsselraum, dessen Replikationsfaktor auf über eins erhöht werden sollte.
Protokollierung in
Jetzt ist die Authentifizierung aktiviert. Wenn Sie versuchen, auf einen Schlüsselraum zuzugreifen, Cassandra wird einen Fehler zurückgeben.
Standardmäßig Cassandra Sie erhalten das Superkonto mit dem Benutzernamen „cassandra“ und dem Passwort „cassandra“. Nach dem Einloggen in das Konto „cassandra“ können Sie beliebige Aktionen ausführen.
Sehen wir uns dazu den folgenden Screenshot an, in dem Sie sich nicht anmelden können, wenn Sie nicht die Standardeinstellung verwenden Cassandra "Benutzername und Passwort".
Im zweiten Screenshot können Sie nun sehen, was nach der Verwendung von … passiert ist. Cassandra Mit den Standard-Anmeldedaten können Sie sich anmelden.
Sie können mit diesem Konto auch einen weiteren Benutzer anlegen. Es wird empfohlen, das Standardpasswort zu ändern. Hier ist ein Beispiel für die Anmeldung als [Benutzername]. Cassandra Benutzer und Änderung des Standardpassworts.
alter user cassandra with password 'newpassword';
Neuen Benutzer erstellen
Neue Konten können mit dem Konto „cassandra“ erstellt werden.
Zum Anlegen eines neuen Benutzers werden Benutzername und Passwort sowie die Information, ob es sich um einen Superuser handelt oder nicht, angegeben. Nur Superuser können neue Benutzer anlegen.
create user robin with password 'manager' superuser; create user robin with password 'newhire';
Mit der folgenden Syntax können Sie eine Liste aller Benutzer erhalten.
list users;
Die Ausgabe listet jedes Konto zusammen mit seinem Superuser-Flag auf.
Benutzer können mit der folgenden Syntax gelöscht werden.
drop user laura;
Genehmigung
Autorisierung ist die Zuweisung von Berechtigungen an Benutzer, wodurch festgelegt wird, welche Aktionen ein bestimmter Benutzer ausführen darf.
Hier ist die generische Syntax zum Zuweisen von Berechtigungen an Benutzer.
GRANT permission ON resource TO user
Es gibt die folgenden Arten von Berechtigungen, die dem Benutzer gewährt werden können.
- ALLER
- ALTER
- AUTORISIEREN
- CREATE
- DROP
- ÄNDERN
- SELECT
Hier finden Sie Beispiele für die Zuweisung von Berechtigungen an den Benutzer.
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;
Ein neuer Benutzer „Laura“ wird mit dem Passwort „newhire“ erstellt.
Hier ist ein Beispiel, in dem die Benutzerin „laura“ versucht, auf die Tabelle „emp_bonus“ zuzugreifen. Laura hat jedoch nur Zugriff auf die Tabelle „dev.emp“ und keine Berechtigung für die Tabelle „dev.emp_bonus“, weshalb ein Fehler zurückgegeben wurde.
select* form emp_bonus;
Sie können eine Liste aller dem Benutzer zugewiesenen Berechtigungen abrufen. Hier ist ein Beispiel für den Abruf von Berechtigungsinformationen.
list all permissions of laura;
Sie können auch alle Berechtigungen für eine Ressource auflisten. Hier ist ein Beispiel für das Abrufen von Berechtigungen für eine Tabelle.
list all permissions on dev.emp;
Firewall konfigurieren
Wenn die Firewall läuft, müssen folgende Ports für die Kommunikation zwischen Knoten geöffnet werden, darunter einige Cassandra Häfen. Wenn Cassandra Ports werden nicht geöffnet, Cassandra Die Knoten fungieren als eigenständige Datenbankserver, anstatt dem Datenbankcluster beizutreten.
Cassandra Client-Ports
| Port-Nummer | Beschreibung |
|---|---|
| 9042 | Cassandra Client-Port |
| 9160 | Cassandra Client-Port-Sparsamkeit |
Cassandra Internode-Ports
| Port-Nummer | Beschreibung |
|---|---|
| 7000 | Cassandra Internodenclusterkommunikation |
| 7001 | Cassandra SSL-Kommunikation zwischen Knotenclustern |
| 7199 | Cassandra JMX-Überwachungsport |
Öffentliche Häfen
| Port-Nummer | Beschreibung |
|---|---|
| 22 | SSH-Anschluss |
| 8888 | OpsCenter-Website. HTTP-Anfrage des Browsers. |
Cassandra OpsCenter-Ports
| Port-Nummer | Beschreibung |
|---|---|
| 61620 | OpsCenter-Überwachungsport. |
| 61621 | Opscenter-Agent-Port |
Aktuelle Treiber verwenden nur Port 9042; Port 9160 dient der älteren Thrift-Schnittstelle und kann auf neuen Clustern geschlossen bleiben.
Aktivieren der JMX-Authentifizierung
Mit den Standardeinstellungen von CassandraJMX ist nur vom lokalen Rechner aus erreichbar. Um remote auf JMX zuzugreifen, ändern Sie die Einstellung LOCAL_JMX in der Datei cassandra-env.sh und aktivieren Sie die Authentifizierung oder SSL.
Stellen Sie sicher, dass Sie die JMX-Authentifizierung aktiviert haben OpsCenter und nodetool sind für die Verwendung der Authentifizierung konfiguriert.
Ablauf
Zum Aktivieren der JMX-Authentifizierung sind die folgenden Schritte erforderlich.
- Fügen Sie in der Datei cassandra-env.sh die folgenden Zeilen hinzu oder aktualisieren Sie sie.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true" JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
Ändern Sie außerdem die Einstellung LOCAL_JMX in cassandra-env.sh.
LOCAL_JMX=no
- Kopieren Sie die Datei jmxremote.password.template von /jdk_install_location/lib/management/ nach /etc/cassandra/ und benennen Sie sie in jmxremote.password um.
cp /jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password - Ändern Sie den Besitz von jmxremote.password auf den von Ihnen ausgeführten Benutzer Cassandra mit und ändern Sie die Berechtigung auf Nur-Lese-Zustand.
chown cassandra:cassandra /etc/cassandra/jmxremote.password chmod 400 /etc/cassandra/jmxremote.password
- Bearbeiten Sie jmxremote.password und fügen Sie den Benutzer und das Passwort für JMX-kompatible Dienstprogramme hinzu:
monitorRole QED controlRole R&D cassandra cassandrapassword
- Fügen Sie Cassandra Benutzer mit Lese- und Schreibberechtigung für /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly cassandra readwrite controlRole readwrite \ create javax.management.monitor.,javax.management.timer. \ unregister
- Wiederaufnahme Cassandra.
- Führen Sie nodetool mit dem aus Cassandra Benutzer und Passwort.
$ nodetool status -u cassandra -pw cassandra








