Cassandra JMX-todennus ja valtuutus: Luo käyttäjä

⚡ Älykäs yhteenveto

Cassandra Tietoturva perustuu sisäiseen todennukseen, roolien käyttöoikeuksiin, palomuurisääntöihin ja JMX-käyttöoikeuksien hallintaan. Tällä sivulla näytetään, miten kukin taso otetaan käyttöön, käyttäjät luodaan, käyttöoikeudet myönnetään ja NodeTool-etäkäyttö suojataan.

  • 🔐 Kaksi kerrosta: Todennus vahvistaa, kuka käyttäjä on; valtuutus päättää, mitä käyttäjä saa tehdä.
  • ⚙️ Ota se käyttöön: Molemmat ovat oletuksena pois päältä ja ne voidaan ottaa käyttöön todentajan ja valtuuttajan asetuksista.
  • 👤 Oletustili: Sisäänrakennettu Cassandran pääkäyttäjä luo kaikki muut tilin, joten vaihda sen salasana välittömästi.
  • 🔑 Avustusmalli: Resurssikohtaisesti myönnetään GRANT-käskyllä ​​käyttöoikeudet, kuten SELECT, MODIFY ja ALTER.
  • 📡 Porttivalvonta: Avaa 7000, 7001, 7199 ja 9042 solmujen välillä ja pidä JMX todennuksessa.

Cassandra JMX-todennus ja -valtuutus

Sisällä on kahdenlaisia ​​suojauksia Apache Cassandra ja DataStax Enterprise.

  • Sisäinen todennus
  • Lupa

Mikä on sisäinen todennus ja valtuutus

Sisäinen todennus on pohjimmiltaan käyttäjäyhteyden validointia. Käyttäjä todennetaan käyttäjätunnuksella ja salasanalla. Kaikkia käyttäjätilejä hallitaan Cassandra sisäisesti.

Sisäinen valtuutus käsittelee käyttäjän oikeuksia. Se määrittää, mitä toimintoja käyttäjä voi suorittaa. Voimme esimerkiksi antaa oikeuksia, kuten millä käyttäjällä on vain tietojen lukuoikeus, millä käyttäjällä on tietojen kirjoitusoikeus ja millä käyttäjällä on tietojen poisto-oikeus.

Todennusta voidaan kuitenkin hallita myös ulkoisesti Kerberoksen (Kerberosta käytetään tunnistetietojen turvalliseen hallintaan) ja LDAP:n (LDAP:tä käytetään tilien arvovaltaisten tietojen, kuten niiden käyttöoikeuksien, säilyttämiseen) avulla.

Ulkoinen todennus on Kerberosin ja LDAP:n tukema todennus. Apache Cassandra ei tue ulkoista todennusta.

Vain DataStax Enterprise tukee ulkoista todennusta Kerberoksen ja LDAP:n avulla, kun taas sisäistä todennusta tuetaan sekä Apache Cassandra sekä DataStax Enterprise.

Määritä todennus ja valtuutus

In Cassandra, todennus- ja valtuutusasetukset ovat oletusarvoisesti poissa käytöstä. Sinun on määritettävä cassandra.yaml-tiedosto todennuksen ja valtuutuksen ottamiseksi käyttöön.

Avaa cassandra.yaml ja poista kommenttimerkit riveiltä, ​​jotka käsittelevät sisäistä todennusta ja valtuutusta, kuten alla on esitetty.

cassandra.yaml-todennus- ja valtuutusrivit kommentoimattomina

  • Cassandra.yaml-tiedostossa todennusarvon oletusarvo on 'AllowAllAuthenticator'. Muuta todennusarvon arvo 'AllowAllAuthenticator' arvoksi 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Vastaavasti cassandra.yaml-tiedostossa valtuuttajan arvo on oletusarvoisesti 'AllowAllAuthorizer'. Muuta valtuuttajan arvo arvosta 'AllowAllAuthorizer' arvoon 'com.datastax.bdp.cassandra.auth'.CassandraValtuutettu'.

Nuo kaksi luokan nimeä ovat DataStax Enterprise -arvoja. Avoimen lähdekoodin Apache Cassandra samat asetukset ottavat PasswordAuthenticator ja CassandraAuthorizer, ja tunnistetiedot ovat sitten tallessa system_auth avainavaruus, jonka replikaatiokerroin tulisi nostaa yli yhden.

Kirjautua sisään

Todennus on nyt käytössä, jos yrität käyttää mitä tahansa näppäintä, Cassandra palauttaa virheilmoituksen.

