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.
- 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".
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.
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;
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.
- TODAS
- ALTERAR
- AUTORIZAR
- CRIAR
- GOTA
- MODIFICAR
- 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.
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.
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.
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.
- 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
- 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
- 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
- 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
- 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
- Reiniciar Cassandra
- 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.