Cassandra Security: crea utente & Autenticazione con JMX

Sommario:

Anonim

Esistono due tipi di sicurezza in Apache Cassandra e Datastax enterprise.

  • Autenticazione interna
  • Autorizzazione

In questo tutorial imparerai,

  • Che cos'è l'autenticazione interna e l'autorizzazione
  • Configurare l'autenticazione e l'autorizzazione
  • Entrando
  • Crea nuovo utente
  • Autorizzazione
  • Configurazione del firewall
  • Abilitazione dell'autenticazione JMX

Che cos'è l'autenticazione interna e l'autorizzazione

L'autenticazione interna fondamentalmente convalida la connessione dell'utente. L'utente viene autenticato con login e password. Tutti gli account utente sono gestiti internamente in Cassandra.

L'autorizzazione interna si occupa dell'autorizzazione dell'utente. Si occupa di quali azioni l'utente può eseguire. Ad esempio, possiamo concedere il permesso dell'utente, ad esempio quale utente ha solo il permesso di lettura dei dati, quale utente ha il permesso di scrittura dei dati e quale utente ha il permesso di cancellazione dei dati.

Tuttavia, l'autenticazione può anche essere controllata esternamente con Kerberos (Kerberos viene utilizzato per gestire le credenziali in modo sicuro) e LDAP (LDAP viene utilizzato per contenere 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 che in Datastax enterprise.

Configurare l'autenticazione e l'autorizzazione

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

Aprire il file Cassandra.yaml e rimuovere il commento dalle righe che si occupano dell'autenticazione e dell'autorizzazione interne.

  • Nel file Cassandra.yaml, per impostazione predefinita, il valore dell'autenticatore è "AllowAllAuthenticator". Modifica questo valore di autenticatore da "AllowAllAuthenticator" a "com.datastax.bdp.cassandra.auth.PasswordAuthenticator".
  • Allo stesso modo, nel file Cassandra.yaml, per impostazione predefinita, il valore dell'autorizzazione sarà "AllowAllAuthorizor". Modifica questo valore di autorizzazione da "AllowAllAuthorizor" a "com.datastax.bdp.cassandra.auth.CassandraAuthorizor".

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 all'account "Cassandra", puoi fare quello che vuoi.

Vediamo lo screenshot qui sotto per questo, dove non ti permetterà di accedere se non stai usando il "nome utente" e la "password" predefiniti di Cassandra.

Ora, nel secondo screenshot, puoi vedere dopo aver utilizzato le credenziali di accesso predefinite di Cassandra, sei in grado di accedere.

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

alter user cassandra with password 'newpassword';

Crea nuovo utente

È possibile creare nuovi account con l'account "Cassandra".

Per creare un nuovo utente, effettuare il login, la password viene specificata insieme al fatto che l'utente sia super utente 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 con la seguente sintassi.

list users;

Gli utenti possono essere eliminati con la seguente sintassi.

drop user laura;

Autorizzazione

L'autorizzazione è il permesso di assegnare agli utenti quale azione può eseguire un determinato utente.

Ecco la sintassi generica per l'assegnazione delle autorizzazioni agli utenti.

GRANT permission ON resource TO user

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

  1. TUTTI
  2. ALTER
  3. AUTORIZZA
  4. CREARE
  5. FAR CADERE
  6. MODIFICARE
  7. SELEZIONARE

Di seguito sono riportati alcuni 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, è necessario aprire le seguenti porte per la comunicazione tra i nodi, comprese alcune porte Cassandra. Se le porte Cassandra non verranno aperte, i nodi Cassandra fungeranno da server di database autonomo anziché unirsi al cluster di database.

Porte client Cassandra

Numero di porta

Descrizione

9042

Porta client Cassandra

9160

Cassandra Client Port Thrift

Porte di Cassandra Internode

Numero di porta

Descrizione

7000

Cassandra internodo cluster communication

7001

Cassandra SSL internodo cluster communication

7199

Porta di monitoraggio Cassandra JMX

Porte pubbliche

Numero di porta

Descrizione

22

Porta SSH

8888

Sito Web OpsCenter. Richiesta http del browser.

Porte Cassandra OpsCenter

Numero di porta

Descrizione

61620

Porta di monitoraggio OpsCenter.

61621

Porta 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 abilita l'autenticazione o SSL.

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

Procedura

Sono disponibili i seguenti passaggi per abilitare l'autenticazione JMX.

  1. Nel file cassandra-env.sh, aggiungi o aggiorna 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. Copia jmxremote.password.template da / jdk_install_location / lib / management / in / etc / cassandra / e rinominalo 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 con cui esegui Cassandra e cambia il permesso di sola lettura
chown cassandra:cassandra /etc/cassandra/jmxremote.passwordchmod 400 /etc/cassandra/jmxremote.password
  1. Modifica jmxremote.password e aggiungi l'utente e la password per le utilità conformi a JMX:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
  1. Aggiungi l'utente Cassandra con autorizzazione di lettura e scrittura a /jdk_install_location/lib/management/jmxremote.access
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
  1. Riavvia Cassandra
  2. Esegui nodetool con l'utente e la password Cassandra.
$ nodetool status -u cassandra -pw cassandra

Sommario:

Questo tutorial spiega la sicurezza in Cassandra e la configurazione del file Cassandra.yaml per abilitare la sicurezza. Oltre a ciò, spiega anche come creare un nuovo account utente, l'assegnazione di autorizzazioni, la configurazione del firewall e così via.