Oletusarvoisesti Cassandra antaa supertilille käyttäjätunnuksen 'cassandra' ja salasanan 'cassandra'. Kirjaudumalla 'cassandra'-tilille voit tehdä mitä haluat.

Katsotaanpa alla olevaa kuvakaappausta tätä varten, jossa se ei salli sinun kirjautua sisään, jos et käytä oletusasetusta Cassandra "Käyttäjänimi ja salasana".

Kirjautuminen hylätty cqlsh:ssa, kun oletustunnistetietoja ei käytetä

Toisessa kuvakaappauksessa näet nyt käytön jälkeen Cassandra oletuskirjautumistiedot, voit kirjautua sisään.

Onnistunut cqlsh-kirjautuminen Cassandran oletustunnistetietoilla

Voit myös luoda toisen käyttäjän tällä tilillä. On suositeltavaa vaihtaa oletussalasana. Tässä on esimerkki kirjautumisesta sisään käyttäjänä Cassandra käyttäjä ja oletussalasanan vaihtaminen.

alter user cassandra with password 'newpassword';

Luo uusi käyttäjä

Uusia tilejä voidaan luoda 'cassandra'-tilillä.

Uuden käyttäjän luomiseksi määritetään kirjautumistunnus ja salasana sekä se, onko käyttäjä superkäyttäjä vai ei. Vain superkäyttäjä voi luoda uusia käyttäjiä.

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

Saat luettelon kaikista käyttäjistä seuraavalla syntaksilla.

list users;

Tulosteessa luetellaan kaikki tilit ja niiden superkäyttäjä-lippu.

List users -komennon tuloste, joka näyttää tilit ja superkäyttäjän merkinnät

Käyttäjät voidaan hylätä seuraavalla syntaksilla.

drop user laura;

Lupa

Valtuutus tarkoittaa käyttäjien oikeuksien myöntämistä ja sitä, että päätetään, mitä toimintoja tietty käyttäjä voi suorittaa.

Tässä on yleinen syntaksi käyttöoikeuksien määrittämiseksi käyttäjille.

GRANT permission ON resource TO user

Käyttäjälle voidaan myöntää seuraavanlaisia ​​käyttöoikeuksia.

  1. KAIKKI
  2. MUUTTAA
  3. VALTUUTA
  4. LUODA
  5. DROP
  6. MUUTTAA
  7. VALITSE

Tässä on esimerkkejä käyttöoikeuksien myöntämisestä käyttäjälle.

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;

Uusi käyttäjä 'laura' luodaan salasanalla 'newhire'.

Tässä on esimerkki, jossa käyttäjä 'laura' yrittää käyttää emp_bonus-taulukkoa. Lauralla on käyttöoikeudet vain dev.emp-taulukkoon eikä käyttöoikeuksia dev.emp_bonus-taulukkoon, minkä vuoksi palautettiin virhe.

Virhe palautetaan, kun laura kyselee emp_bonus-taulukkoa ilman lupaa.

select* form emp_bonus;

Voit saada luettelon kaikista käyttäjälle määritetyistä käyttöoikeuksista. Tässä on esimerkki käyttöoikeustietojen hankkimisesta.

Lauran kaikkien oikeuksien listan tuloste

list all permissions of laura;

Voit myös listata kaikki resurssin käyttöoikeudet. Tässä on esimerkki käyttöoikeuksien hakemisesta taulukosta.

Tuloste, joka listaa kaikki dev.emp-tiedoston käyttöoikeudet

list all permissions on dev.emp;

Palomuurin määrittäminen

Jos palomuuri on käynnissä, seuraavat portit on avattava solmujen välistä viestintää varten, mukaan lukien jotkut Cassandra portit. Jos Cassandra portteja ei avata, Cassandra solmut toimivat erillisinä tietokantapalvelimina sen sijaan, että ne liittyisivät tietokantaklusteriin.

Cassandra Asiakasportit

Porttinumero Tuotetiedot
9042 Cassandra Asiakasportti
9160 Cassandra Client Port Thrift

Cassandra Solmujen väliset portit

Porttinumero Tuotetiedot
7000 Cassandra solmujen välinen klusteriviestintä
7001 Cassandra SSL-solmujen välinen klusteriviestintä
7199 Cassandra JMX-valvontaportti

Julkiset satamat

Porttinumero Tuotetiedot
22 SSH-portti
8888 OpsCenterin verkkosivusto. Selaimen http-pyyntö.

Cassandra OpsCenterin portit

Porttinumero Tuotetiedot
61620 OpsCenter-valvontaportti.
61621 Opscenter-agentin portti

Nykyiset ajurit käyttävät vain porttia 9042; portti 9160 palvelee vanhaa Thrift-rajapintaa ja voi pysyä suljettuna uusissa klustereissa.

