Cassandra JMX Authentication & Authorization: Opret bruger

Der er to typer sikkerhed i Apache Cassandra og Datastax enterprise.

  • Intern godkendelse
  • Tilladelse

Hvad er intern godkendelse og godkendelse

Intern godkendelse er grundlæggende at validere brugerforbindelse. Brugeren er autentificeret med login og adgangskode. Alle brugerkonti administreres i Cassandra internt.

Intern autorisation omhandler brugerens tilladelse. Den omhandler hvilke handlinger brugeren kan udføre. For eksempel kan vi give brugerens tilladelse, såsom hvilken bruger der kun har tilladelse til at læse data, hvilken bruger der har tilladelse til at skrive data og hvilken bruger der har tilladelse til at slette data.

Autentificering kan dog også styres eksternt med Kerberos (Kerberos bruges til at administrere legitimationsoplysninger sikkert) og LDAP (LDAP bruges til at opbevare autoritative oplysninger om konti, såsom hvad de har tilladelse til at få adgang til).

Ekstern godkendelse er den godkendelse, der understøttes af Kerberos og LDAP. Apache Cassandra understøtter ikke ekstern godkendelse.

Kun datastax enterprise understøtter ekstern godkendelse med Kerberos og LDAP. Mens intern godkendelse understøttes både i Apache Cassandra samt Datastax enterprise.

Konfigurer godkendelse og godkendelse

In Cassandra, som standard er godkendelses- og autorisationsindstillinger deaktiveret. Du skal konfigurere Cassandra.yaml-fil til at aktivere godkendelse og godkendelse.

Åbne Cassandra.yaml-fil og uncomment-linjer, der omhandler intern godkendelse og godkendelse.

Konfigurer godkendelse og godkendelse

  • In Cassandra.yaml-fil, som standard er autentificeringsværdien 'AllowAllAuthenticator'. Skift denne autentificeringsværdi fra 'AllowAllAuthenticator' til 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Tilsvarende i Cassandra.yaml-fil, vil autorisatorværdien som standard være 'AllowAllAuthorizor'. Skift denne godkendelsesværdi fra 'AllowAllAuthorizor' til 'com.datastax.bdp.cassandra.auth.CassandraAutoriseret'.

Logger ind

Nu er godkendelse aktiveret, hvis du forsøger at få adgang til et hvilket som helst tasterum, Cassandra vil returnere en fejl.

Som standard Cassandra giver superkontoen brugernavnet 'cassandra' og adgangskoden 'cassandra'. Ved at logge ind på 'Cassandra' konto, kan du gøre, hvad du vil.

Lad os se nedenstående skærmbillede for dette, hvor det ikke vil tillade dig at logge ind, hvis du ikke bruger standarden Cassandra "brugernavn" og "adgangskode".

Logger ind

Nu, i det andet skærmbillede, kan du se efter brug Cassandra standard login-legitimationsoplysninger, er du i stand til at logge ind.

Du kan også oprette en anden bruger med denne konto. Det anbefales at ændre adgangskoden fra standarden. Her er et eksempel på login Cassandra bruger og ændre standardadgangskoden.

Logger ind

alter user cassandra with password 'newpassword';

Opret ny bruger

Nye konti kan oprettes med 'Cassandra' konto.

For at oprette en ny bruger, login, er adgangskoden angivet sammen med om brugeren er superbruger eller ej. Kun Superbruger kan oprette nye brugere.

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

Du kan få en liste over alle brugere efter følgende syntaks.

list users;

Opret ny bruger

Brugere kan droppes af følgende syntaks.

drop user laura;

Tilladelse

Autorisation er tildeling af tilladelse til brugere, hvilken handling en bestemt bruger kan udføre.

Her er den generiske syntaks for tildeling af tilladelse til brugere.

GRANT permission ON resource TO user

Der er følgende typer tilladelser, der kan gives til brugeren.

  1. ALLE
  2. ÆNDRE
  3. GODKEND
  4. SKAB
  5. DROP
  6. MODIFICERE
  7. SELECT

Her er eksempler på tildeling af tilladelse til brugeren.

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 bruger 'laura' oprettes med adgangskoden 'newhire'.

Her er eksemplet, hvor bruger 'laura' forsøger at få adgang til emp_bonus-tabellen. Laura har kun tilladelse til at få adgang til dev.emp og ingen tilladelse til denne tabel dev.emp_bonus, det er derfor en fejl blev returneret.

Tilladelse

select* form emp_bonus;

Du kan få en liste over alle tilladelser, der er tildelt brugeren. Her er eksemplet på at få tilladelsesoplysninger.

Tilladelse

list all permissions of laura;

Du kan også liste alle tilladelser på ressourcen. Her er eksemplet på at få tilladelse fra et bord.

Tilladelse

list all permissions on dev.emp;

Konfiguration af firewall

Hvis firewall'en kører, skal følgende porte åbnes for kommunikation mellem noder, inklusive nogle Cassandra havne. Hvis Cassandra porte vil ikke blive åbnet, Cassandra noder vil fungere som selvstændig databaseserver i stedet for at slutte sig til databaseklyngen.

Cassandra Klientporte

Portnummer Description
9042 Cassandra Klientport
9160 Cassandra Client Port Thrift

Cassandra Internode porte

Portnummer Description
7000 Cassandra internode klynge kommunikation
7001 Cassandra SSL internode klyngekommunikation
7199 Cassandra JMX overvågningsport

Offentlige Havne

Portnummer Description
22 SSH port
8888 OpsCenter hjemmeside. Browser http-anmodning.

Cassandra OpsCenter-porte

Portnummer Description
61620 OpsCenter overvågningsport.
61621 Opscenter agent port

Aktivering af JMX-godkendelse

Med standardindstillingerne på Cassandra, JMX kan kun tilgås fra den lokale vært. Hvis du vil have fjernadgang til JMX, skal du ændre LOCAL_JMX-indstillingen Cassandra-env.sh og aktiver godkendelse eller SSL.

Når du har aktiveret JMX-godkendelse, skal du sørge for OpsCenter og nodetool er konfigureret til at bruge godkendelse.

Procedure

Der er følgende trin for at aktivere JMX-godkendelse.

  1. Tilføj eller opdater følgende linjer 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"

Skift også LOCAL_JMX-indstillingen til Cassandra-env.sh

LOCAL_JMX=no
  1. Kopier jmxremote.password.template fra /jdk_install_location/lib/management/ til /etc/cassandra/ og omdøb den til jmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Skift ejerskabet af jmxremote.password til den bruger, du kører Cassandra med og ændre tilladelse til kun at læse
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. Rediger jmxremote.password og tilføj brugeren og adgangskoden til JMX-kompatible hjælpeprogrammer:
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. Tilsæt Cassandra bruger med læse- og skrivetilladelse til /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. Genstart Cassandra
  2. Kør nodetool med Cassandra bruger og adgangskode.
$ nodetool status -u cassandra -pw cassandra

Resumé

Denne tutorial forklarer om sikkerhed i Cassandra og konfigurering Cassandra.yaml-fil for at aktivere sikkerhed. Udover dette forklarer den også, hvordan ny brugerkonto kan oprettes, tildeling af tilladelser, konfiguration af firewallen og så videre.