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 details)

Uploaded Source

File details

Details for the file esFrontLine-2.11.18154.tar.gz.

File metadata

File hashes

Hashes for esFrontLine-2.11.18154.tar.gz
Algorithm Hash digest
SHA256 d11e91f053a8517571e8fcf42fead3cad701d074af93effbd25070ef3d556214
MD5 ce1905ae79c42fbba742163c7d0c43d3
BLAKE2b-256 1b580a490f65e0503c76cedcc0dfa8022b15bb46b31c44bd1140ed7921510f88

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page