Cassandra-Sicherheit: Benutzer erstellen & Authentifizierung mit JMX

Inhaltsverzeichnis:

Anonim

Es gibt zwei Arten von Sicherheit in Apache Cassandra und Datastax Enterprise.

  • Interne Authentifizierung
  • Genehmigung

In diesem Tutorial lernen Sie:

  • Was ist interne Authentifizierung und Autorisierung?
  • Konfigurieren Sie die Authentifizierung und Autorisierung
  • Einloggen
  • Neuen Benutzer erstellen
  • Genehmigung
  • Firewall konfigurieren
  • Aktivieren der JMX-Authentifizierung

Was ist interne Authentifizierung und Autorisierung?

Bei der internen Authentifizierung wird im Wesentlichen die Benutzerverbindung überprüft. Der Benutzer wird mit Login und Passwort authentifiziert. Alle Benutzerkonten werden intern in Cassandra verwaltet.

Die interne Autorisierung befasst sich mit der Erlaubnis des Benutzers. Es befasst sich mit den Aktionen, die der Benutzer ausführen kann. Beispielsweise können wir dem Benutzer die Berechtigung erteilen, z. B. welcher Benutzer nur über die Berechtigung zum Lesen von Daten verfügt, welcher Benutzer über die Berechtigung zum Schreiben von Daten verfügt und welcher Benutzer über die Berechtigung zum Löschen von Daten verfügt.

Die Authentifizierung kann jedoch auch extern mit Kerberos (Kerberos wird zum sicheren Verwalten von Anmeldeinformationen verwendet) und LDAP (LDAP wird zum Speichern autorisierender Informationen zu den Konten verwendet, z. B. zum Zugriff auf diese Konten) gesteuert werden .

Externe Authentifizierung ist die Authentifizierung, die von 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 sowohl in Apache Cassandra als auch in Datastax Enterprise unterstützt.

Konfigurieren Sie die Authentifizierung und Autorisierung

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

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

  • In der Datei Cassandra.yaml lautet der Authentifizierungswert standardmäßig "AllowAllAuthenticator". Ändern Sie diesen Authentifizierungswert von 'AllowAllAuthenticator' in 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • In ähnlicher Weise lautet der Autorisierungswert in der Datei Cassandra.yaml standardmäßig "AllowAllAuthorizor". Ändern Sie diesen Autorisierungswert von 'AllowAllAuthorizor' in 'com.datastax.bdp.cassandra.auth.CassandraAuthorizor'.

Einloggen

Jetzt ist die Authentifizierung aktiviert. Wenn Sie versuchen, auf einen Schlüsselbereich 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 bei 'Cassandra' anmelden, können Sie tun, was Sie wollen.

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

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

Sie können mit diesem Konto auch einen anderen Benutzer erstellen. Es wird empfohlen, das Kennwort von der Standardeinstellung zu ändern. Hier ist das Beispiel für die Anmeldung eines Cassandra-Benutzers und das Ändern des Standardkennworts.

alter user cassandra with password 'newpassword';

Neuen Benutzer erstellen

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

Zum Erstellen eines neuen Benutzers, Anmelden, wird das Kennwort zusammen mit der Frage angegeben, 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';

Sie können eine Liste aller Benutzer mit der folgenden Syntax abrufen.

list users;

Benutzer können mit der folgenden Syntax gelöscht werden.

drop user laura;

Genehmigung

Die Autorisierung ist 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 folgende Arten von Berechtigungen, die dem Benutzer erteilt werden können.

  1. ALLE
  2. ÄNDERN
  3. AUTORISIEREN
  4. ERSTELLEN
  5. FALLEN
  6. ÄNDERN
  7. WÄHLEN

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 das Beispiel, in dem Benutzer 'laura' versucht, auf die Tabelle emp_bonus zuzugreifen. Laura hat nur die Berechtigung, auf dev.emp zuzugreifen, und keine Berechtigung für diese Tabelle dev.emp_bonus. Deshalb wurde ein Fehler zurückgegeben.

select* form emp_bonus;

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

list all permissions of laura;

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

list all permissions on dev.emp;

Firewall konfigurieren

Wenn die Firewall ausgeführt wird, müssen die folgenden Ports für die Kommunikation zwischen Knoten geöffnet werden, einschließlich einiger Cassandra-Ports. Wenn Cassandra-Ports nicht geöffnet werden, fungieren Cassandra-Knoten als eigenständiger Datenbankserver, anstatt dem Datenbankcluster beizutreten.

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 Internode Cluster Kommunikation

7199

Cassandra JMX-Überwachungsport

Öffentliche Häfen

Port-Nummer

Beschreibung

22

SSH-Port

8888

OpsCenter-Website. Browser http Anfrage.

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 Einstellung LOCAL_JMX in Cassandra-env.sh und aktivieren Sie die Authentifizierung oder SSL.

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

Verfahren

Es gibt die folgenden Schritte zum Aktivieren der JMX-Authentifizierung.

  1. 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 auch die Einstellung LOCAL_JMX in Cassandra-env.sh

LOCAL_JMX=no
  1. Kopieren Sie die Vorlage 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 in den Benutzer, mit dem Sie Cassandra ausführen, und ändern Sie die Berechtigung zum Lesen
chown cassandra:cassandra /etc/cassandra/jmxremote.passwordchmod 400 /etc/cassandra/jmxremote.password
  1. Bearbeiten Sie jmxremote.password und fügen Sie den Benutzer und das Kennwort für JMX-kompatible Dienstprogramme hinzu:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
  1. Fügen Sie den Cassandra-Benutzer mit Lese- und Schreibberechtigung zu /jdk_install_location/lib/management/jmxremote.access hinzu
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
  1. Starten Sie Cassandra neu
  2. Führen Sie nodetool mit dem Cassandra-Benutzer und dem Kennwort aus.
$ nodetool status -u cassandra -pw cassandra

Zusammenfassung:

In diesem Lernprogramm werden die Sicherheit in Cassandra und die Konfiguration der Datei Cassandra.yaml zum Aktivieren der Sicherheit erläutert. Außerdem wird erläutert, wie ein neues Benutzerkonto erstellt, Berechtigungen zugewiesen, die Firewall konfiguriert usw. werden können.