Cassandra JMX autentifikacija i autorizacija: Stvorite korisnika

⚡ Pametni sažetak

Cassandra Sigurnost počiva na internoj autentifikaciji, dopuštenjima uloga, pravilima vatrozida i kontroli pristupa JMX-u. Ova stranica pokazuje kako omogućiti svaki sloj, stvoriti korisnike, dodijeliti dopuštenja i osigurati udaljeni pristup nodetool-u.

  • 🔐 Dva sloja: Autentifikacija dokazuje tko je korisnik; autorizacija odlučuje što taj korisnik smije učiniti.
  • ️ Omogući: Oba su prema zadanim postavkama isključena, a uključuju se putem postavki autentifikatora i autorizatora.
  • 👤 Zadani račun: Ugrađeni superkorisnik Cassandre stvara svaki drugi račun, stoga odmah promijenite njegovu lozinku.
  • 🔑 Model bespovratnih sredstava: Dozvole kao što su SELECT, MODIFY i ALTER dodjeljuju se po resursu s licencom GRANT.
  • 📡 Kontrola luke: Otvorite 7000, 7001, 7199 i 9042 između čvorova i održavajte JMX autentifikaciju.

Cassandra JMX autentifikacija i autorizacija

Postoje dvije vrste sigurnosti u Apache Cassandra i DataStax Enterprise.

  • Interna provjera autentičnosti
  • Autorizacija

Što je interna autentifikacija i autorizacija

Interna autentifikacija je u osnovi provjera valjanosti korisničke veze. Korisnik se autentificira prijavom i lozinkom. Svi korisnički računi se upravljaju u Cassandra interno.

Interna autorizacija se bavi korisničkim dopuštenjima. Odnosi se na radnje koje korisnik može izvršiti. Na primjer, možemo dati dopuštenja kao što je to koji korisnik ima samo dopuštenje za čitanje podataka, koji korisnik ima dopuštenje za pisanje podataka i koji korisnik ima dopuštenje za brisanje podataka.

Međutim, autentifikacija se može kontrolirati i izvana pomoću Kerberosa (Kerberos se koristi za sigurno upravljanje vjerodajnicama) i LDAP-a (LDAP se koristi za čuvanje autoritativnih informacija o računima, poput onoga čemu smiju pristupiti).

Vanjska provjera autentičnosti je provjera autentičnosti koju podržavaju Kerberos i LDAP. Apache Cassandra ne podržava vanjsku provjeru autentičnosti.

Samo DataStax Enterprise podržava vanjsku autentifikaciju s Kerberosom i LDAP-om, dok je interna autentifikacija podržana i u Apache Cassandra kao i DataStax Enterprise.

Konfigurirajte autentifikaciju i autorizaciju

In Cassandra, prema zadanim postavkama opcije autentifikacije i autorizacije su onemogućene. Morate konfigurirati datoteku cassandra.yaml za omogućavanje autentifikacije i autorizacije.

Otvorite cassandra.yaml i odkomentirajte retke koji se bave internom autentifikacijom i autorizacijom, kao što je prikazano dolje.

Redci autentifikatora i autorizatora cassandra.yaml bez komentara

  • U datoteci cassandra.yaml, prema zadanim postavkama, vrijednost autentifikatora je 'AllowAllAuthenticator'. Promijenite ovu vrijednost autentifikatora iz 'AllowAllAuthenticator' u 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Slično tome, u datoteci cassandra.yaml, prema zadanim postavkama, vrijednost autorizatora bit će 'AllowAllAuthorizer'. Promijenite ovu vrijednost autorizatora iz 'AllowAllAuthorizer' u 'com.datastax.bdp.cassandra.auth'.CassandraAutorizator'.

Ta dva naziva klasa su vrijednosti DataStax Enterprise. Na otvorenom kodu Apache Cassandra iste postavke uzimaju PasswordAuthenticator i CassandraAuthorizer, a vjerodajnice se zatim nalaze u system_auth prostor ključeva, čiji faktor replikacije treba podići iznad jedan.

Prijavljivanje

Sada je autentifikacija omogućena, ako pokušate pristupiti bilo kojem prostoru ključeva, Cassandra će vratiti grešku.

