Cassandra-beveiliging: gebruiker aanmaken & Authenticatie met JMX

Inhoudsopgave:

Anonim

Er zijn twee soorten beveiliging in Apache Cassandra en Datastax Enterprise.

  • Interne authenticatie
  • Autorisatie

In deze tutorial leer je,

  • Wat is interne authenticatie en autorisatie
  • Configureer verificatie en autorisatie
  • Inloggen
  • Maak een nieuwe gebruiker aan
  • Autorisatie
  • Firewall configureren
  • JMX-verificatie inschakelen

Wat is interne authenticatie en autorisatie

Interne authenticatie is in feite het valideren van de gebruikersverbinding. De gebruiker wordt geauthenticeerd met login en wachtwoord. Alle gebruikersaccounts worden intern in Cassandra beheerd.

Interne autorisatie betreft de toestemming van de gebruiker. Het behandelt welke acties de gebruiker kan uitvoeren. We kunnen de gebruiker bijvoorbeeld toestemming geven, zoals welke gebruiker alleen toestemming heeft om gegevens te lezen, welke gebruiker toestemming heeft om gegevens te schrijven en welke gebruiker toestemming heeft om gegevens te verwijderen.

Authenticatie kan echter ook extern worden beheerd met Kerberos (Kerberos wordt gebruikt om inloggegevens veilig te beheren) en LDAP (LDAP wordt gebruikt voor het bewaren van gezaghebbende informatie over de accounts, zoals waartoe ze toegang hebben).

Externe authenticatie is de authenticatie die wordt ondersteund met Kerberos en LDAP. Apache Cassandra ondersteunt geen externe authenticatie.

Alleen datastax enterprise ondersteunt externe authenticatie met Kerberos en LDAP. Terwijl interne authenticatie wordt ondersteund in zowel Apache Cassandra als Datastax Enterprise.

Configureer verificatie en autorisatie

In Cassandra zijn authenticatie- en autorisatie-opties standaard uitgeschakeld. U moet het Cassandra.yaml-bestand configureren om authenticatie en autorisatie in te schakelen.

Open Cassandra.yaml-bestand en verwijder commentaarregels die zich bezighouden met interne authenticatie en autorisatie.

  • In het bestand Cassandra.yaml is de authenticatorwaarde standaard 'AllowAllAuthenticator'. Wijzig deze authenticatorwaarde van 'AllowAllAuthenticator' in 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Evenzo is in het bestand Cassandra.yaml de autorisatorwaarde standaard 'AllowAllAuthorizor'. Wijzig deze autorisatorwaarde van 'AllowAllAuthorizor' in 'com.datastax.bdp.cassandra.auth.CassandraAuthorizor'.

Inloggen

Nu is authenticatie ingeschakeld, als je toegang probeert te krijgen tot een toetsruimte, zal Cassandra een foutmelding geven.

Cassandra geeft de superaccount standaard de gebruikersnaam 'cassandra' en het wachtwoord 'cassandra'. Door in te loggen op het 'Cassandra'-account, kunt u doen wat u wilt.

Laten we hiervoor de onderstaande schermafbeelding bekijken, waar het u niet toestaat om in te loggen als u niet de standaard Cassandra "gebruikersnaam" en "wachtwoord" gebruikt.

Nu, in de tweede schermafbeelding, kunt u zien dat u na het gebruik van de standaardinloggegevens van Cassandra kunt inloggen.

U kunt met dit account ook een andere gebruiker aanmaken. Het wordt aanbevolen om het standaardwachtwoord te wijzigen. Hier is het voorbeeld van het inloggen op een Cassandra-gebruiker en het wijzigen van het standaardwachtwoord.

alter user cassandra with password 'newpassword';

Maak een nieuwe gebruiker aan

Met het 'Cassandra'-account kunnen nieuwe accounts worden aangemaakt.

Om een ​​nieuwe gebruiker aan te maken, log in, het wachtwoord wordt gespecificeerd samen met of de gebruiker supergebruiker is of niet. Alleen een supergebruiker kan nieuwe gebruikers aanmaken.

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

U kunt een lijst van alle gebruikers krijgen aan de hand van de volgende syntaxis.

list users;

Gebruikers kunnen worden verwijderd door de volgende syntaxis.

drop user laura;

Autorisatie

Autorisatie is het toewijzen van toestemming aan gebruikers die welke actie een bepaalde gebruiker kan uitvoeren.

