Cassandra JMX Authentication & Authorization: Opret bruger

⚡ Smart opsummering

Cassandra Sikkerhed hviler på intern godkendelse, rolletilladelser, firewallregler og JMX-adgangskontrol. Denne side viser, hvordan man aktiverer hvert lag, opretter brugere, giver tilladelser og sikrer fjernadgang til nodetools.

  • 🔐 To lag: Godkendelse beviser, hvem en bruger er; autorisation bestemmer, hvad brugeren må gøre.
  • 🇧🇷 Aktivér det: Begge er som standard slået fra og aktiveres via indstillingerne for autentificering og autorisation.
  • 👤 Standardkonto: Den indbyggede Cassandra-superbruger opretter alle anden konti, så skift dens adgangskode med det samme.
  • 🔑 Tilskudsmodel: Tilladelser som SELECT, MODIFY og ALTER gives pr. ressource med GRANT.
  • 📡 Portkontrol: Åbn 7000, 7001, 7199 og 9042 mellem noder, og hold JMX autentificeret.

Cassandra JMX-godkendelse og -autorisation

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 en brugerforbindelse. Brugeren godkendes med login og adgangskode. Alle brugerkonti administreres i Cassandra internt.

Intern autorisation omhandler en brugers tilladelser. Det omhandler, hvilke handlinger en bruger kan udføre. For eksempel kan vi give tilladelser, 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.

Godkendelse kan dog også styres eksternt med Kerberos (Kerberos bruges til at administrere legitimationsoplysninger sikkert) og LDAP (LDAP bruges til at opbevare autoritative oplysninger om kontiene, f.eks. hvad de har 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, hvorimod 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-filen for at aktivere godkendelse og autorisation.

Åbn cassandra.yaml og fjern kommentaren fra linjerne, der omhandler intern godkendelse og autorisation, som vist nedenfor.

cassandra.yaml autentificerings- og autoriseringslinjer er ukommenterede

  • I cassandra.yaml er godkendelsesværdien som standard 'AllowAllAuthenticator'. Skift denne godkendelsesværdi fra 'AllowAllAuthenticator' til 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • På samme måde vil autorisationsværdien i cassandra.yaml som standard være 'AllowAllAuthorizer'. Skift denne autorisationsværdi fra 'AllowAllAuthorizer' til 'com.datastax.bdp.cassandra.auth'.CassandraAutoriseret'.

Disse to klassenavne er DataStax Enterprise-værdierne. På open source Apache Cassandra de samme indstillinger tager PasswordAuthenticator og CassandraAuthorizer, og legitimationsoplysningerne findes derefter i system_auth nøglerum, hvis replikationsfaktor skal hæves til over én.

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'-kontoen 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".

Login afvist i cqlsh, når standardoplysningerne ikke bruges

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

Vellykket cqlsh-login ved hjælp af standard Cassandra-legitimationsoplysninger

Du kan også oprette en anden bruger med denne konto. Det anbefales at ændre standardadgangskoden. Her er et eksempel på at logge ind som Cassandra bruger og ændring af standardadgangskoden.

alter user cassandra with password 'newpassword';

Opret ny bruger

Nye konti kan oprettes med 'cassandra'-kontoen.

For at oprette en ny bruger skal login og adgangskode angives sammen med om brugeren er superbruger eller ej. Kun en 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;

Outputtet viser alle konti sammen med dets superbrugerflag.

Output fra kommandoen `list users`, der viser konti og superbrugerflag

Brugere kan droppes af følgende syntaks.

drop user laura;

Tilladelse

Autorisation er tildeling af tilladelser til brugere og beslutningen om, hvilke handlinger 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. BEMYNDIGE
  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 brugeren 'laura' forsøger at få adgang til tabellen emp_bonus. Laura har kun tilladelse til at få adgang til dev.emp og ingen tilladelse til tabellen dev.emp_bonus, hvilket er grunden til, at der blev returneret en fejl.

Fejl returneret, når laura forespørger emp_bonus-tabellen uden tilladelse

select* form emp_bonus;

Du kan få en liste over alle tilladelser, der er tildelt brugeren. Her er et eksempel på, hvordan man henter tilladelsesoplysninger.

Output af en liste over alle Lauras tilladelser

list all permissions of laura;

Du kan også liste alle tilladelser på en ressource. Her er et eksempel på at hente tilladelser fra en tabel.

Output af liste over alle tilladelser på dev.emp

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ændige databaseservere i stedet for at blive en del af databaseklyngen.

Cassandra Klientporte

Portnummer Beskrivelse
9042 Cassandra Klientport
9160 Cassandra Client Port Thrift

Cassandra Internode porte

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

Offentlige Havne

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

Cassandra OpsCenter-porte

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

Nuværende drivere bruger kun 9042; port 9160 betjener den ældre Thrift-grænseflade og kan forblive lukket på nye klynger.

Aktivering af JMX-godkendelse

Med standardindstillingerne på Cassandra, JMX kan kun tilgås fra localhost. Hvis du vil have fjernadgang til JMX, skal du ændre LOCAL_JMX-indstillingen i cassandra-env.sh og aktivere 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"

    Rediger også LOCAL_JMX-indstillingen i cassandra-env.sh.

    LOCAL_JMX=no
  2. 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
  3. 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
  4. Rediger jmxremote.password og tilføj brugeren og adgangskoden til JMX-kompatible hjælpeprogrammer:
    monitorRole QED 
    controlRole R&D 
    cassandra cassandrapassword
  5. 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
  6. Genstart Cassandra.
  7. Kør nodetool med Cassandra bruger og adgangskode.
    $ nodetool status -u cassandra -pw cassandra

Ofte Stillede Spørgsmål

Begge findes i system_auth-nøgleområdet, i tabellerne roles og role_permissions. Da en mistet replika af system_auth kan låse alle ude, skal dens replikeringsfaktor øges, før godkendelse i produktion aktiveres.

CQL-roller erstattede den ældre brugersyntaks. En rolle har tilladelser og kan gives til andre roller, så CREATE ROLE erstatter CREATE USER i aktuelle udgivelser, som beholder brugerkommandoerne som aliasser.

Nej. Godkendelse bekræfter kun identitet; adgangskoder krydser stadig netværket uden varsel, medmindre client_encryption_options er aktiveret. Aktiver TLS separat for klient-til-node- og node-til-node-trafik.

Opret en dedikeret superbruger, og skift derefter den indbyggede Cassandra-adgangskode, eller slet kontoen. At lade det dokumenterede Cassandra/Cassandra-par være aktivt er den mest almindelige metode. Cassandra fejlkonfiguration.

Tilladelser cachelagres. En ændring træder først i kraft, når tilladelsernes gyldighedsvindue udløber, så forkort indstillingen i cassandra.yaml eller genstart noden, når du tester en tildeling eller tilbagekaldelse.

Uautoriseret JMX på port 7199 tillader fuld nodekontrol, inklusive nedlukning. Cassandra binder den derfor lokalt, og fjernadgang bør kun åbnes med en adgangskodefil eller SSL på plads.

Maskinlæringsmodeller profilerer normale forespørgselsformer, logintider og kildeadresser pr. rolle og markerer derefter afvigelser, såsom en applikationskonto, der læser et ikke-relateret nøgleområde. Det afslører misbrug af legitimationsoplysninger, der viser fejl i statiske regler.

Copilot laver hurtigt udkast til CREATE ROLE- og GRANT-sætninger fra en kommentar, men det har en tendens til at antyde brede tilladelser. Revse hver genereret bevilling mod mindste privilegier, før den køres live klynge.

Opsummer dette indlæg med: