Cassandra JMX-autentisering och auktorisering: Skapa användare

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

  • Intern autentisering
  • Tillstånd

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 i Cassandra internt.

Intern auktorisering handlar om användarens tillstånd. Den handlar om vilka åtgärder användaren kan utföra. Till exempel kan vi ge användarens behörighet som vilken användare som endast har dataläsbehörighet, vilken användare som har dataskrivbehörighet och vilken användare som har behörighet att radera data.

Autentisering kan dock även 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 har tillgång till).

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

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

Konfigurera autentisering och auktorisering

In Cassandra, som standard är autentiserings- och auktoriseringsalternativ inaktiverade. Du måste konfigurera Cassandra.yaml-fil för att aktivera autentisering och auktorisering.

Öppet Cassandra.yaml-fil och rader för att avbryta kommentarer som handlar om intern autentisering och auktorisering.

Konfigurera autentisering och auktorisering

  • In Cassandra.yaml-fil, som standard är autentiseringsvärdet 'AllowAllAuthenticator'. Ändra detta autentiseringsvärde från 'AllowAllAuthenticator' till 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • På samma sätt, i Cassandra.yaml-fil, som standard är auktoriseringsvärdet 'AllowAllAuthorizor'. Ändra detta behörighetsvärde från 'AllowAllAuthorizor' till 'com.datastax.bdp.cassandra.auth.CassandraAuktoriserare'.

Inloggning

Nu är autentisering aktiverad, om du försöker komma åt något tangentutrymme, Cassandra kommer att returnera ett fel.

Som standard Cassandra ger superkontot användarnamnet "cassandra" och lösenordet "cassandra". Genom att logga in på 'Cassandra' konto 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".

Inloggning

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

Du kan också skapa en annan användare med detta konto. Det rekommenderas att ändra lösenordet från standard. Här är exemplet på inloggning Cassandra användare och ändra standardlösenordet.

Inloggning

alter user cassandra with password 'newpassword';

Skapa ny användare

Nya konton kan skapas med 'Cassandra' konto.

För att skapa en ny användare, logga in, lösenordet anges 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 enligt följande syntax.

list users;

Skapa ny användare

Användare kan släppas av följande syntax.

drop user laura;

Tillstånd

Auktorisering är att tilldela behörighet till användare att vilken åtgärd en viss användare kan utföra.

Här är den allmänna syntaxen för att tilldela behörighet till användare.

GRANT permission ON resource TO user

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

  1. ALLA
  2. ÄNDRA
  3. AUKTORISERA
  4. SKAPA
  5. FALLA
  6. ÄNDRA
  7. VÄLJA

Här är exempel på att tilldela 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.

Tillstånd

select* form emp_bonus;

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

Tillstånd

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 ett bord.

Tillstånd

list all permissions on dev.emp;

Konfigurera brandvägg

Om brandväggen är igång måste följande portar öppnas för kommunikation mellan noder inklusive några Cassandra hamnar. Om Cassandra portar kommer inte att öppnas, Cassandra noder kommer att fungera som fristående databasserver snarare än att gå med i databasklustret.

Cassandra Klientportar

Portnummer BESKRIVNING
9042 Cassandra Klientport
9160 Cassandra Client Port Thrift

Cassandra Internodportar

Portnummer BESKRIVNING
7000 Cassandra internodklusterkommunikation
7001 Cassandra SSL internod kluster kommunikation
7199 Cassandra JMX övervakningsport

Offentliga hamnar

Portnummer BESKRIVNING
22 SSH-port
8888 OpsCenters webbplats. Webbläsare http-förfrågan.

Cassandra OpsCenter-portar

Portnummer BESKRIVNING
61620 OpsCenter övervakningsport.
61621 Opscenter agentport

Aktiverar JMX-autentisering

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

Se till efter att ha aktiverat JMX-autentisering OpsCenter och nodetool är konfigurerade att använda autentisering.

Tillvägagångssätt

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 även LOCAL_JMX-inställningen Cassandra-env.sh

LOCAL_JMX=no
  1. Kopiera jmxremote.password.template från /jdk_install_location/lib/management/ till /etc/cassandra/ och byt namn på den tilljmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Ändra ägandet av jmxremote.password till den användare du kör Cassandra med och ändra behörighet att endast läsa
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. Redigera jmxremote.password och lägg till användaren och lösenordet för JMX-kompatibla verktyg:
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. Lägg till Cassandra användare med läs- och skrivbehörighet till /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. Omstart Cassandra
  2. Kör nodetool med Cassandra användare och lösenord.
$ nodetool status -u cassandra -pw cassandra

Sammanfattning

Denna handledning förklarar om säkerhet i Cassandra och konfigurera Cassandra.yaml-fil för att möjliggöra säkerhet. Utöver detta förklarar den också hur ett nytt användarkonto kan skapas, tilldelning av behörighet, konfigurering av brandväggen och så vidare.