Cassandra Autenticazione e autorizzazione JMX: crea utente

Esistono due tipi di sicurezza Apache Cassandra e l'impresa Datastax.

  • Autenticazione interna
  • Autorizzazione

Che cosa sono l'autenticazione e l'autorizzazione interne

L'autenticazione interna consiste sostanzialmente nel convalidare la connessione dell'utente. L'utente viene autenticato con login e password. Tutti gli account utente sono gestiti in Cassandra internamente.

L'autorizzazione interna riguarda il permesso dell'utente. Si occupa delle azioni che l'utente può eseguire. Ad esempio, possiamo fornire all'utente l'autorizzazione, ad esempio quale utente ha solo l'autorizzazione di lettura dei dati, quale utente ha l'autorizzazione di scrittura dei dati e quale utente ha l'autorizzazione di eliminazione dei dati.

L'autenticazione può tuttavia essere controllata anche esternamente con Kerberos (Kerberos viene utilizzato per gestire le credenziali in modo sicuro) e LDAP (LDAP viene utilizzato per conservare informazioni autorevoli sugli account, ad esempio ciò a cui è consentito accedere).

L'autenticazione esterna è l'autenticazione supportata con Kerberos e LDAP. Apache Cassandra non supporta l'autenticazione esterna.

Solo datastax enterprise supporta l'autenticazione esterna con Kerberos e LDAP. Mentre l'autenticazione interna è supportata sia in Apache Cassandra così come l'impresa Datastax.

Configura autenticazione e autorizzazione

In Cassandra, per impostazione predefinita le opzioni di autenticazione e autorizzazione sono disabilitate. Devi configurare CassandraFile .yaml per abilitare l'autenticazione e l'autorizzazione.

Apri Cassandra.yaml e righe di commento che riguardano l'autenticazione e l'autorizzazione interne.

Configura autenticazione e autorizzazione

  • In CassandraFile .yaml, per impostazione predefinita, il valore dell'autenticatore è 'AllowAllAuthenticator'. Cambia questo valore dell'autenticatore da 'AllowAllAuthenticator' a 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Allo stesso modo, in CassandraFile .yaml, per impostazione predefinita, il valore dell'authorizer sarà 'AllowAllAuthorizor'. Cambia questo valore dell'authorizer da 'AllowAllAuthorizor' a 'com.datastax.bdp.cassandra.auth.CassandraAutorizzatore'.

Entrando

Ora l'autenticazione è abilitata, se provi ad accedere a qualsiasi spazio delle chiavi, Cassandra restituirà un errore.

Per impostazione predefinita, Cassandra fornisce al super account il nome utente 'cassandra' e la password 'cassandra'. Accedendo a 'Cassandra' account, puoi fare quello che vuoi.

Vediamo lo screenshot qui sotto, in cui non ti consentirà di accedere se non stai utilizzando l'impostazione predefinita Cassandra "nome utente e password".

Entrando

Ora, nel secondo screenshot, puoi vedere dopo l'uso Cassandra credenziale di accesso predefinita, è possibile accedere.

Puoi anche creare un altro utente con questo account. Si consiglia di modificare la password rispetto a quella predefinita. Ecco l'esempio di accesso Cassandra utente e modificare la password predefinita.

Entrando

alter user cassandra with password 'newpassword';

Crea nuovo utente

È possibile creare nuovi account con il comando 'Cassandra' account.

Per creare un nuovo utente, login, viene specificata la password insieme al fatto che l'utente sia un superutente o meno. Solo il Super utente può creare nuovi utenti.

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

È possibile ottenere un elenco di tutti gli utenti utilizzando la seguente sintassi.

list users;

Crea nuovo utente

È possibile eliminare gli utenti utilizzando la seguente sintassi.

drop user laura;

Autorizzazione

L'autorizzazione è l'assegnazione agli utenti dell'autorizzazione relativa all'azione che un determinato utente può eseguire.

Ecco la sintassi generica per assegnare l'autorizzazione agli utenti.

GRANT permission ON resource TO user

Esistono i seguenti tipi di autorizzazione che possono essere concessi all'utente.

  1. TUTTO
  2. ETÀ
  3. AUTORIZZARE
  4. CREA
  5. GOCCIA
  6. MODIFICARE
  7. SELEZIONA

Di seguito sono riportati esempi di assegnazione dell'autorizzazione all'utente.

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;

Viene creato un nuovo utente 'laura' con password 'newhire'.

Ecco l'esempio in cui l'utente "laura" tenta di accedere alla tabella emp_bonus. Laura ha solo il permesso di accedere a dev.emp e nessun permesso a questa tabella dev.emp_bonus, ecco perché è stato restituito un errore.

Autorizzazione

select* form emp_bonus;

È possibile ottenere un elenco di tutte le autorizzazioni assegnate all'utente. Ecco l'esempio di come ottenere informazioni sui permessi.

Autorizzazione

list all permissions of laura;

Puoi anche elencare tutte le autorizzazioni sulla risorsa. Ecco l'esempio di come ottenere l'autorizzazione da una tabella.

Autorizzazione

list all permissions on dev.emp;

Configurazione del firewall

Se il firewall è in esecuzione, le seguenti porte devono essere aperte per la comunicazione tra i nodi, inclusi alcuni Cassandra porti. Se Cassandra i porti non verranno aperti, Cassandra i nodi fungeranno da server database autonomo anziché unirsi al cluster di database.

Cassandra Porte client

Numero di porta Descrizione
9042 Cassandra Porta cliente
9160 Cassandra Risparmio del porto cliente

Cassandra Porte internodo

Numero di porta Descrizione
7000 Cassandra Comunicazione cluster internodale
7001 Cassandra Comunicazione cluster internodo SSL
7199 Cassandra Porta di monitoraggio JMX

Porti pubblici

Numero di porta Descrizione
22 Porta SSH
8888 Sito web dell'OpsCenter. Richiesta http del browser.

Cassandra Porte OpsCenter

Numero di porta Descrizione
61620 Porta di monitoraggio OpsCenter.
61621 Porta dell'agente Opscenter

Abilitazione dell'autenticazione JMX

Con le impostazioni predefinite di Cassandra, è possibile accedere a JMX solo dal localhost. Se desideri accedere a JMX da remoto, modifica l'impostazione LOCAL_JMX in Cassandra-env.sh e abilitare l'autenticazione o SSL.

Dopo aver abilitato l'autenticazione JMX, assicurati OpsCenter e nodetool sono configurati per utilizzare l'autenticazione.

Procedura

Per abilitare l'autenticazione JMX procedere come segue.

  1. Nel file cassandra-env.sh, aggiungere o aggiornare le seguenti righe.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

Inoltre, modifica l'impostazione LOCAL_JMX in Cassandra-env.sh

LOCAL_JMX=no
  1. Copiare jmxremote.password.template da /jdk_install_location/lib/management/ a /etc/cassandra/ e rinominarlo in jmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Cambia la proprietà di jmxremote.password con l'utente che esegui Cassandra con e modificare l'autorizzazione in sola lettura
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. Modifica jmxremote.password e aggiungi l'utente e la password per le utilità conformi a JMX:
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. Aggiungere il Cassandra utente con autorizzazione di lettura e scrittura su /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. Restart Cassandra
  2. Esegui nodetool con il file Cassandra utente e password.
$ nodetool status -u cassandra -pw cassandra

Sintesi

Questo tutorial spiega la sicurezza in Cassandra e configurazione CassandraFile .yaml per abilitare la sicurezza. Oltre a ciò viene spiegato anche come creare un nuovo account utente, assegnare i permessi, configurare il firewall e così via.