Ota JMX-todennus käyttöön

Oletusasetuksilla CassandraJMX:ään pääsee käsiksi vain paikalliselta koneelta. Jos haluat käyttää JMX:ää etänä, muuta LOCAL_JMX-asetusta cassandra-env.sh-tiedostossa ja ota käyttöön todennus tai SSL.

Kun olet ottanut JMX-todennuksen käyttöön, varmista OpsCenter ja nodetool on määritetty käyttämään todennusta.

menettely

JMX-todennus otetaan käyttöön seuraavasti.

  1. Lisää tai päivitä seuraavat rivit cassandra-env.sh-tiedostoon.
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

    Muuta myös LOCAL_JMX-asetusta cassandra-env.sh-tiedostossa.

    LOCAL_JMX=no
  2. Kopioi jmxremote.password.template hakemistosta /jdk_install_location/lib/management/ hakemistoon /etc/cassandra/ ja nimeä se uudelleen muotoon jmxremote.password.
    cp /jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  3. Muuta jmxremote.password omistajuus käyttämällesi käyttäjälle Cassandra ja muuta käyttöoikeus vain luku -tilaan.
    chown cassandra:cassandra /etc/cassandra/jmxremote.password 
    chmod 400 /etc/cassandra/jmxremote.password
  4. Muokkaa tiedostoa jmxremote.password ja lisää käyttäjä ja salasana JMX-yhteensopiville apuohjelmille:
    monitorRole QED 
    controlRole R&D 
    cassandra cassandrapassword
  5. Lisää Cassandra käyttäjä, jolla on luku- ja kirjoitusoikeudet tiedostoon /jdk_install_location/lib/management/jmxremote.access
    monitorRole readonly
    cassandra readwrite
    controlRole readwrite \
    create javax.management.monitor.,javax.management.timer. \ 
    unregister
  6. Käynnistä uudelleen Cassandra.
  7. Suorita nodetool -sovelluksella Cassandra käyttäjä ja salasana.
    $ nodetool status -u cassandra -pw cassandra

UKK

Molemmat sijaitsevat system_auth-avainavaruudessa roolit- ja role_permissions-taulukoissa. Koska system_auth-attribuutin kadonnut kopio voi lukita kaikki ulos, nosta sen replikointikerrointa ennen todennuksen ottamista käyttöön tuotannossa.

CQL-roolit korvasivat vanhemman käyttäjäsyntaksin. Roolilla on käyttöoikeuksia ja se voidaan myöntää muille rooleille, joten CREATE ROLE korvaa CREATE USER -roolissa nykyversioissa, joissa käyttäjäkomennot säilyvät alias-niminä.

Ei. Todennus vain vahvistaa henkilöllisyyden; salasanat kulkevat edelleen verkossa salaamattomina, ellei client_encryption_options ole käytössä. Ota TLS käyttöön erikseen asiakkaan ja solmun väliselle liikenteelle ja solmun ja solmun väliselle liikenteelle.

Luo oma superkäyttäjä ja vaihda sitten sisäänrakennettu Cassandran salasana tai poista tili. Yleisin tapa on jättää dokumentoitu Cassandra/Cassandra-pari aktiiviseksi. Cassandra väärä määritys.

Käyttöoikeudet tallennetaan välimuistiin. Muutos tulee voimaan vasta käyttöoikeuksien voimassaoloajan umpeuduttua, joten lyhennä asetusta cassandra.yaml-tiedostossa tai käynnistä solmu uudelleen, kun testaat myöntämistä tai peruuttamista.

Todentamaton JMX portissa 7199 sallii täyden solmun hallinnan, mukaan lukien käytöstä poiston. Cassandra siksi sitoo sen paikallisesti, ja etäkäyttö tulisi avata vain salasanatiedostolla tai SSL-salauksella.

Koneoppimismallit profiloivat normaaleja kyselymuotoja, kirjautumisaikoja ja lähdeosoitteita roolikohtaisesti ja merkitsevät sitten poikkeamat, kuten sovellustilin lukevan epäolennaista avainavaruutta. Tämä paljastaa tunnistetietojen väärinkäytön ja staattisten sääntöjen epäonnistumiset.

Copilot luonnostelee CREATE ROLE- ja GRANT-lausekkeet nopeasti kommentista, mutta se yleensä ehdottaa laajoja käyttöoikeuksia. Revtarkastella jokaista luotua myönnettyä käyttöoikeutta pienimpien käyttöoikeuksien perusteella ennen sen suorittamista reaaliajassa klusteri.

Tiivistä tämä viesti seuraavasti: