Cassandra Autenticação e autorização JMX: criar usuário

Existem dois tipos de segurança em Apache Cassandra e empresa Datastax.

  • Autenticação Interna
  • Autorização

O que é autenticação e autorização interna

A autenticação interna basicamente valida a conexão do usuário. O usuário é autenticado com login e senha. Todas as contas de usuário são gerenciadas em Cassandra internamente.

A autorização interna trata da permissão do usuário. Ele trata de quais ações o usuário pode executar. Por exemplo, podemos dar permissão ao usuário, como qual usuário tem apenas permissão de leitura de dados, qual usuário tem permissão de gravação de dados e qual usuário tem permissão de exclusão de dados.

No entanto, a autenticação também pode ser controlada externamente com Kerberos (Kerberos é usado para gerenciar credenciais com segurança) e LDAP (LDAP é usado para armazenar informações oficiais sobre as contas, como o que elas têm permissão de acessar).

A autenticação externa é a autenticação suportada com Kerberos e LDAP. Apache Cassandra não suporta autenticação externa.

Somente o datastax Enterprise oferece suporte à autenticação externa com Kerberos e LDAP. Considerando que a autenticação interna é suportada tanto em Apache Cassandra bem como a empresa Datastax.

Configurar autenticação e autorização

In Cassandra, por padrão, as opções de autenticação e autorização estão desativadas. Você tem que configurar CassandraArquivo .yaml para ativar autenticação e autorização.

Abra CassandraArquivo .yaml e remova o comentário das linhas que tratam da autenticação e autorização interna.

Configurar autenticação e autorização

  • In CassandraArquivo .yaml, por padrão, o valor do autenticador é 'AllowAllAuthenticator'. Altere esse valor do autenticador de 'AllowAllAuthenticator' para 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Da mesma forma, Cassandra.yaml, por padrão, o valor do autorizador será 'AllowAllAuthorizor'. Altere esse valor do autorizador de 'AllowAllAuthorizor' para 'com.datastax.bdp.cassandra.auth.CassandraAutorizador'.

o login

Agora a autenticação está habilitada, se você tentar acessar qualquer keyspace, Cassandra retornará um erro.

Por padrão, o Cassandra fornece a super conta com o nome de usuário 'cassandra' e a senha 'cassandra'. Ao fazer login em 'Cassandra' conta, você pode fazer o que quiser.

Vamos ver a captura de tela abaixo para isso, onde não permitirá que você faça login se não estiver usando o padrão Cassandra "usuário e senha".

o login

Agora, na segunda captura de tela, você pode ver depois de usar Cassandra credencial de login padrão, você poderá fazer login.

Você também pode criar outro usuário com esta conta. Recomenda-se alterar a senha padrão. Aqui está o exemplo de login Cassandra usuário e altere a senha padrão.

o login

alter user cassandra with password 'newpassword';

Criar novo usuário

Novas contas podem ser criadas com o 'Cassandra' conta.

Para criar um novo usuário, faça login, a senha é especificada e se o usuário é superusuário ou não. Somente superusuário pode criar novos usuários.

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

Você pode obter uma lista de todos os usuários pela seguinte sintaxe.

list users;

Criar novo usuário

Os usuários podem ser eliminados pela seguinte sintaxe.

drop user laura;

Autorização

Autorização é a atribuição de permissão aos usuários sobre a ação que um determinado usuário pode executar.

Aqui está a sintaxe genérica para atribuir permissão aos usuários.

GRANT permission ON resource TO user

Existem os seguintes tipos de permissão que podem ser concedidos ao usuário.

  1. TODAS
  2. ALTERAR
  3. AUTORIZAR
  4. CRIAR
  5. GOTA
  6. MODIFICAR
  7. SELECIONE

Aqui estão exemplos de atribuição de permissão ao usuário.

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;

Um novo usuário 'laura' é criado com a senha 'newhire'.

Aqui está o exemplo onde a usuária 'laura' tenta acessar a tabela emp_bonus. Laura tem apenas permissão para acessar dev.emp e nenhuma permissão para esta tabela dev.emp_bonus, por isso um erro foi retornado.

Autorização

select* form emp_bonus;

Você pode obter uma lista de todas as permissões atribuídas ao usuário. Aqui está o exemplo de como obter informações de permissão.

Autorização

list all permissions of laura;

Você também pode listar todas as permissões do recurso. Aqui está o exemplo de obtenção de permissão de uma tabela.

Autorização

list all permissions on dev.emp;

Configurando Firewall

Se o firewall estiver em execução, as seguintes portas devem ser abertas para comunicação entre os nós, incluindo alguns Cassandra portos. Se Cassandra portas não serão abertas, Cassandra os nós atuarão como servidores de banco de dados independentes, em vez de ingressar no cluster de banco de dados.

Cassandra Portas do cliente

Número da porta Descrição
9042 Cassandra Porta do cliente
9160 Cassandra Economia na porta do cliente

Cassandra Portas entrenós

Número da porta Descrição
7000 Cassandra comunicação de cluster entrenós
7001 Cassandra Comunicação de cluster entre nós SSL
7199 Cassandra Porta de monitoramento JMX

Portas Públicas

Número da porta Descrição
22 Porta SSH
8888 Site OpsCenter. Solicitação http do navegador.

Cassandra Portas do OpsCenter

Número da porta Descrição
61620 Porta de monitoramento do OpsCenter.
61621 Porta do agente do Opscenter

Habilitando a autenticação JMX

Com as configurações padrão de Cassandra, o JMX só pode ser acessado do host local. Se você deseja acessar o JMX remotamente, altere a configuração LOCAL_JMX em Cassandra-env.sh e habilite a autenticação ou SSL.

Depois de ativar a autenticação JMX, certifique-se Centro de operações e nodetool estão configurados para usar autenticação.

Procedimento

Existem etapas a seguir para ativar a autenticação JMX.

  1. No arquivo cassandra-env.sh, adicione ou atualize as linhas a seguir.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

Além disso, altere a configuração LOCAL_JMX em Cassandra-env.sh

LOCAL_JMX=no
  1. Copie jmxremote.password.template de /jdk_install_location/lib/management/ para /etc/cassandra/ e renomeie-o parajmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Altere a propriedade de jmxremote.password para o usuário que você executa Cassandra com e altere a permissão para somente leitura
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. Edite jmxremote.password e adicione o usuário e a senha para utilitários compatíveis com JMX:
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. Adicionar o Cassandra usuário com permissão de leitura e gravação para /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. Reiniciar Cassandra
  2. Execute o nodetool com o Cassandra usuário e senha.
$ nodetool status -u cassandra -pw cassandra

Resumo

Este tutorial explica sobre segurança em Cassandra e configurando CassandraArquivo .yaml para ativar a segurança. Além disso também explica como criar uma nova conta de usuário, atribuição de permissão, configuração do firewall e assim por diante.