Protegendo o elasticsearch

4

Parece haver uma séria falta de informação sobre isso, apesar do fato de que a elasticsearch instalada é extremamente explorável.

Meu principal receio em usá-lo é que, como não especialista, não tenho idéia de quais são as possíveis vulnerabilidades e como fechá-las.

Alguém pode me explicar um método de bloqueio do elasticsearch para que eu possa fazer o seguinte em um ambiente seguro:

  • Vários índices por usuário. Suponho que eu possa criar isso para eles com antecedência, um o usuário não deve ser capaz de executar operações em outros usuários indices, exceto possivelmente consultá-los se tiver permissão. (Possivelmente alguma forma de chave secreta na URL para cada usuário?)

  • Os usuários podem adicionar e excluir objetos de seus índices à vontade, mas não abandone o índice.

  • Alguma forma de limitação ao tamanho da memória para o usuário, de modo que se algo dá errado, eles não podem sobrecarregar o serviço.

Eu estou supondo que isso tem que ser feito em um nível de aplicativo e não posso esperar que você escreva isso para mim, no entanto a configuração padrão é muito aberta e mesmo se eu fornecer uma camada de API personalizada para isso alguém poderia facilmente contorná-lo e se comunicar diretamente com o servidor.

    
por George Reith 20.12.2013 / 16:08

4 respostas

2

Na minha opinião, a única maneira de proteger o ES na maneira como você pergunta é bloqueá-lo por trás de outra camada de aplicativo e fazer com que essa camada manipule o controle de autenticação, controle de autenticação e https / ssl.

No lado ES, havia um plug-in de segurança ES jetty desenvolvido, não sei se ele foi bem-sucedido, quando eu estava implantando a primeira vez que o plugin estava prestes a ser lançado, veja:

ES JETTY PLUGIN

    
por 20.12.2013 / 16:23
1

Eu acho que você precisaria criar um proxy HTTP intermediário com toda essa "lógica de negócios" e permitir apenas o acesso do ElasticSearch a partir do host local. Desta forma, o acesso direto ao ES é bloqueado e você pode determinar e aplicar quaisquer políticas que desejar (yay!;)

"mesmo que eu forneça uma camada de API personalizada para alguém que possa facilmente ignorá-la": eles não podem se o ES aceitar apenas conexões do host local.

Eu não acho que os limites de uso de memória são possíveis, talvez você possa pré-aprovar consultas dentro da camada de proxy?

    
por 29.08.2014 / 19:47
0

Eu fiz algo parecido usando o Nginx rodando na frente do ES. É possível configurar "autorização" no Nginx com base nas palavras-chave no URL. Consulte o caso de uso definido neste documento: link

    
por 12.01.2015 / 16:08
0

Eu limitei o elasticsearch a um túnel openvpn:

Em /etc/elasticsearch/elasticsearch.yml:

network.host: 172.16.xxx.xxx

Onde 172.16.xxx.xxx são os endereços IP atribuídos por openvpn.

    
por 05.02.2015 / 20:35