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.
- 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".
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.
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;
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.
- ALLA
- ÄNDRA
- AUKTORISERA
- SKAPA
- FALLA
- ÄNDRA
- 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.
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.
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.
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.
- 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
- 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
- Ä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
- Redigera jmxremote.password och lägg till användaren och lösenordet för JMX-kompatibla verktyg:
monitorRole QED controlRole R&D cassandra cassandrapassword
- 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
- Omstart Cassandra
- 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.