This is an OpenShift plugin to ElasticSearch to:
- Dynamically update the SearchGuard ACL based on a user's name
- Transform kibana index requests to support multitenant deployments
With the update to use Searchguard-2 and Searchguard-SSL for ES 2.4.x, the OpenShift-Elasticsearch-Plugin assumes the initial ACLs are seeded when the cluster is started.
You can view sample configurations [here] (./samples/).
As with sgadmin, the plugin needs to use the certificate with a DN that matches
the searchguard.authcz.admin_dn as defined in the ES config to be able to
update the Searchguard index. You can specify the certificate and truststore information
for the esClient with the following properties.
| Property | Description |
|---|---|
| openshift.searchguard.keystore.path | The certificate that contains the cert and key for the admin_dn. Default: /usr/share/elasticsearch/config/admin.jks |
| openshift.searchguard.truststore.path | The truststore that contains the certificate for Elasticsearch. Default: /usr/share/elasticsearch/config/logging-es.truststore.jks |
| openshift.searchguard.keystore.password | The password to open the keystore. Default: kspass |
| openshift.searchguard.truststore.password | The password to open the truststore. Default: tspass |
| openshift.searchguard.keystore.type | The file type for the keystore. JKS or PKCS12 are accepted. Default: JKS |
| openshift.searchguard.truststore.type | The file type for the truststore. JKS or PKCS12 are accepted. Default: JKS |
You can configure which projects are deemed part of the .operations index for ACL configuration.
In your config file:
openshift.operations.project.names: ["default", "openshift", "openshift-infra"]
The defaults must all be in lower-case to be properly matched.
The following additional parameters can be set in set in elasticsearch.yml:
| Property | Description |
|---|---|
| io.fabric8.elasticsearch.acl.sync_delay_millis | The delay in milliseconds before the SG AGL document is resynced with OpenShift |
| io.fabric8.elasticsearch.acl.user_profile_prefix | The prefix to use to store Kibana user visualizations (default: .kibana.USERUUID) |
| io.fabric8.elasticsearch.kibana.mapping.app | Absolute file path to a JSON document that defines the index mapping for applications |
| io.fabric8.elasticsearch.kibana.mapping.ops | Absolute file path to a JSON document that defines the index mapping for operations |
| *io.fabric8.elasticsearch.kibana.mapping.empty | Absolute file path to a JSON document that defines the index mapping for blank indexes |
| openshift.config.project_index_prefix | The string value that project/namespace indices use as their prefix (default: ``) for example, with the |
common data model, if the namespace is test, the index name will be |
|
project.test.$uuid.YYYY.MM.DD. In this case, use "project" as the |
|
prefix - do not include the trailing .. |
Note: The io.fabric8.elasticsearch.kibana.mapping.* properties are required and must be defined for the plugin to function. A sample file
may be found in the samples folder.
Following are the dependencies
- [ElasticSearch 2.4.4] (https://github.com/elastic/elasticsearch/tree/2.4)
- [Search-Guard 2.4.4.10] (https://github.com/floragunncom/search-guard/tree/2.4.4.10)
- [Search-Guard-SSL 2.4.4.19] (https://github.com/floragunncom/search-guard-ssl/tree/2.4.4.19)
- Edit the Elasticsearch deployment config:
$oc edit dc/$ES_DCNAME
- Add environment variable:
...
spec:
containers:
- env:
- name: ES_JAVA_OPTS
value: -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4021
...
- Forward the debug port
oc port-forward $ES_PODNAME 4000:4021
Note: Mileage may vary here as this has not been verified since the plugin was compatible with ES1.7x
-Des.path.home=${env_var:ES_HOME} -Delasticsearch -Des.foreground=yes -Dfile.encoding=UTF-8 -Delasticsearch -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC
- Environment Variables:



