Cassandra JMX-Authentifizierung und -Autorisierung: Benutzer erstellen

Es gibt zwei Arten von Sicherheit Apache Kassandra und Datastax-Unternehmen.

  • Interne Authentifizierung
  • Genehmigung

Was ist interne Authentifizierung und Autorisierung?

Bei der internen Authentifizierung wird grundsätzlich die Benutzerverbindung validiert. Der Benutzer wird mit Login und Passwort authentifiziert. Alle Benutzerkonten werden intern in Cassandra verwaltet.

Bei der internen Autorisierung geht es um die Erlaubnis des Benutzers. Es geht darum, welche Aktionen der Benutzer ausführen kann. Beispielsweise können wir Benutzerberechtigungen erteilen, z. B. welcher Benutzer nur die Berechtigung zum Lesen von Daten hat, welcher Benutzer die Berechtigung zum Schreiben von Daten hat und welcher Benutzer die Berechtigung zum Löschen von Daten hat.

Die Authentifizierung kann jedoch auch extern gesteuert werden Kerberos (Kerberos wird zum sicheren Verwalten von Anmeldeinformationen verwendet) und LDAP (LDAP wird zum Speichern maßgeblicher Informationen über die Konten verwendet, z. B. darauf, worauf sie zugreifen dürfen).

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. Die interne Authentifizierung wird hingegen sowohl in Apache Cassandra als auch in Datastax Enterprise unterstützt.

Konfigurieren Sie Authentifizierung und Autorisierung

In Cassandra sind die Authentifizierungs- und Autorisierungsoptionen standardmäßig deaktiviert. Sie müssen die Datei Cassandra.yaml konfigurieren, um Authentifizierung und Autorisierung zu aktivieren.

Öffnen Sie die Datei Cassandra.yaml und kommentieren Sie Zeilen aus, die sich mit der internen Authentifizierung und Autorisierung befassen.

Konfigurieren Sie Authentifizierung und Autorisierung

  • In der Datei Cassandra.yaml ist der Authentifikatorwert standardmäßig „AllowAllAuthenticator“. Ändern Sie diesen Authentifikatorwert von „AllowAllAuthenticator“ in „com.datastax.bdp.cassandra.auth.PasswordAuthenticator“.
  • Ebenso ist in der Datei Cassandra.yaml der Autorisierungswert standardmäßig „AllowAllAuthorizor“. Ändern Sie diesen Autorisierungswert von „AllowAllAuthorizor“ in „com.datastax.bdp.cassandra.auth.CassandraAuthorizer“.

Protokollierung in

Jetzt ist die Authentifizierung aktiviert. Wenn Sie versuchen, auf einen Schlüsselraum zuzugreifen, gibt Cassandra einen Fehler zurück.

Standardmäßig stellt Cassandra dem Superkonto den Benutzernamen „cassandra“ und das Passwort „cassandra“ zur Verfügung. Wenn Sie sich beim „Cassandra“-Konto anmelden, können Sie tun und lassen, was Sie wollen.

Sehen wir uns dazu den folgenden Screenshot an, in dem Sie sich nicht anmelden können, wenn Sie nicht den Standard-Cassandra-Benutzernamen und das Standardkennwort verwenden.

Protokollierung in

Im zweiten Screenshot können Sie nun sehen, dass Sie sich anmelden können, nachdem Sie die Standard-Anmeldeinformationen von Cassandra verwendet haben.

Sie können mit diesem Konto auch einen weiteren Benutzer erstellen. Es wird empfohlen, das Standardkennwort zu ändern. Hier ist das Beispiel für die Anmeldung als Cassandra-Benutzer und die Änderung des Standardkennworts.

Protokollierung in

alter user cassandra with password 'newpassword';

Neuen Benutzer erstellen

Neue Konten können mit dem Konto „Cassandra“ erstellt werden.

Um einen neuen Benutzer zu erstellen, müssen Sie sich anmelden, das Passwort angeben und angeben, ob der Benutzer ein Superuser ist oder nicht. Nur Superuser können neue Benutzer erstellen.

create user robin with password 'manager' superuser;
create user robin with password 'newhire';

