Cassandra Security: Skapa användare & Autentisering med JMX

Innehållsförteckning:

Anonim

Det finns två typer av säkerhet i Apache Cassandra och Datastax-företaget.

  • Intern autentisering
  • Tillstånd

I den här handledningen lär du dig,

  • Vad är intern autentisering och auktorisering
  • Konfigurera autentisering och auktorisering
  • Loggar in
  • Skapa ny användare
  • Tillstånd
  • Konfigurera brandväggen
  • Aktiverar JMX-autentisering

Vad är intern autentisering och auktorisering

Intern autentisering validerar i princip användaranslutningen. Användaren är autentiserad med inloggning och lösenord. Alla användarkonton hanteras internt i Cassandra.

Intern auktorisering handlar om användarens tillstånd. Den handlar om vilka åtgärder användaren kan utföra. Vi kan till exempel ge användarens behörighet, till exempel vilken användare som bara har behörighet att läsa data, vilken användare som har dataskrivbehörighet och vilken användare som har behörighet att radera data.

Autentisering kan dock också styras externt med Kerberos (Kerberos används för att hantera autentiseringsuppgifter säkert) och LDAP (LDAP används för att hålla auktoritativ information om kontona, till exempel vad de får åtkomst till).

Extern autentisering är den autentisering som stöds med Kerberos och LDAP. Apache Cassandra stöder inte extern autentisering.

Endast datastax-företag stöder extern autentisering med Kerberos och LDAP. Medan intern autentisering stöds både i Apache Cassandra och Datastax-företag.

Konfigurera autentisering och auktorisering

I Cassandra är autentiserings- och auktoriseringsalternativ som standard inaktiverade. Du måste konfigurera Cassandra.yaml-filen för att möjliggöra autentisering och auktorisering.

Öppna filen Cassandra.yaml och avmarkera rader som handlar om intern autentisering och auktorisering.

  • I filen Cassandra.yaml är autentiseringsvärdet som standard 'AllowAllAuthenticator'. Ändra detta autentiseringsvärde från 'AllowAllAuthenticator' till 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • På samma sätt, i Cassandra.yaml-filen, kommer autentiseringsvärdet som standard att vara 'AllowAllAuthorizor'. Ändra detta auktoriseringsvärde från 'AllowAllAuthorizor' till 'com.datastax.bdp.cassandra.auth.CassandraAuthorizor'.

Loggar in

Nu är autentisering aktiverad, om du försöker komma åt något nyckelutrymme returnerar Cassandra ett fel.

Som standard tillhandahåller Cassandra superkontot med användarnamnet 'cassandra' och lösenordet 'cassandra'. Genom att logga in på "Cassandra" -kontot kan du göra vad du vill.

Låt oss se nedanstående skärmdump för detta, där det inte tillåter dig att logga in om du inte använder standard Cassandra "användarnamn" och "lösenord".

Nu, i den andra skärmdumpen, kan du se efter att ha använt Cassandra standardinloggningsuppgifter, kan du logga in.

Du kan också skapa en annan användare med det här kontot. Det rekommenderas att ändra lösenordet från standard. Här är exemplet med inloggning Cassandra-användare och ändra standardlösenord.

alter user cassandra with password 'newpassword';

Skapa ny användare

Nya konton kan skapas med kontot 'Cassandra'.

För att skapa en ny användare, logga in, anges lösenordet tillsammans med om användaren är superanvändare eller inte. Endast superanvändare kan skapa nya användare.

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

Du kan få en lista över alla användare med följande syntax.

list users;

Användare kan tappas av följande syntax.

drop user laura;

Tillstånd

Auktorisering är tilldelningstillstånd för användare att vilken åtgärd en viss användare kan utföra.

Här är den generiska syntaxen för tilldelning av behörighet till användare.

GRANT permission ON resource TO user

Det finns följande typer av behörigheter som kan beviljas användaren.

  1. ALLT
  2. ÄNDRA
  3. Auktorisera
  4. SKAPA
  5. SLÄPPA
  6. ÄNDRA
  7. VÄLJ

Här är exempel på tilldelning av behörighet till användaren.

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;

En ny användare 'laura' skapas med lösenordet 'newhire'.

Här är exemplet där användaren 'laura' försöker komma åt emp_bonus-tabellen. Laura har bara behörighet att komma åt dev.emp och ingen behörighet till denna tabell dev.emp_bonus det är därför ett fel returnerades.

select* form emp_bonus;

Du kan få en lista över alla behörigheter som tilldelats användaren. Här är exemplet på att få tillståndsinformation.

list all permissions of laura;

Du kan också lista alla behörigheter på resursen. Här är exemplet på att få tillstånd från en tabell.

list all permissions on dev.emp;

Konfigurera brandväggen

Om brandväggen är igång måste följande portar öppnas för kommunikation mellan noder inklusive vissa Cassandra-portar. Om Cassandra-portar inte öppnas fungerar Cassandra-noder som fristående databasserver snarare än att gå med i databaskluster.

Cassandra klientportar

Portnummer

Beskrivning

9042

Cassandra klientport

9160

Cassandra Client Port Thrift

Cassandra Internode-portar

Portnummer

Beskrivning

7000

Cassandra internode-klusterkommunikation

7001

Cassandra SSL-internod-klusterkommunikation

7199

Cassandra JMX övervakningsport

Offentliga hamnar

Portnummer

Beskrivning

22

SSH-port

8888

OpsCenters webbplats. Webbläsare http-begäran.

Cassandra OpsCenter-portar

Portnummer

Beskrivning

61620

OpsCenter övervakningsport.

61621

Port för Opscenter-agent

Aktiverar JMX-autentisering

Med standardinställningarna för Cassandra kan JMX endast nås från localhost. Om du vill komma åt JMX på distans, ändra inställningen LOCAL_JMX i Cassandra-env.sh och aktivera autentisering eller SSL.

När du har aktiverat JMX-autentisering, se till att OpsCenter och nodetool är konfigurerade för att använda autentisering.

Procedur

Det finns följande steg för att aktivera JMX-autentisering.

  1. Lägg till eller uppdatera följande rader i filen 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"

Ändra också inställningen LOCAL_JMX i Cassandra-env.sh

LOCAL_JMX=no
  1. Kopiera jmxremote.password.templet från / jdk_install_location / lib / management / till / etc / cassandra / och byt namn på det tilljmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Ändra äganderätten till jmxremote.password till användaren du kör Cassandra med och ändra behörighet att bara läsa
chown cassandra:cassandra /etc/cassandra/jmxremote.passwordchmod 400 /etc/cassandra/jmxremote.password
  1. Redigera jmxremote.password och lägg till användaren och lösenordet för JMX-kompatibla verktyg:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
  1. Lägg till Cassandra-användaren med läs- och skrivbehörighet till /jdk_install_location/lib/management/jmxremote.access
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
  1. Starta om Cassandra
  2. Kör nodetool med Cassandra-användaren och lösenordet.
$ nodetool status -u cassandra -pw cassandra

Sammanfattning:

Denna handledning förklarar om säkerhet i Cassandra och konfigurering av filen Cassandra.yaml för att möjliggöra säkerhet. Förutom detta förklarar det också hur nytt användarkonto kan skapas, tilldelning av behörighet, konfigurering av brandväggen och så vidare.