Cassandra Autentificare și autorizare JMX: Creați utilizator
⚡ Rezumat inteligent
Cassandra Securitatea se bazează pe autentificarea internă, permisiunile de rol, regulile firewall și controlul accesului JMX. Această pagină arată cum se activează fiecare strat, se creează utilizatori, se acordă permisiuni și se securizează accesul de la distanță la nodetool.

Există două tipuri de securitate în Apache Cassandra și DataStax Enterprise.
- Autentificare internă
- Autorizare
Ce este autentificarea și autorizarea internă
Autentificarea internă este practic validarea unei conexiuni a utilizatorului. Utilizatorul este autentificat cu nume de utilizator și parolă. Toate conturile de utilizator sunt gestionate în Cassandra intern.
Autorizarea internă se ocupă de permisiunea unui utilizator. Se referă la acțiunile pe care un utilizator le poate efectua. De exemplu, putem acorda permisiuni precum care utilizator are doar permisiunea de citire a datelor, care utilizator are permisiunea de scriere a datelor și care utilizator are permisiunea de ștergere a datelor.
Totuși, autentificarea poate fi controlată și extern cu Kerberos (Kerberos este utilizat pentru a gestiona în siguranță acreditările) și LDAP (LDAP este utilizat pentru a păstra informații autorizate despre conturi, cum ar fi la ce au permisiunea de a accesa).
Autentificarea externă este autentificarea care este acceptată cu Kerberos și LDAP. Apache Cassandra nu acceptă autentificare externă.
Doar DataStax Enterprise acceptă autentificarea externă cu Kerberos și LDAP, în timp ce autentificarea internă este acceptată atât în Apache Cassandra precum și DataStax Enterprise.
Configurați autentificarea și autorizarea
In Cassandra, în mod implicit, opțiunile de autentificare și autorizare sunt dezactivate. Trebuie să configurați fișierul cassandra.yaml pentru a activa autentificarea și autorizarea.
Deschideți fișierul cassandra.yaml și eliminați comentariile de la liniile care se ocupă de autentificarea și autorizarea internă, așa cum se arată mai jos.
- În cassandra.yaml, în mod implicit, valoarea autentificatorului este „AllowAllAuthenticator”. Schimbați această valoare a autentificatorului din „AllowAllAuthenticator” în „com.datastax.bdp.cassandra.auth.PasswordAuthenticator”.
- În mod similar, în cassandra.yaml, în mod implicit, valoarea autorizatorului va fi „AllowAllAuthorizer”. Schimbați această valoare a autorizatorului din „AllowAllAuthorizer” în „com.datastax.bdp.cassandra.auth”.CassandraAutorizatorul'.
Aceste două nume de clase sunt valorile DataStax Enterprise. Pe open-source Apache Cassandra aceleași setări iau PasswordAuthenticator și CassandraAuthorizer, iar acreditările se află apoi în system_auth spațiu cheie, al cărui factor de replicare ar trebui crescut peste unu.
Logare
Acum autentificarea este activată, dacă încercați să accesați orice spațiu de taste, Cassandra va returna o eroare.
În mod implicit, Cassandra furnizează supercontului numele de utilizator „cassandra” și parola „cassandra”. Prin conectarea la contul „cassandra”, puteți face ce doriți.
Să vedem captura de ecran de mai jos pentru aceasta, unde nu vă va permite să vă autentificați dacă nu utilizați implicit Cassandra „nume de utilizator” și „parolă”.
Acum, în a doua captură de ecran, puteți vedea după utilizarea Cassandra autentificare implicită, vă puteți autentifica.
De asemenea, puteți crea un alt utilizator cu acest cont. Se recomandă schimbarea parolei din cea implicită. Iată un exemplu de conectare ca Cassandra utilizator și schimbarea parolei implicite.
alter user cassandra with password 'newpassword';
Creați un utilizator nou
Conturile noi pot fi create cu contul „cassandra”.
Pentru crearea unui utilizator nou, se specifică numele de utilizator și parola, împreună cu faptul dacă utilizatorul este sau nu superutilizator. Doar un superutilizator poate crea utilizatori noi.
create user robin with password 'manager' superuser; create user robin with password 'newhire';
Puteți obține o listă cu toți utilizatorii după următoarea sintaxă.
list users;
Rezultatul listează fiecare cont împreună cu flag-ul său de superutilizator.
Utilizatorii pot fi abandonați după următoarea sintaxă.
drop user laura;
Autorizare
Autorizarea este atribuirea de permisiuni utilizatorilor, decizând ce acțiune poate efectua un anumit utilizator.
Iată sintaxa generică pentru alocarea permisiunii utilizatorilor.
GRANT permission ON resource TO user
Există următoarele tipuri de permisiuni care pot fi acordate utilizatorului.
- Toate colectiile
- MODIFICA
- AUTORIZA
- CREATE
- CĂDERE BRUSCA
- MODIFICA
- SELECT
Iată exemple de atribuire a permisiunii utilizatorului.
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;
Un nou utilizator „laura” este creat cu parola „newhire”.
Iată exemplul în care utilizatorul „laura” încearcă să acceseze tabela emp_bonus. Laura are doar permisiunea de a accesa dev.emp și nicio permisiune asupra tabelei dev.emp_bonus, motiv pentru care a fost returnată o eroare.
select* form emp_bonus;
Puteți obține o listă cu toate permisiunile atribuite utilizatorului. Iată un exemplu de obținere a informațiilor despre permisiuni.
list all permissions of laura;
De asemenea, puteți lista toate permisiunile asupra unei resurse. Iată un exemplu de obținere a permisiunii dintr-un tabel.
list all permissions on dev.emp;
Configurarea paravanului de protecție
Dacă firewall-ul rulează, următoarele porturi trebuie să fie deschise pentru comunicarea între noduri, inclusiv unele Cassandra porturi. Dacă Cassandra porturile nu vor fi deschise, Cassandra Nodurile vor acționa ca servere de baze de date independente, în loc să se alăture clusterului de baze de date.
Cassandra Porturi client
| Numarul portului | Descriere |
|---|---|
| 9042 | Cassandra Port client |
| 9160 | Cassandra Client Port Thrift |
Cassandra Porturi internod
| Numarul portului | Descriere |
|---|---|
| 7000 | Cassandra Comunicarea clusterului internod |
| 7001 | Cassandra Comunicare cluster SSL internod |
| 7199 | Cassandra Port de monitorizare JMX |
Porturile publice
| Numarul portului | Descriere |
|---|---|
| 22 | Port SSH |
| 8888 | Site-ul OpsCenter. Solicitare http de browser. |
Cassandra Porturile OpsCenter
| Numarul portului | Descriere |
|---|---|
| 61620 | Port de monitorizare OpsCenter. |
| 61621 | Port agent Opscenter |
Driverele actuale utilizează doar portul 9042; portul 9160 deservește interfața Thrift veche și poate rămâne închis pe clustere noi.
Activarea autentificării JMX
Cu setările implicite ale Cassandra, JMX poate fi accesat doar de pe localhost. Dacă doriți să accesați JMX de la distanță, modificați setarea LOCAL_JMX în cassandra-env.sh și activați autentificarea sau SSL.
După ce activați autentificarea JMX, asigurați-vă OpsCenter și nodetool sunt configurate pentru a utiliza autentificarea.
Procedură
Există următorii pași pentru a activa autentificarea JMX.
- În fișierul cassandra-env.sh, adăugați sau actualizați următoarele rânduri.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true" JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
De asemenea, modificați setarea LOCAL_JMX în cassandra-env.sh.
LOCAL_JMX=no
- Copiați fișierul jmxremote.password.template din /jdk_install_location/lib/management/ în /etc/cassandra/ și redenumiți-l în jmxremote.password.
cp /jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password - Schimbați dreptul de proprietate asupra jmxremote.password la utilizatorul pe care îl executați Cassandra cu și modificați permisiunea doar pentru citire.
chown cassandra:cassandra /etc/cassandra/jmxremote.password chmod 400 /etc/cassandra/jmxremote.password
- Editați jmxremote.password și adăugați utilizatorul și parola pentru utilitarele compatibile cu JMX:
monitorRole QED controlRole R&D cassandra cassandrapassword
- Adauga Cassandra utilizator cu permisiunea de citire și scriere la /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly cassandra readwrite controlRole readwrite \ create javax.management.monitor.,javax.management.timer. \ unregister
- Repornire Cassandra.
- Rulați nodetool cu Cassandra utilizator și parolă.
$ nodetool status -u cassandra -pw cassandra