Hier is de algemene syntaxis voor het toewijzen van toestemming aan gebruikers.

GRANT permission ON resource TO user

Er zijn de volgende soorten toestemming die aan de gebruiker kunnen worden verleend.

  1. ALLE
  2. WIJZIGEN
  3. AUTORISEREN
  4. CREËER
  5. LATEN VALLEN
  6. AANPASSEN
  7. SELECTEER

Hier zijn voorbeelden van het toewijzen van toestemming aan de gebruiker.

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;

Er wordt een nieuwe gebruiker 'laura' aangemaakt met het wachtwoord 'newhire'.

Hier is het voorbeeld waarin gebruiker 'laura' probeert toegang te krijgen tot de emp_bonus-tabel. Laura heeft alleen toestemming voor toegang tot dev.emp en geen toestemming voor deze tabel dev.emp_bonus, daarom is er een fout geretourneerd.

select* form emp_bonus;

U kunt een lijst krijgen met alle machtigingen die aan de gebruiker zijn toegewezen. Hier is het voorbeeld van het verkrijgen van toestemmingsinformatie.

list all permissions of laura;

U kunt ook alle machtigingen voor de bron vermelden. Hier is het voorbeeld van het verkrijgen van toestemming van een tafel.

list all permissions on dev.emp;

Firewall configureren

Als de firewall actief is, moeten de volgende poorten worden geopend voor communicatie tussen knooppunten, inclusief enkele Cassandra-poorten. Als Cassandra-poorten niet worden geopend, zullen Cassandra-knooppunten fungeren als zelfstandige databaseserver in plaats van zich bij het databasecluster aan te sluiten.

Cassandra Client-poorten

Poortnummer

Omschrijving

9042

Cassandra Client-poort

9160

Cassandra Client Port Thrift

Cassandra Internode-poorten

Poortnummer

Omschrijving

7000

Cassandra internode cluster communicatie

7001

Cassandra SSL-internode-clustercommunicatie

7199

Cassandra JMX-bewakingspoort

Openbare poorten

Poortnummer

Omschrijving

22

SSH-poort

8888

OpsCenter-website. Browser http-verzoek.

Cassandra OpsCenter-poorten

Poortnummer

Omschrijving

61620

OpsCenter monitoring poort.

61621

Opscenter-agentpoort

JMX-verificatie inschakelen

Met de standaardinstellingen van Cassandra is JMX alleen toegankelijk vanaf de localhost. Als u op afstand toegang wilt krijgen tot JMX, wijzigt u de instelling LOCAL_JMX in Cassandra-env.sh en schakelt u authenticatie of SSL in.

Na het inschakelen van JMX-authenticatie, moet u ervoor zorgen dat OpsCenter en nodetool zijn geconfigureerd om authenticatie te gebruiken.

Procedure

Er zijn de volgende stappen om JMX-authenticatie in te schakelen.

  1. Voeg in het bestand cassandra-env.sh de volgende regels toe of werk deze bij.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

Wijzig ook de instelling LOCAL_JMX in Cassandra-env.sh

LOCAL_JMX=no
  1. Kopieer de jmxremote.password.template van / jdk_install_location / lib / management / naar / etc / cassandra / en hernoem het naar jmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Wijzig het eigendom van jmxremote.password in de gebruiker waarmee u Cassandra gebruikt en wijzig de toestemming om alleen te lezen
chown cassandra:cassandra /etc/cassandra/jmxremote.passwordchmod 400 /etc/cassandra/jmxremote.password
  1. Bewerk jmxremote.password en voeg de gebruiker en het wachtwoord toe voor JMX-compatibele hulpprogramma's:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
  1. Voeg de Cassandra-gebruiker met lees- en schrijfrechten toe aan /jdk_install_location/lib/management/jmxremote.access
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
  1. Start Cassandra opnieuw op
  2. Voer nodetool uit met de Cassandra-gebruiker en het wachtwoord.
$ nodetool status -u cassandra -pw cassandra

Overzicht:

Deze tutorial legt uit over beveiliging in Cassandra en het configureren van Cassandra.yaml-bestand om beveiliging in te schakelen. Daarnaast wordt er ook uitgelegd hoe een nieuw gebruikersaccount kan worden aangemaakt, toestemming kan worden gegeven, de firewall kan worden geconfigureerd, enzovoort.