Po defaultu, Cassandra dodjeljuje super računu korisničko ime 'cassandra' i lozinku 'cassandra'. Prijavom na račun 'cassandra' možete raditi što god želite.

Pogledajmo donju snimku zaslona za ovo, gdje vam neće dopustiti prijavu ako ne koristite zadanu Cassandra “korisničko ime” i “lozinka”.

Prijava odbijena u cqlsh kada se ne koriste zadani podaci za prijavu.

Sada, na drugoj snimci zaslona, ​​možete vidjeti nakon korištenja Cassandra zadana vjerodajnica za prijavu, možete se prijaviti.

Uspješna prijava na cqlsh pomoću zadanih cassandra vjerodajnica

Također možete stvoriti drugog korisnika s ovim računom. Preporučuje se promjena lozinke s zadane. Evo primjera prijave kao Cassandra korisnika i promjenu zadane lozinke.

alter user cassandra with password 'newpassword';

Stvorite novog korisnika

Novi računi mogu se kreirati s računom 'cassandra'.

Za stvaranje novog korisnika navode se prijava i lozinka, kao i je li korisnik superkorisnik ili ne. Samo superkorisnik može stvarati nove korisnike.

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

Popis svih korisnika možete dobiti sljedećom sintaksom.

list users;

Izlaz navodi svaki račun zajedno s njegovom zastavom superkorisnika.

Izlaz naredbe list users koji prikazuje račune i zastavice superkorisnika

Korisnici se mogu ispustiti sljedećom sintaksom.

drop user laura;

Autorizacija

Autorizacija je dodjeljivanje dopuštenja korisnicima, odlučujući koje radnje određeni korisnik može izvršiti.

Ovdje je generička sintaksa za dodjelu dopuštenja korisnicima.

GRANT permission ON resource TO user

Postoje sljedeće vrste dopuštenja koja se mogu dodijeliti korisniku.

  1. SVE
  2. IZMIJENI
  3. OVLASTITI
  4. STVORITI
  5. KAP
  6. IZMJENITI
  7. SELECT

Ovdje su primjeri dodjele dopuštenja korisniku.

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;

Novi korisnik 'laura' je kreiran sa lozinkom 'newhire'.

Evo primjera gdje korisnica 'laura' pokušava pristupiti tablici emp_bonus. Laura ima samo dopuštenje za pristup tablici dev.emp i nema dopuštenje za tablicu dev.emp_bonus, zbog čega je vraćena greška.

Vraćena je greška kada laura bez dopuštenja upita tablicu emp_bonus

select* form emp_bonus;

Možete dobiti popis svih dopuštenja koja su dodijeljena korisniku. Evo primjera dobivanja informacija o dopuštenjima.

Izlaz popisa svih dozvola Laure

list all permissions of laura;

Također možete navesti sve dozvole za resurs. Evo primjera dobivanja dozvole iz tablice.

Izlaz popisa svih dozvola na dev.emp

list all permissions on dev.emp;

Konfiguriranje vatrozida

Ako vatrozid radi, sljedeći priključci moraju biti otvoreni za komunikaciju između čvorova, uključujući neke Cassandra luke. Ako Cassandra luke se neće otvoriti, Cassandra čvorovi će djelovati kao samostalni poslužitelji baza podataka umjesto da se pridružuju klasteru baza podataka.

Cassandra Portovi za klijente

Broj priključka Description
9042 Cassandra Port za klijenta
9160 Cassandra Štedljivost porta klijenta

Cassandra Internodijski priključci

Broj priključka Description
7000 Cassandra internode cluster komunikacija
7001 Cassandra SSL internode cluster komunikacija
7199 Cassandra JMX port za praćenje

Javne luke

Broj priključka Description
22 SSH priključak
8888 OpsCenter web stranica. http zahtjev preglednika.

Cassandra Priključci OpsCenter

Broj priključka Description
61620 Priključak za nadzor OpsCenter.
61621 Opscenter port agenta

Trenutni upravljački programi koriste samo 9042; port 9160 služi naslijeđenom Thrift sučelju i može ostati zatvoren na novim klasterima.

