This question has a simple title, but I think I might be asking for help with a complex, multi-part problem.
All of my systems are Ubuntu, they are kept current re: Java openjdk-8-jre (now 8u191-b12-2ubuntu0.18.04.1), and we are happy with Elastic 6.5.4 and Search Guard 6-6.5.4-24.0. We are probably going to set up Elastic 7.x and make a transition once a couple of point upgrades are released.
Our topology is something I have not seen others mention here.
{Cloudflare CDN} → Apache reverse proxy → Kibana system → {Our Elasticsearch cloud}
We run a self signed Certificate Authority and this works fine on the public internet thanks to Cloudflare’s features. We qualified for the Search Guard academic license and we are just starting to get familiar with Tenants. The Apache reverse proxy is a legacy from when we just had Elasticsearch Community edition and we protected it with htpasswd. Both the proxy and the Kibana system have public IP addresses, we control the reverse DNS there, but we would never expose those addresses to the public; our system is used to examine online conflicts, and we have legitimate concerns regarding unwanted visitors. Cloudflare puts a stop to most of that, which is why we use it.
We service two different groups of researchers with the system. Both have the same requirements:
-
A couple of people handle the getting and cleaning of data, they have full access to the underlying system, and cross between the two groups.
-
Each group has at least one person in a managerial role, which means they have access to all of their tenants.
-
There are individuals who are involved in collection, they have a tenant they use (RW) and may be invited to see into others (RO).
-
We very much want to offer dashboards as embedded iframes. This is the part that is not obvious to me.
The Kibana system and the machines running Elasticsearch are in a stable configuration - by that I mean I could do a host certificate for the Kibana IP, but it isn’t clear that is the right way to do things.
I see various comments about using a reverse proxy for access and including needed headers, but these uniformly suggest Nginx rather than Apache. Is there some pressing reason to switch away from using Apache for this role? Is there a
complete configuration example out there somewhere?
I very much liked the demo setup for SG - would have given up on the system as too complex, had that not been available. I would like to see it extended such that there are some example users/roles in the standalone config, with pointers on how to separate the authentication & authorization, and I’m not the only one wrestling with how to do the proxy config.
I intend to forge ahead on this, and when it’s complete I’ll write a detailed post on what is required. I think there are some barriers to entry that are holding Search Guard back from broader adoption, which is a shame, because it’s a very nice system.