Cassandra Autenticação e autorização JMX: criar usuário
⚡ Resumo Inteligente
Cassandra A segurança se baseia em autenticação interna, permissões de função, regras de firewall e controle de acesso JMX. Esta página mostra como habilitar cada camada, criar usuários, conceder permissões e proteger o acesso remoto ao nodetool.

Existem dois tipos de segurança em Apache Cassandra e DataStax Enterprise.
- Autenticação Interna
- Autorização
O que é autenticação e autorização interna
A autenticação interna consiste basicamente em validar a conexão de um 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 lida com as permissões de um usuário. Ela define quais ações um usuário pode executar. Por exemplo, podemos conceder permissões 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 (o Kerberos é usado para gerenciar credenciais com segurança) e LDAP (o LDAP é usado para armazenar informações oficiais sobre as contas, como o que elas têm permissão para 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, enquanto a autenticação interna é suportada em ambos. Apache Cassandra bem como DataStax Enterprise.
Configurar autenticação e autorização
In CassandraPor padrão, as opções de autenticação e autorização estão desativadas. Você precisa configurar o arquivo cassandra.yaml para habilitá-las.
Abra o arquivo cassandra.yaml e remova o comentário das linhas que tratam da autenticação e autorização internas, conforme mostrado abaixo.
- No arquivo cassandra.yaml, por padrão, o valor do autenticador é 'AllowAllAuthenticator'. Altere esse valor de 'AllowAllAuthenticator' para 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
- Da mesma forma, no arquivo cassandra.yaml, por padrão, o valor do autorizador será 'AllowAllAuthorizer'. Altere esse valor de autorizador de 'AllowAllAuthorizer' para 'com.datastax.bdp.cassandra.auth'.CassandraAutorizador'.
Esses dois nomes de classe são os valores do DataStax Enterprise. Em código aberto. Apache Cassandra As mesmas configurações levam PasswordAuthenticator e CassandraAuthorizere as credenciais ficam armazenadas no system_auth keyspace, cujo fator de replicação deve ser elevado acima de um.
o login
Agora a autenticação está habilitada, se você tentar acessar qualquer keyspace, Cassandra retornará um erro.
Por padrão, o Cassandra A conta principal é fornecida com o nome de usuário 'cassandra' e a senha 'cassandra'. Ao fazer login na conta 'cassandra', 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 o 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á um exemplo de login como o Cassandra usuário e alteração da senha padrão.
alter user cassandra with password 'newpassword';
Criar novo usuário
É possível criar novas contas com a conta 'cassandra'.
Para criar um novo usuário, é necessário especificar o nome de usuário e a senha, além de indicar se o usuário é um superusuário ou não. Somente um 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;
A saída lista todas as contas juntamente com sua respectiva flag de superusuário.
Os usuários podem ser eliminados pela seguinte sintaxe.
drop user laura;
Autorização
A autorização consiste em atribuir permissões aos usuários, decidindo quais ações um determinado usuário pode realizar.
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á um exemplo em que a usuária 'laura' tenta acessar a tabela emp_bonus. Laura tem permissão apenas para acessar dev.emp e nenhuma permissão na tabela dev.emp_bonus, motivo pelo qual foi retornado um erro.
select* form emp_bonus;
Você pode obter uma lista de todas as permissões atribuídas ao usuário. Aqui está um exemplo de como obter informações de permissão.
list all permissions of laura;
Você também pode listar todas as permissões de um recurso. Aqui está um exemplo de como obter 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 funcionarão como servidores de banco de dados independentes, em vez de se juntarem ao 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 |
Os drivers atuais usam apenas a porta 9042; a porta 9160 serve à interface Thrift legada e pode permanecer fechada em novos clusters.
Habilitando a autenticação JMX
Com as configurações padrão de CassandraO JMX só pode ser acessado a partir do localhost. Se você deseja acessar o JMX remotamente, altere a configuração LOCAL_JMX no arquivo 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 o arquivo jmxremote.password.template de /jdk_install_location/lib/management/ para /etc/cassandra/ e renomeie-o para jmxremote.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 alterar 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







