Cassandra JMX-autentisering og autorisasjon: Opprett bruker

Det er to typer sikkerhet i Apache Cassandra og Datastax enterprise.

  • Intern autentisering
  • autorisasjon

Hva er intern autentisering og autorisasjon

Intern autentisering er i utgangspunktet å validere brukertilkobling. Brukeren er autentisert med innlogging og passord. Alle brukerkontoene administreres i Cassandra internt.

Intern autorisasjon handler om brukers tillatelse. Den omhandler hvilke handlinger brukeren kan utføre. For eksempel kan vi gi brukertillatelse som hvilken bruker som kun har tillatelse til å lese data, hvilken bruker som har tillatelse til å skrive data og hvilken bruker som har tillatelse til å slette data.

Autentisering kan imidlertid også styres eksternt med Kerberos (Kerberos brukes til å administrere legitimasjon sikkert) og LDAP (LDAP brukes til å holde autoritativ informasjon om kontoene, for eksempel hva de har tilgang til).

Ekstern autentisering er autentiseringen som støttes med Kerberos og LDAP. Apache Cassandra støtter ikke ekstern autentisering.

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

Konfigurer autentisering og autorisasjon

In Cassandra, som standard er autentiserings- og autorisasjonsalternativer deaktivert. Du må konfigurere Cassandra.yaml-fil for å aktivere autentisering og autorisasjon.

Open Cassandra.yaml-fil og linjer for fjerning av kommentarer som omhandler intern autentisering og autorisasjon.

Konfigurer autentisering og autorisasjon

  • In Cassandrayaml-fil, som standard er autentiseringsverdien 'AllowAllAuthenticator'. Endre denne autentiseringsverdien fra 'AllowAllAuthenticator' til 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Tilsvarende, i Cassandra.yaml-fil, som standard vil autorisasjonsverdien være 'AllowAllAuthorizor'. Endre denne autorisasjonsverdien fra 'AllowAllAuthorizor' til 'com.datastax.bdp.cassandra.auth.CassandraAutorisert'.

Logge inn

Nå er autentisering aktivert, hvis du prøver å få tilgang til et hvilket som helst tasteområde, Cassandra vil returnere en feil.

Som standard Cassandra gir superkontoen brukernavnet 'cassandra' og passordet 'cassandra'. Ved å logge inn på 'Cassandra' konto, kan du gjøre hva du vil.

La oss se skjermbildet nedenfor for dette, der det ikke vil tillate deg å logge på hvis du ikke bruker standarden Cassandra "brukernavn" og "passord".

Logge inn

Nå, i det andre skjermbildet, kan du se etter bruk Cassandra standard påloggingsinformasjon, kan du logge på.

Du kan også opprette en annen bruker med denne kontoen. Det anbefales å endre passordet fra standard. Her er eksempelet på innlogging Cassandra bruker og endre standard passord.

Logge inn

alter user cassandra with password 'newpassword';

Opprett ny bruker

Nye kontoer kan opprettes med 'Cassandra' regnskap.

For å opprette en ny bruker, logg inn, passordet spesifiseres sammen med om brukeren er superbruker eller ikke. Bare superbruker kan opprette nye brukere.

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

Du kan få en liste over alle brukere etter følgende syntaks.

list users;

Opprett ny bruker

Brukere kan droppes av følgende syntaks.

drop user laura;

autorisasjon

Autorisasjon er å tildele tillatelse til brukere om hvilken handling en bestemt bruker kan utføre.

Her er den generelle syntaksen for å tildele tillatelse til brukere.

GRANT permission ON resource TO user

Det er følgende typer tillatelser som kan gis til brukeren.

  1. ALLE
  2. ENDRE
  3. GODKJENT
  4. SKAPE
  5. DROP
  6. MODIFISER
  7. VELG

Her er eksempler på tildeling av tillatelse til brukeren.

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 bruker 'laura' er opprettet med passord 'newhire'.

Her er eksempelet der brukeren 'laura' prøver å få tilgang til emp_bonus-tabellen. Laura har bare tillatelse til å få tilgang til dev.emp og ingen tillatelse til denne tabellen dev.emp_bonus, det er grunnen til at en feil ble returnert.

autorisasjon

select* form emp_bonus;

Du kan få en liste over alle tillatelser som er tildelt brukeren. Her er eksempelet på å få tillatelsesinformasjon.

autorisasjon

list all permissions of laura;

Du kan også liste opp alle tillatelsene på ressursen. Her er eksempelet på å få tillatelse fra et bord.

autorisasjon

list all permissions on dev.emp;

Konfigurering av brannmur

Hvis brannmuren kjører, må følgende porter åpnes for kommunikasjon mellom noder, inkludert noen Cassandra havner. Hvis Cassandra porter vil ikke bli åpnet, Cassandra noder vil fungere som frittstående databaseserver i stedet for å bli med i databaseklyngen.

Cassandra Klientporter

Portnummer Tekniske beskrivelser
9042 Cassandra Klientport
9160 Cassandra Client Port Thrift

Cassandra Internodeporter

Portnummer Tekniske beskrivelser
7000 Cassandra internode klynge kommunikasjon
7001 Cassandra SSL internode klyngekommunikasjon
7199 Cassandra JMX overvåkingsport

Offentlige havner

Portnummer Tekniske beskrivelser
22 SSH-port
8888 OpsCenter-nettstedet. Nettleser http-forespørsel.

Cassandra OpsCenter-porter

Portnummer Tekniske beskrivelser
61620 OpsCenter overvåkingsport.
61621 Opscenter agent port

Aktiverer JMX-autentisering

Med standardinnstillingene for Cassandra, JMX kan bare nås fra den lokale verten. Hvis du vil ha ekstern tilgang til JMX, endre LOCAL_JMX-innstillingen i Cassandra-env.sh og aktiver autentisering eller SSL.

Etter å ha aktivert JMX-autentisering, sørg for OpsCenter og nodetool er konfigurert til å bruke autentisering.

Prosedyre

Det er følgende trinn for å aktivere JMX-autentisering.

  1. I cassandra-env.sh-filen legger du til eller oppdaterer følgende linjer.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

Endre også LOCAL_JMX-innstillingen Cassandra-env.sh

LOCAL_JMX=no
  1. Kopier jmxremote.password.template fra /jdk_install_location/lib/management/ til /etc/cassandra/ og gi den nytt navn til jmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Endre eierskapet til jmxremote.password til brukeren du kjører Cassandra med og endre tillatelse til kun å lese
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. Rediger jmxremote.password og legg til brukeren og passordet for JMX-kompatible verktøy:
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. Legg til Cassandra bruker med lese- og skrivetillatelse til /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. Restart Cassandra
  2. Kjør nodetool med Cassandra bruker og passord.
$ nodetool status -u cassandra -pw cassandra

Sammendrag

Denne opplæringen forklarer om sikkerhet i Cassandra og konfigurere Cassandra.yaml-fil for å aktivere sikkerhet. I tillegg til dette forklarer den også hvordan ny brukerkonto kan opprettes, tildeling av tillatelser, konfigurering av brannmuren, og så videre.