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.
- 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".
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.
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;
È 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.
- TUTTO
- ETÀ
- AUTORIZZARE
- CREA
- GOCCIA
- MODIFICARE
- 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.
select* form emp_bonus;
È possibile ottenere un elenco di tutte le autorizzazioni assegnate all'utente. Ecco l'esempio di come ottenere informazioni sui permessi.
list all permissions of laura;
Puoi anche elencare tutte le autorizzazioni sulla risorsa. Ecco l'esempio di come ottenere l'autorizzazione da una tabella.
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.
- 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
- 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
- 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
- Modifica jmxremote.password e aggiungi l'utente e la password per le utilità conformi a JMX:
monitorRole QED controlRole R&D cassandra cassandrapassword
- 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
- Restart Cassandra
- 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.