All Projects → dustin-decker → deflek

dustin-decker / deflek

Licence: other
index and API RBAC for Elasticsearch and Kibana via reverse proxy. DEPRECATED

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to deflek

kibana-multitenant-proxy
A proxy behind nginx while before kibana (4.x, 5.x) to provide data isolation for different users
Stars: ✭ 25 (+92.31%)
Mutual labels:  kibana, elk, authorization
rbac-react-redux-aspnetcore
A starter template for creating JWT token from ASP.NET Core API project and applying that JWT token authentication on React application
Stars: ✭ 54 (+315.38%)
Mutual labels:  authorization, rbac, role-based-access-control
Json Logging Python
Python logging library to emit JSON log that can be easily indexed and searchable by logging infrastructure such as ELK, EFK, AWS Cloudwatch, GCP Stackdriver
Stars: ✭ 143 (+1000%)
Mutual labels:  kibana, elk
Elk Stack
ELK Stack ... based on Elastic Stack 5.x
Stars: ✭ 148 (+1038.46%)
Mutual labels:  kibana, elk
Elastiflow
Network flow analytics (Netflow, sFlow and IPFIX) with the Elastic Stack
Stars: ✭ 2,322 (+17761.54%)
Mutual labels:  kibana, elk
authentik
The authentication glue you need.
Stars: ✭ 2,941 (+22523.08%)
Mutual labels:  reverse-proxy, authorization
Docker Elk
The Elastic stack (ELK) powered by Docker and Compose.
Stars: ✭ 12,327 (+94723.08%)
Mutual labels:  kibana, elk
Synesis lite suricata
Suricata IDS/IPS log analytics using the Elastic Stack.
Stars: ✭ 167 (+1184.62%)
Mutual labels:  kibana, elk
Search Guard Docs
Official documentation for Search Guard, the Elasticsearch security suite
Stars: ✭ 92 (+607.69%)
Mutual labels:  kibana, elk
tp5-rbac
一个tp5的RBAC库,使用composer来安装和更新你的项目对于RBAC的需求。同时支持jwt方式的验证。包含了RBAC需要的数据表的数据迁移,能够很方便的开始开发。
Stars: ✭ 69 (+430.77%)
Mutual labels:  authorization, rbac
rubban
Kibana Automatic Index Pattern Discovery and Other Elastic Stack Curating Tasks
Stars: ✭ 49 (+276.92%)
Mutual labels:  kibana, elk
elk-dashboard-v5-docker
My production setup for the latest version of ELK stack running in a compose, displaying a basic -but powerfull- security and performance dashboard.
Stars: ✭ 25 (+92.31%)
Mutual labels:  kibana, elk
Elastic
Elastic Stack (6.2.4) 을 활용한 Dashboard 만들기 Project
Stars: ✭ 121 (+830.77%)
Mutual labels:  kibana, elk
Elasticambari
Elastic Service for Ambari
Stars: ✭ 108 (+730.77%)
Mutual labels:  kibana, elk
Terraform Aws Elasticsearch
Terraform module to provision an Elasticsearch cluster with built-in integrations with Kibana and Logstash.
Stars: ✭ 137 (+953.85%)
Mutual labels:  kibana, elk
Search Guard Kibana Plugin
This plugin for Kibana adds session management and multi tenancy to a Search Guard secured cluster.
Stars: ✭ 107 (+723.08%)
Mutual labels:  kibana, elk
Elk Docker
Elasticsearch, Logstash, Kibana (ELK) Docker image
Stars: ✭ 1,973 (+15076.92%)
Mutual labels:  kibana, elk
Gatekeeper
Lightweight library in C# for implementing roles-based access control (RBAC). With Gatekeeper, you can define users, roles, resources, and permissions, and authorize requests.
Stars: ✭ 25 (+92.31%)
Mutual labels:  authorization, rbac
Sentinl
Kibana Alert & Report App for Elasticsearch
Stars: ✭ 1,233 (+9384.62%)
Mutual labels:  kibana, elk
Ansible Elk Playbook
A playbook for setting up the ELK Stack + beats log shippers on Ubuntu 16.04 and above
Stars: ✭ 83 (+538.46%)
Mutual labels:  kibana, elk

deflEK

Reverse proxy that adds index-level RBAC to Elasticsearch.

Travis CI Build Status

Disclaimer

Deflek man-in-the-middles requests to elasticsearch in order to apply a best effort to filter access and mutate requests to be compatible, and to provide an audit log. It is not perfect, and probably never will be. Elasticsearch needs security to be baked in to do it properly. There are solutions that come closer to this, like ReadOnlyREST, Search Guard or Elastic's own X-pack security, but all of those are also bolt-on security, in the form of an Elasticsearch plugin. So use it at your own risk! Help make it better! Make a PR to add proper RBAC to the core of Elasticsearch!

Authentication

It currently requires fronting with a SSO authentication proxy (such as saml-proxy) to pass Username and Group headers for RBAC lookup. deflEK assumes these headers are trusted input. If that is not true for your use case, you MUST add your own authentication middleware, or else it will not work.

An example setup looks like this:

USER -> saml-proxy -> Kibana -> deflek -> Elasticsearch

To have Kibana pass user and group headers from saml-proxy to deflek, use Kibana's elasticsearch.requestHeadersWhitelist configuration option, documented here: https://www.elastic.co/guide/en/kibana/6.2/settings.html The headers specified in config.example.yaml would be specified like this:

elasticsearch.requestHeadersWhitelist: ["X-Remote-Groups", "X-Remote-User"]

Features

  • RBAC on indices and APIs
  • Request traces - elasped time, query, errors, user, groups, indices, response code
  • JSON logging, ready for indexing

Coverage

deflek can enforce RBAC on HTTP methods for every HTTP API elasticsearch offers

aditionally, deflek has index awareness for the following APIs:

  • _mget
  • _msearch
  • _all
  • _search
  • direct index access (/< index >/1)

deflek can also mutate wildcard requests on the fly, to support software like Kibana.

Configuration

config.example.yaml is included as a sample configuration file. This is also the config that should be used with integration tests. It includes the indices and API whitelisting necessary to support Kibana.

You will need to edit the headers to match what your authentication layer passes to deflek. You will also need to modify groups access to match what will be included via those headers.

Running it

Build docker image:

docker build -t deflek .

Deploy test stack to local Swarm:

docker stack deploy -c docker-compose.test.yml deflek

Testing it

Ensure you have the dependencies:

dep ensure

Use the example config:

cp config.example.yaml config.yaml

Run a test elasticsearch cluster, if needed:

docker run -p 127.0.0.1:9200:9200 --rm -it -e "discovery.type=single-node" -v esdata1:/usr/share/elasticsearch/data docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.1

Build and run deflek:

go build; ./deflEK

Run deflek integration and unit tests:

go test
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].