Cassandra JMX hitelesítés és hitelesítés: Felhasználó létrehozása

⚡ Okos összefoglaló

Cassandra A biztonság a belső hitelesítésen, a szerepkör-engedélyeken, a tűzfalszabályokon és a JMX hozzáférés-vezérlésen alapul. Ez az oldal bemutatja, hogyan engedélyezhetők az egyes rétegek, hogyan hozhatók létre felhasználók, hogyan adhatnak engedélyeket, és hogyan biztosítható a távoli nodetool-hozzáférés.

  • 🔐 Két réteg: A hitelesítés igazolja, hogy ki a felhasználó; az engedélyezés dönti el, hogy mit tehet a felhasználó.
  • 🇧🇷 Engedélyezze: Alapértelmezés szerint mindkettő ki van kapcsolva, és a hitelesítő és engedélyező beállításokon keresztül kapcsolhatók be.
  • 👤 Alapértelmezett fiók: A beépített Cassandra superuser minden más fiókot létrehoz, ezért azonnal változtasd meg a jelszavát.
  • 🔑 Támogatási modell: Az olyan jogosultságok, mint a SELECT, MODIFY és ALTER, erőforrásonként a GRANT paranccsal adhatók meg.
  • 📡 Portvezérlés: Nyissa meg a 7000-es, 7001-es, 7199-es és 9042-es csomópontokat a csomópontok között, és tartsa hitelesítve a JMX-et.

Cassandra JMX hitelesítés és engedélyezés

Kétféle biztonság létezik Apache Cassandra és a DataStax Enterprise.

  • Belső hitelesítés
  • Meghatalmazás

Mi az a belső hitelesítés és engedélyezés?

A belső hitelesítés alapvetően a felhasználói kapcsolat érvényesítése. A felhasználó bejelentkezési nevével és jelszavával hitelesíthető. Minden felhasználói fiókot a Cassandra belsőleg.

A belső jogosultságkezelés a felhasználó engedélyeivel foglalkozik. Azt szabályozza, hogy milyen műveleteket hajthat végre a felhasználó. Például adhatunk olyan engedélyeket, hogy melyik felhasználónak csak adatolvasási jogosultsága van, melyik felhasználónak csak adatírási jogosultsága, és melyik felhasználónak csak adattörlési jogosultsága.

A hitelesítés azonban külsőleg is vezérelhető Kerberos (a Kerberos a hitelesítő adatok biztonságos kezelésére szolgál) és LDAP (az LDAP a fiókokkal kapcsolatos mérvadó információk tárolására szolgál, például hogy mire férhetnek hozzá) segítségével.

A külső hitelesítés a Kerberos és az LDAP által támogatott hitelesítés. Apache Cassandra nem támogatja a külső hitelesítést.

Csak a DataStax Enterprise támogatja a Kerberos és LDAP protokollokon keresztüli külső hitelesítést, míg a belső hitelesítés mindkettőben támogatott. Apache Cassandra valamint a DataStax Enterprise-t.

A hitelesítés és engedélyezés konfigurálása

In Cassandra, alapértelmezés szerint a hitelesítési és engedélyezési beállítások le vannak tiltva. A hitelesítés és az engedélyezés engedélyezéséhez konfigurálnia kell a cassandra.yaml fájlt.

Nyisd meg a cassandra.yaml fájlt, és vedd ki a megjegyzésből a belső hitelesítéssel és engedélyezéssel foglalkozó sorokat az alábbiak szerint.

cassandra.yaml hitelesítő és engedélyező sorok kommenteletlenül

  • A cassandra.yaml fájlban a hitelesítő értéke alapértelmezés szerint „AllowAllAuthenticator”. Módosítsa ezt a hitelesítő értéket az „AllowAllAuthenticator” értékről a „com.datastax.bdp.cassandra.auth.PasswordAuthenticator” értékre.
  • Hasonlóképpen, a cassandra.yaml fájlban alapértelmezés szerint az engedélyezési érték „AllowAllAuthorizer” lesz. Módosítsa ezt az engedélyezési értéket „AllowAllAuthorizer”-ről „com.datastax.bdp.cassandra.auth”-ra.CassandraEngedélyező”.

Ez a két osztálynév a DataStax Enterprise értékei. Nyílt forráskódú rendszereken Apache Cassandra ugyanazok a beállítások érvényesek PasswordAuthenticator és a CassandraAuthorizer, és a hitelesítő adatok ezután a system_auth kulcsterület, amelynek replikációs tényezőjét egy fölé kell emelni.

Bejelentkezés

A hitelesítés most engedélyezve van, ha megpróbál hozzáférni bármely billentyűtérhez, Cassandra hibát ad vissza.

Alapértelmezésben, Cassandra a „cassandra” felhasználónevet és a „cassandra” jelszót adja a szuperfióknak. A „cassandra” fiókba bejelentkezve azt csinálhatsz, amit csak akarsz.

Lássuk az alábbi képernyőképet, ahol nem engedélyezi a bejelentkezést, ha nem az alapértelmezett Cassandra "Felhasználónév és jelszó".

Bejelentkezés elutasítva a cqlsh-ban, ha nem az alapértelmezett hitelesítő adatokat használja

A második képernyőképen látható, hogyan működik a használata után Cassandra alapértelmezett bejelentkezési hitelesítő adatokkal, akkor bejelentkezhet.

Sikeres cqlsh bejelentkezés az alapértelmezett Cassandra hitelesítő adatokkal

Ezzel a fiókkal létrehozhat egy másik felhasználót is. Javasoljuk, hogy módosítsa az alapértelmezett jelszót. Íme egy példa a bejelentkezésre a következő felhasználóként: Cassandra felhasználó és az alapértelmezett jelszó módosítása.

alter user cassandra with password 'newpassword';

Új felhasználó létrehozása

Új fiókok létrehozhatók a „cassandra” fiókkal.

Új felhasználó létrehozásához meg kell adni a bejelentkezési nevet és a jelszót, valamint azt, hogy a felhasználó szuperfelhasználó-e vagy sem. Csak szuperfelhasználó hozhat létre új felhasználókat.

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

Az összes felhasználó listáját a következő szintaxissal kaphatja meg.

list users;

A kimenet felsorolja az összes fiókot a hozzájuk tartozó superuser jelzővel együtt.

A list users parancs kimenete, amelyen láthatók a fiókok és a superuser jelzők.

A felhasználókat a következő szintaxissal lehet eldobni.

drop user laura;

Meghatalmazás

Az engedélyezés a felhasználókhoz rendelt engedélyek meghatározása, annak meghatározása, hogy egy adott felhasználó milyen műveletet hajthat végre.

Itt van az általános szintaxis az engedélyek felhasználókhoz való hozzárendeléséhez.

GRANT permission ON resource TO user

A következő típusú engedélyek adhatók a felhasználónak.

  1. MINDEN
  2. VÁLTOZTAT
  3. AUTORIZÁCIÓ
  4. TEREMT
  5. DROP
  6. MÓDOSÍT
  7. SELECT

Íme példák az engedélyek felhasználóhoz való hozzárendelésére.

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;

Létrejön egy új "laura" felhasználó "newhire" jelszóval.

Íme egy példa, ahol a 'laura' felhasználó megpróbál hozzáférni az emp_bonus táblához. Laurának csak a dev.emp táblához van hozzáférési jogosultsága, a dev.emp_bonus táblához pedig nincs, ezért hibaüzenetet kapott a rendszer.

Hiba történt, amikor Laura engedély nélkül lekérdezte az emp_bonus táblát.

select* form emp_bonus;

Lekérheti a felhasználóhoz rendelt összes engedély listáját. Íme egy példa az engedélyinformációk lekérésére.

Laura összes jogosultságának listázása kimenettel

list all permissions of laura;

Egy erőforrás összes jogosultságát is listázhatja. Íme egy példa arra, hogyan lehet jogosultságot lekérni egy táblázatból.

A dev.emp fájl összes jogosultságának listázása kimenete

list all permissions on dev.emp;

Tűzfal konfigurálása

Ha a tűzfal fut, a következő portokat kell megnyitni a csomópontok közötti kommunikációhoz, beleértve néhányat is Cassandra portok. Ha Cassandra a portokat nem nyitják meg, Cassandra A csomópontok önálló adatbázis-kiszolgálóként fognak működni, ahelyett, hogy csatlakoznának az adatbázis-fürthöz.

Cassandra Kliens portok

port száma Leírás
9042 Cassandra Kliens port
9160 Cassandra Client Port Thrift

Cassandra Internode portok

port száma Leírás
7000 Cassandra csomópontok közötti klaszter kommunikáció
7001 Cassandra SSL csomópontok közötti fürt kommunikáció
7199 Cassandra JMX megfigyelő port

Nyilvános kikötők

port száma Leírás
22 SSH port
8888 OpsCenter webhely. Böngésző http kérése.

Cassandra OpsCenter portok

port száma Leírás
61620 OpsCenter megfigyelő port.
61621 Opscenter ügynök port

A jelenlegi illesztőprogramok csak a 9042-es portot használják; a 9160-as port a régi Thrift interfészt szolgálja ki, és az új klasztereken zárva maradhat.

