Segurança do Cassandra: Criar usuário & Autenticação com JMX

Índice:

Anonim

Existem dois tipos de segurança no Apache Cassandra e no Datastax enterprise.

  • Autenticação Interna
  • Autorização

Neste tutorial, você aprenderá,

  • O que é autenticação e autorização interna
  • Configurar autenticação e autorização
  • Login
  • Criar novo usuário
  • Autorização
  • Configurando Firewall
  • Habilitando a autenticação JMX

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

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

A autorização interna trata da permissão do usuário. 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 manter informações oficiais sobre as contas, como o que elas têm permissão para acessar).

A autenticação externa é a autenticação compatível com Kerberos e LDAP. O Apache Cassandra não oferece suporte para autenticação externa.

Apenas datastax enterprise oferece suporte a autenticação externa com Kerberos e LDAP. Enquanto a autenticação interna é suportada tanto no Apache Cassandra quanto no Datastax enterprise.

Configurar autenticação e autorização

No Cassandra, por padrão, as opções de autenticação e autorização estão desabilitadas. Você deve configurar o arquivo Cassandra.yaml para habilitar a autenticação e autorização.

Abra o arquivo Cassandra.yaml e descomente as linhas que tratam da autenticação e autorização interna.

  • No arquivo Cassandra.yaml, por padrão, o valor do autenticador é 'AllowAllAuthenticator'. Altere este valor do autenticador de 'AllowAllAuthenticator' para 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Da mesma forma, no arquivo Cassandra.yaml, por padrão, o valor do autorizador será 'AllowAllAuthorizor'. Altere este valor do autorizador de 'AllowAllAuthorizor' para 'com.datastax.bdp.cassandra.auth.CassandraAuthorizor'.

Login

Agora que a autenticação está habilitada, se você tentar acessar qualquer keyspace, o 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 entrar na conta 'Cassandra', você pode fazer o que quiser.

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

Agora, na segunda captura de tela, você pode ver que depois de usar a credencial de login padrão do Cassandra, você é capaz de fazer o 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 do usuário Cassandra e alteração da senha padrão.

alter user cassandra with password 'newpassword';

Criar novo usuário

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

Para criar um novo usuário, faça o login, a senha é especificada junto com se o usuário é superusuário ou não. Apenas o 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;

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 para determinar qual ação 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. TODO
  2. ALTERAR
  3. AUTORIZE
  4. CRIAR
  5. SOLTA
  6. MODIFICAR
  7. SELECIONE

Aqui estão alguns 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 o usuário '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 que um erro foi retornado.

select* form emp_bonus;

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

list all permissions of laura;

Você também pode listar todas as permissões no recurso. Aqui está o exemplo de como obter permissão de uma mesa.

list all permissions on dev.emp;

Configurando Firewall

Se o firewall estiver em execução, as portas a seguir devem ser abertas para comunicação entre os nós, incluindo algumas portas do Cassandra. Se as portas do Cassandra não forem abertas, os nós do Cassandra atuarão como um servidor de banco de dados independente em vez de ingressar no cluster de banco de dados.

Portas de cliente Cassandra

Número da porta

Descrição

9042

Porta do cliente Cassandra

9160

Cassandra Client Port Thrift

Portas do entrenó Cassandra

Número da porta

Descrição

7000

Comunicação do cluster entre nós do Cassandra

7001

Comunicação de cluster entre nós Cassandra SSL

7199

Porta de monitoramento Cassandra JMX

Portos Públicos

Número da porta

Descrição

22

Porta SSH

8888

Site do OpsCenter. Solicitação de http do navegador.

Portas Cassandra OpsCenter

Número da porta

Descrição

61620

Porta de monitoramento OpsCenter.

61621

Porta do agente Opscenter

Habilitando a autenticação JMX

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

Depois de habilitar a autenticação JMX, certifique-se de que OpsCenter e nodetool estejam 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 seguintes linhas.
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 o 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 com o qual você executa o Cassandra e altere a permissão para somente leitura
chown cassandra:cassandra /etc/cassandra/jmxremote.passwordchmod 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 QEDcontrolRole R&Dcassandra cassandrapassword
  1. Adicione o usuário Cassandra com permissão de leitura e gravação para /jdk_install_location/lib/management/jmxremote.access
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
  1. Reinicie o Cassandra
  2. Execute o nodetool com o usuário e a senha do Cassandra.
$ nodetool status -u cassandra -pw cassandra

Resumo:

Este tutorial explica sobre a segurança no Cassandra e a configuração do arquivo Cassandra.yaml para habilitar a segurança. Além disso, também explica como uma nova conta de usuário pode ser criada, atribuição de permissão, configuração do firewall e assim por diante.