Skip to main content

Limit restful requests to backend ElasticSearch cluster: Queries only.

Project description

# esFrontLine

Limit restful requests to backend ElasticSearch cluster: Queries for the public,


## Requirements

* Python 2.7 or 3.6.2+
* An ElasticSearch cluster to forward queries to


## Install

I will assume you have Python installed (if not, here are [Windows7 instructions](https://github.com/klahnakoski/pyLibrary#windows-7-install-instructions-))

pip install esFrontLine

## Setup

You must write your own setting.json file with the following properties set:

* **elasticsearch** - (Array of) ElasticSearch nodes
* **elasticsearch.host** - URL of the ElasticSearch node that will accept query requests
* **elasticsearch.port** - port for ES (default = 9200)
* **flask** - flask.run() parameters (default port = 5000)
* **whitelist** - list of indexes that are allowed
* **users** - list of allowed HAWK users, with their linked resources
* **users.resources** - list of indexes the user is allowed
* **users.hawk** - object of [Hawk credentials](https://github.com/hueniverse/hawk/blob/master/README.md)
* **users.hawk.id** - any human readable name to identify the user or application
* **users.hawk.key** - the secret value held by both endpoints and not shared with anyone
* **users.hawk.algorithm**: always "sha256" for now
* **debug** - for debugging

Here is an example of my ```settings.json``` file

{
"elasticsearch":[{
"host":"http://elasticsearch4.metrics.scl3.mozilla.com",
"port":9200
},{
"host":"http://elasticsearch5.metrics.scl3.mozilla.com",
"port":9200
},{
"host":"http://elasticsearch7.metrics.scl3.mozilla.com",
"port":9200
},{
"host":"http://elasticsearch8.metrics.scl3.mozilla.com",
"port":9200
}],
"flask":{
"host":"0.0.0.0",
"port":9292,
"debug":false,
"threaded":true,
"processes":1
},
"users": [
{
"hawk": {
"id": "kyle@example.com",
"key": "secret",
"algorithm": "sha256"
},
"resources": [
"testing"
]
}
],
"whitelist":["bugs", "org_chart", "bug_summary", "reviews"],
"debug":{
"log":[{
"filename": "./tests/results/logs/app.log",
"maxBytes": 10000000,
"backupCount": 200,
"encoding": "utf8"
},{
"stream":"sys.stdout"
}]
}

}

## Execution

python app.py --settings-file <path_to_file_with_JSON_settings>

## Code Source

[https://github.com/klahnakoski/esFrontLine](https://github.com/klahnakoski/esFrontLine)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

esFrontLine-2.11.18154.tar.gz (7.7 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page