web-dev-qa-db-fra.com

ElasticSearch: autoriser uniquement les requêtes locales

Comment autoriser uniquement les demandes locales pour elasticsearch? Commandez donc comme:

curl -XGET 'http://localhost:9200/Twitter/_settings'

ne peut être exécuté que sur localhost et demander comme:

curl -XGET 'http://mydomain.com:9200/Twitter/_settings'

serait rejeté?

Parce que, d'après ce que je vois, elasticsearch le permet par défaut.

MODIFIER:

Selon http://www.elasticsearch.org/guide/reference/modules/network.html vous pouvez gérer bind_Host paramètre pour autoriser les hôtes. Et par défaut, il est défini sur anyLocalAddress

40
smolnar

Pour elasticsearch avant la version 2.0.0, si vous souhaitez que le transport http et le transport elasticsearch interne écoutent uniquement sur localhost, ajoutez simplement la ligne suivante à elasticsearch.yml fichier.

network.Host: "127.0.0.1"

Si vous souhaitez que seul le transport http écoute sur localhost, ajoutez plutôt la ligne suivante.

http.Host: "127.0.0.1"

À partir de la version 2.0, elasticsearch écoute uniquement sur localhost par défaut. Ainsi, aucune configuration supplémentaire n'est nécessaire.

120
imotov

Si votre objectif final est de refuser toute demande provenant de l'extérieur de la machine hôte, le moyen le plus fiable serait de modifier iptables de l'hôte afin qu'il refuse toute demande entrante aux ports de service utilisés par ElasticSearch (9200- 9300).

Si l'objectif final est de s'assurer que tout le monde se réfère au service à l'aide d'un DNS exclusif, il vaut mieux y parvenir avec un serveur HTTP qui peut proxy des requêtes telles que HTTPd ou nginx.

5
noamt

J'utilise ce paramètre:

http.Host: "127.0.0.1"

Ce paramètre n'accepte pas les requêtes http pour les requêtes externes.

1
jruzafa