JMX hitelesítés engedélyezése

Az alapértelmezett beállításokkal CassandraA JMX csak a localhostról érhető el. Ha távolról szeretné elérni a JMX-et, módosítsa a LOCAL_JMX beállítást a cassandra-env.sh fájlban, és engedélyezze a hitelesítést vagy az SSL-t.

A JMX hitelesítés engedélyezése után győződjön meg róla OpsCenter és a nodetool hitelesítés használatára van beállítva.

Eljárás

A következő lépések szükségesek a JMX hitelesítés engedélyezéséhez.

  1. Adja hozzá vagy frissítse a következő sorokat a cassandra-env.sh fájlban.
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

    Ezenkívül módosítsa a LOCAL_JMX beállítást a cassandra-env.sh fájlban.

    LOCAL_JMX=no
  2. Másold át a jmxremote.password.template fájlt a /jdk_install_location/lib/management/ könyvtárból az /etc/cassandra/ könyvtárba, és nevezd át jmxremote.password névre.
    cp /jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  3. Módosítsa a jmxremote.password tulajdonjogát a futtatott felhasználóra Cassandra csak olvasásra jogosultsággal, és módosítsa azt.
    chown cassandra:cassandra /etc/cassandra/jmxremote.password 
    chmod 400 /etc/cassandra/jmxremote.password
  4. Szerkessze a jmxremote.password fájlt, és adja hozzá a felhasználót és a jelszót a JMX-kompatibilis segédprogramokhoz:
    monitorRole QED 
    controlRole R&D 
    cassandra cassandrapassword
  5. Adjuk hozzá a Cassandra felhasználó írási és olvasási engedéllyel a /jdk_install_location/lib/management/jmxremote.access fájlhoz
    monitorRole readonly
    cassandra readwrite
    controlRole readwrite \
    create javax.management.monitor.,javax.management.timer. \ 
    unregister
  6. Újraindítás Cassandra.
  7. Futtassa a nodetool-ot a Cassandra felhasználó és jelszó.
    $ nodetool status -u cassandra -pw cassandra

GYIK

Mindkettő a system_auth kulcsterületen, a roles és role_permissions táblákban található. Mivel a system_auth elveszett replikája mindenkit kizárhat, növelje a replikációs tényezőt a hitelesítés éles környezetben történő engedélyezése előtt.

A CQL szerepkörök felülírták a régebbi felhasználói szintaxist. Egy szerepkör jogosultságokkal rendelkezik, és más szerepköröknek is megadható, így a CREATE ROLE parancs váltja fel a CREATE USER parancsot az aktuális kiadásokban, amelyek a felhasználói parancsokat aliasokként tartják meg.

Nem. A hitelesítés csak a személyazonosságot igazolja; a jelszavak továbbra is titkosítatlanul áthaladnak a hálózaton, kivéve, ha a client_encryption_options engedélyezve van. Kapcsolja be külön a TLS-t az ügyfél-csomópont és a csomópont-csomópont forgalomhoz.

Hozz létre egy dedikált szuperfelhasználót, majd változtasd meg a beépített Cassandra jelszót, vagy töröld a fiókot. A dokumentált Cassandra/Cassandra páros aktív állapotban tartása a leggyakoribb megoldás. Cassandra helytelen konfiguráció.

Az engedélyek gyorsítótárazva vannak. A módosítás csak az engedélyek érvényességi idejének lejárta után lép érvénybe, ezért a cassandra.yaml fájlban rövidítse le ezt a beállítást, vagy indítsa újra a csomópontot az engedélyezés vagy visszavonás tesztelésekor.

A 7199-es porton lévő, nem hitelesített JMX teljes csomópont-vezérlést tesz lehetővé, beleértve a leszerelést is. Cassandra ezért helyben köti, és a távoli hozzáférést csak jelszófájllal vagy SSL-lel szabad megnyitni.

A gépi tanulási modellek szerepkörönként profilt készítenek a normál lekérdezési alakzatokról, bejelentkezési időkről és forráscímekről, majd jelzik az eltéréseket, például egy alkalmazásfiókot, amely nem kapcsolódó kulcsteret olvas. Ez feltárja a hitelesítő adatokkal való visszaélést, a statikus szabályok hibáit.

A Copilot gyorsan elkészíti a CREATE ROLE és GRANT utasításokat egy megjegyzésből, de általában széleskörű jogosultságokat javasol. Revminden létrehozott jogosultság megadását a minimális jogosultságokhoz képest tekintse meg, mielőtt élő rendszeren futtatná fürt.

Foglald össze ezt a bejegyzést a következőképpen: