🔎 Open source distributed and RESTful search engine.
Go to file
Jay Modi 7d60f6b365 security: restore the correct user when switching to the system user
* security: restore the correct user when switching to the system user

For internal actions where we need to switch to the SystemUser, we should always restore the proper
context after execution. We were restoring an empty context for actions executed by the SystemUser
in the SecurityServerTransportInterceptor.

In order to accomplish this, a few changes have been made. Both the SecurityServerTransportInterceptor
and the SecurityActionFilter delegate to `SecurityContext#executeAsUser` when a user switch is necessary.
Tests were added for this method to ensure that the consumer is executed as the correct user and the proper
user is restored.

While working on this, a few other cleanups were made:

* SecurityContext can never have a null CryptoService, so a null check was removed
* We no longer replace the user with the system user when the system user is already associated with the request
* The security transport interceptor checks the license state and if auth is not allowed, delegate and return
* The security transport interceptor sendWithUser method now requires authentication to be present or a hard
exception is thrown.
* The TransportFilters integration test has been deleted. This was integration test that relied on the ability to
get instances from a node and trace the execution. This has been replaced by additional unit tests in
ServerTransportFilterTests

Closes elastic/elasticsearch#3845

Original commit: elastic/x-pack-elasticsearch@d8bcb59cb7
2016-10-25 13:48:28 -04:00
buildSrc Build: Change x-plugins setup with elasticsearch to a sibling directory 2015-11-23 14:20:48 -08:00
dev-tools Testing: Fix smoke tester 2016-10-19 15:21:38 +02:00
elasticsearch security: restore the correct user when switching to the system user 2016-10-25 13:48:28 -04:00
elasticsearch-transport-client build: use artifactId instead pom.projectIdentity.artifactId 2016-10-05 11:08:13 -04:00
license-tools Changes to support the removal of the now callable in core (elastic/elasticsearch#3685) 2016-10-07 10:26:42 +01:00
qa Handle reindex's change to whitelist 2016-10-18 21:46:30 -04:00
.dir-locals.el Update .dir-locals.el for enforced line length 2016-02-04 14:55:41 -07:00
.projectile Add .dir-locals.el and .projectile 2015-10-30 11:16:29 -06:00
GRADLE.CHEATSHEET.asciidoc Fixing grammar in GRADLE.CHEATSHEET 2016-05-18 14:17:13 -04:00
LICENSE.txt Initial X-Pack commit 2018-04-20 14:16:58 -07:00
README.asciidoc Update README.asciidoc 2016-05-09 14:05:19 +02:00
build.gradle Build: Reorganize src roots 2016-10-01 09:46:43 +02:00
gradle.properties Gradle daemon is a demon 2015-11-25 10:39:08 -05:00
settings.gradle Build: Change x-plugins setup with elasticsearch to a sibling directory 2015-11-23 14:20:48 -08:00

README.asciidoc

= Elasticsearch X Plugins

A set of Elastic's commercial plugins:

- License
- Security
- Watcher
- Monitoring

= Setup
You must checkout x-plugins and elasticsearch in the same directory as siblings. This
elasticsearch checkout will be used when building x-plugins.

= Build

- Run unit tests:
+
[source, txt]
-----
gradle clean test
-----

- Run all tests:
+
[source, txt]
-----
gradle clean check
-----

- Run integration tests:
+
[source, txt]
-----
gradle clean integTest
-----

- Package X-Pack (wihtout running tests)
+
[source, txt]
-----
gradle clean assemble
-----

- Install X-Pack (wihtout running tests)
+
[source, txt]
-----
gradle clean install
-----

- If you don't work on the UI side of x-plugins, you can force gradle to skip building kibana by adding
  `xpack.kibana.build=false` to your `~/.gradle/gradle.properties`. Alternatively you add `-Pxpack.kibana.build=false`
  on the command line if you only want to do this on individual builds (or `-Pxpack.kibana.build=true` if you need to
  override having added this to your `gradle.properties`).