Eine Liste aller Benutzer erhalten Sie im Folgendenwing Syntax.

list users;

Neuen Benutzer erstellen

Benutzer können wie folgt gelöscht werdenwing Syntax.

drop user laura;

Genehmigung

Bei der Autorisierung handelt es sich um die Zuweisung der Berechtigung an Benutzer, welche Aktion ein bestimmter Benutzer ausführen kann.

Hier ist die generische Syntax zum Zuweisen von Berechtigungen an Benutzer.

GRANT permission ON resource TO user

Es gibt folgendewing Arten von Berechtigungen, die dem Benutzer gewährt werden können.

  1. ALLER
  2. ALTER
  3. AUTORISIEREN
  4. CREATE
  5. DROP
  6. ÄNDERN
  7. 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 „ne“ erstelltwhire'.

Hier ist das Beispiel, in dem der Benutzer „laura“ versucht, auf die emp_bonus-Tabelle zuzugreifen. Laura hat nur die Berechtigung, auf dev.emp zuzugreifen, aber keine Berechtigung für die Tabelle dev.emp_bonus. Deshalb wurde ein Fehler zurückgegeben.

Genehmigung

select* form emp_bonus;

Sie können eine Liste aller Berechtigungen abrufen, die dem Benutzer zugewiesen sind. Hier ist das Beispiel für das Abrufen von Berechtigungsinformationen.

Genehmigung

list all permissions of laura;

Sie können auch alle Berechtigungen für die Ressource auflisten. Hier ist das Beispiel für das Einholen der Erlaubnis von einer Tabelle.

Genehmigung

list all permissions on dev.emp;

Firewall konfigurieren

Wenn die Firewall läuft, folgen Sie bittewing Für die Kommunikation zwischen Knoten müssen Ports geöffnet werden, darunter auch einige Cassandra-Ports. Wenn Cassandra-Ports nicht geöffnet werden, fungieren Cassandra-Knoten als eigenständige Datenbankserver, anstatt sich dem Datenbankcluster anzuschließen.

Cassandra-Client-Ports

Port-Nummer Beschreibung
9042 Cassandra-Client-Port
9160 Cassandra Client Port Thrift

Cassandra Internode-Ports

Port-Nummer Beschreibung
7000 Cassandra-Internode-Cluster-Kommunikation
7001 Cassandra SSL-Clusterkommunikation zwischen Knoten
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

Aktivieren der JMX-Authentifizierung

Mit den Standardeinstellungen von Cassandra kann auf JMX nur vom lokalen Host aus zugegriffen werden. Wenn Sie remote auf JMX zugreifen möchten, ändern Sie die LOCAL_JMX-Einstellung in Cassandra-env.sh und aktivieren Sie Authentifizierung oder SSL.

Stellen Sie sicher, dass Sie die JMX-Authentifizierung aktiviert haben OpsCenter und nodetool sind für die Verwendung der Authentifizierung konfiguriert.

Verfahren

Es gibt folgendewing Schritte zum Aktivieren der JMX-Authentifizierung.

  1. Fügen Sie in der Datei cassandra-env.sh Folgendes hinzu oder aktualisieren Sie eswing Linien.
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 LOCAL_JMX-Einstellung in Cassandra-env.sh

LOCAL_JMX=no
  1. Kopieren Sie die 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
  1. Ändern Sie den Besitz von jmxremote.password auf den Benutzer, mit dem Sie Cassandra ausführen, und ändern Sie die Berechtigung auf „Nur Lesen“.
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. 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
  1. Fügen Sie den Cassandra-Benutzer mit Lese- und Schreibberechtigung zu /jdk_install_location/lib/management/jmxremote.access hinzu
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. Starten Sie Cassandra neu
  2. Führen Sie nodetool mit dem Cassandra-Benutzer und Passwort aus.
$ nodetool status -u cassandra -pw cassandra

Zusammenfassung

In diesem Tutorial werden die Sicherheit in Cassandra und die Konfiguration der Datei Cassandra.yaml zum Aktivieren der Sicherheit erläutert. Darüber hinaus wird erläutert, wie ein neues Benutzerkonto erstellt, Berechtigungen zugewiesen, die Firewall konfiguriert usw. werden.