Ajustes de Segurança no Elasticsearch
Para habilitar o controle de acesso na versão 8.3.2 do Elastic Stack, o primeiro passo consiste em modificar o arquivo de configuração elasticsearch.yml. É fundamental ativar os recursos de segurança do X-Pack e configurar o SSL para o transporte entre nós do cluster.
# Ativação das funcionalidades de segurança
xpack.security.enabled: true
xpack.security.enrollment.enabled: false
# Configuração de criptografia para comunicação HTTP (Kibana, Logstash, etc)
xpack.security.http.ssl:
enabled: false
keystore.path: certs/http.p12
# Configuração de criptografia e autenticação mútua entre nós
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
Gerenciamento da Conta Administrativa
Após as alterações de configuração, é necessário definir uma senha para o usuário padrão elastic. Utilize o utilitário de linha de comando para gerar uma nova credencial:
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
O sistema retornará uma senha gerada automaticamente, por exemplo: ABC123xyz_SecretPass.
Restrição do Usuário Elastic no Kibana
Ao tentar utilizar o usuário elastic diretamente no arquivo kibana.yml para a conexão interna entre os serviços, a versão 8.3.2 apresenta um erro de validação:
FATAL Error: [config validation of [elasticsearch].username]: value of "elastic" is forbidden.
Este comportamento ocorre porque o elastic é uma conta de superusuário e o Kibana exige uma conta de serviço ou um usuário com permissões específicas para gerenciar seus índices internos.
Criação e Atribuição de Perfis para Novos Usuários
Para contornar a restrição acima e garantir uma operação segura, deve-se criar um usuário dedicado via terminal:
# Criando o usuário 'admin_servico'
sudo /usr/share/elasticsearch/bin/elasticsearch-users useradd admin_servico -p SenhaSegura@123
Após a criação, é necessário atribuir os papéis (roles) adequados para que o usuário possa monitorar o cluster e gerenciar as funções do Kibana. Os comandos abaixo gerenciam essas permissões:
# Adicionando permissões de superuser e kibana_system
sudo /usr/share/elasticsearch/bin/elasticsearch-users roles -a superuser admin_servico
sudo /usr/share/elasticsearch/bin/elasticsearch-users roles -a kibana_system admin_servico
# Para verificar as atribuições atuais do usuário:
sudo /usr/share/elasticsearch/bin/elasticsearch-users roles -v admin_servico
Com essas permissões, o usuário admin_servico poderá ser configurado no kibana.yml sem gerar erros de validação.
Integração com Logstash
A configuração do pipeline do Logstash também deve ser atualizada para incluir as novas credenciais de autenticação no bloco de saída (output) para o Elasticsearch:
output {
elasticsearch {
hosts => ["http://172.31.0.135:9200"]
index => "app-logs-%{+YYYY.MM.dd}"
user => "admin_servico"
password => "SenhaSegura@123"
}
}