Omogućavanje JMX provjere autentičnosti

Sa zadanim postavkama Cassandra, JMX-u se može pristupiti samo s lokalnog hosta. Ako želite pristupiti JMX-u daljinski, promijenite postavku LOCAL_JMX u cassandra-env.sh i omogućite autentifikaciju ili SSL.

Nakon što omogućite JMX autentifikaciju, provjerite OpsCenter i nodetool su konfigurirani za korištenje provjere autentičnosti.

Postupak

Postoje sljedeći koraci za omogućavanje JMX autentifikacije.

  1. U datoteci cassandra-env.sh dodajte ili ažurirajte sljedeće retke.
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

    Također, promijenite postavku LOCAL_JMX u cassandra-env.sh.

    LOCAL_JMX=no
  2. Kopirajte jmxremote.password.template iz /jdk_install_location/lib/management/ u /etc/cassandra/ i preimenujte ga u jmxremote.password.
    cp /jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  3. Promijenite vlasništvo nad jmxremote.password na korisnika kojeg pokrećete Cassandra s promjenom dopuštenja na samo čitanje.
    chown cassandra:cassandra /etc/cassandra/jmxremote.password 
    chmod 400 /etc/cassandra/jmxremote.password
  4. Uredite jmxremote.password i dodajte korisnika i lozinku za JMX-kompatibilne uslužne programe:
    monitorRole QED 
    controlRole R&D 
    cassandra cassandrapassword
  5. Dodaj Cassandra korisnik s dopuštenjem za čitanje i pisanje na /jdk_install_location/lib/management/jmxremote.access
    monitorRole readonly
    cassandra readwrite
    controlRole readwrite \
    create javax.management.monitor.,javax.management.timer. \ 
    unregister
  6. Restart Cassandra.
  7. Pokrenite nodetool s Cassandra korisnika i lozinke.
    $ nodetool status -u cassandra -pw cassandra

Pitanja i odgovori

Oba se nalaze u ključnom prostoru system_auth, u tablicama roles i role_permissions. Budući da izgubljena replika system_auth može zaključati sve, povećajte faktor replikacije prije omogućavanja autentifikacije u produkciji.

CQL uloge su zamijenile stariju sintaksu korisnika. Uloga ima dopuštenja i može se dodijeliti drugim ulogama, pa CREATE ROLE zamjenjuje CREATE USER u trenutnim izdanjima, koja korisničke naredbe drže kao aliase.

Ne. Autentifikacija samo dokazuje identitet; lozinke i dalje prelaze mrežu bez ikakvog prijenosa osim ako nije omogućena client_encryption_options. Uključite TLS zasebno za promet od klijenta do čvora i od čvora do čvora.

Stvorite namjenskog superkorisnika, a zatim promijenite ugrađenu lozinku za Cassandru ili uklonite račun. Ostavljanje dokumentiranog para Cassandra/Cassandra aktivnim najčešći je postupak. Cassandra pogrešna konfiguracija.

Dozvole se pohranjuju u predmemoriju. Promjena stupa na snagu tek nakon isteka roka valjanosti dozvola, stoga skratite tu postavku u cassandra.yaml ili ponovno pokrenite čvor prilikom testiranja odobrenja ili opoziva.

Neautentificirani JMX na portu 7199 omogućuje potpunu kontrolu čvora, uključujući i dekomisiju. Cassandra stoga ga veže lokalno, a udaljeni pristup treba otvoriti samo s instaliranom datotekom lozinke ili SSL-om.

Modeli strojnog učenja profiliraju normalne oblike upita, vremena prijave i izvorne adrese po ulozi, a zatim označavaju odstupanja poput čitanja nepovezanog ključnog prostora aplikacije od strane računa. To otkriva da statička pravila za zloupotrebu vjerodajnica propuštaju.

Copilot brzo izrađuje naredbe CREATE ROLE i GRANT iz komentara, ali obično predlaže široka dopuštenja. Revpregledaj svaku generiranu dodjelu s najmanjim privilegijama prije pokretanja uživo grozd.

Sažmite ovu objavu uz: