Commit Graph

368 Commits

Author SHA1 Message Date
jaymode c2a61d2207 [ldap] add user search with base dn and bind dn
This adds a second mode of operation to the ldap realm. This mode of operation
allows for single bind user to be specified. This bind user will be used to
search for user DNs starting from a base DN. The user DN will then be used to
authenticate via a bind operation. The bind user will then search for the user's
groups.

Closes elastic/elasticsearch#552
Closes elastic/elasticsearch#323

Original commit: elastic/x-pack-elasticsearch@3338730a64
2015-02-23 08:52:38 -05:00
jaymode d108faede3 [Test] AwaitsFix for tcp timeout tests. See elastic/elasticsearch#499
Original commit: elastic/x-pack-elasticsearch@31b79d51ac
2015-02-18 20:02:59 -05:00
jaymode cac922974d [Test] add a ldap search to the tcp timeout tests
If tests are run on the same machine as the ldap server a bind may be
succesfull. This adds a search to the test which should take longer than
1 millisecond for the server to respond.

Original commit: elastic/x-pack-elasticsearch@f37fb912e8
2015-02-18 18:20:59 -05:00
jaymode 52a2dd4acf [SSL/TLS] reduce logging when non https traffic is received on ssl channel
This removes the logging of an exception at the default log level when a incoming request in
the http transport is unencrypted and the http transport expects traffic to be encrypted.

Closes elastic/elasticsearch#561

Original commit: elastic/x-pack-elasticsearch@0cf23e8e9d
2015-02-18 10:27:20 -05:00
jaymode 4de8d04f9f [ldap] Migrate to using UnboundID SDK for LDAP
This migrates all of the LDAP code off of JNDI and makes use of the UnboundID
SDK to perform LDAP communication. As much as possible the behavior has
remained consistent. The minimum ldap search timeout is now 1s as UnboundID
only accepts this timeout in seconds; previously a value in milliseconds could be
specified.

Closes elastic/elasticsearch#694

Original commit: elastic/x-pack-elasticsearch@dd1c92bf91
2015-02-18 07:38:47 -05:00
Alexander Reelsen 17e16e2c53 Testing: Try to rebind in case of BindException
Original commit: elastic/x-pack-elasticsearch@e68e156a54
2015-02-17 15:36:07 +01:00
Alexander Reelsen 3f9f0fcadb Testing: Properly terminate thread pools
Original commit: elastic/x-pack-elasticsearch@a16cbed365
2015-02-17 15:21:28 +01:00
uboness a4a88c1a82 Updated ShieldVersion with version 1.0.1
Original commit: elastic/x-pack-elasticsearch@eea021633f
2015-02-12 17:54:47 -08:00
uboness d29cbe4ef7 Added NOTICE.txt
Original commit: elastic/x-pack-elasticsearch@aad60b86a8
2015-02-12 17:25:22 -08:00
jaymode 59fbf4d5f2 add the automaton library to the plugin zip
Original commit: elastic/x-pack-elasticsearch@6ceff1fc0f
2015-02-12 13:44:11 -08:00
jaymode af409e2ff8 [authz] fix Indices.Globals iterator to continue past a global without indices
If a Global permission is encountered that has no indices the iterator would not continue
to the rest of the entries. This change fixes the iterator to check if a Global has indices and
if not continues to look for a Global with indices permissions.

Closes elastic/elasticsearch#701

Original commit: elastic/x-pack-elasticsearch@5fbe318046
2015-02-12 12:58:22 -08:00
jaymode 6a8d971df1 [ldap] group search base_dn should not be null
JNDI will throw a NullPointerException when base_dn is not specified.
This should always be a non-null value that points to at least the base
of the directory or higher.

Closes elastic/elasticsearch#703

Original commit: elastic/x-pack-elasticsearch@825afcdd78
2015-02-12 12:36:41 -08:00
Robert Muir e7f141bd5c use brics automaton instead of lucene, so we don't depend on lucene
Closes elastic/elasticsearch#710

Original commit: elastic/x-pack-elasticsearch@71ca4e6241
2015-02-12 15:24:42 -05:00
jaymode 0aeeb8c26f [Test] Add tests using the Java default truststore to SslMultiPortTests
This adds a few tests using the Java default truststore (cacerts) to SslMultiPortTests
and validates that when using that truststore, the client cannot connect to a node
that is using a self signed certificate.

Original commit: elastic/x-pack-elasticsearch@d7c2eaa16b
2015-02-03 08:49:46 -05:00
jaymode f6b2950323 [cleanup] separate SSLService into ClientSSLService and ServerSSLService
Separates the SSLService into a ClientSSLService and a ServerSSLService. The ClientSSLService
should be used for client connections and removes the requirement for setting a keystore or a
truststore. The ServerSSLService maintains the existing requirement to have a keystore. Also, fixed
a small issue where the HandshakeWaitingHandlerTests called handshake more than once.

Closes elastic/elasticsearch#622

Original commit: elastic/x-pack-elasticsearch@67b6121b04
2015-02-03 07:44:24 -05:00
uboness 458daa2323 Add anonymous user support
When a request (rest/transport) that arrives to elasticsearch, and that has no authentication token associated with it, the request is then considered to be sent by an anonymous user. By default, we disallow anonymous requests and fail it by returning an authentication error.

Anonymous access can be enabled by configuring the `shield.authc.anonymous.roles` setting in `elasticsearch.yml` file. When set, an anonymous request will be associated with an `anonymous` user that holds the configured roles. From there on, authorization will continue as usual, and will try to authorize the request based on these roles.

Closes elastic/elasticsearch#376

Original commit: elastic/x-pack-elasticsearch@028b3a380b
2015-02-03 01:49:38 +01:00
uboness af86fcaa52 Update naming of assert message
relates to elastic/x-pack@22ca864cd1

Original commit: elastic/x-pack-elasticsearch@e7715a9c26
2015-01-29 19:57:36 +01:00
uboness 5c175503b7 [cleanup] renaming classes
mostly renamed `Secured....` classes to `Shield...` classes. applied to construct that replace other similar constructs either in es core or in other libraries. This will make it clear that the new constructs are coming from shield (in the logs). Also no need to call it "secured" as if shield replaces them, it's very likely they relate to security in one way or another :)

Original commit: elastic/x-pack-elasticsearch@f528a10b14
2015-01-29 17:14:18 +01:00
uboness dd5332500c fixed a license disabled behaviour
When the license is disabled (expired) we need to also block the nodes stats API

Fixes elastic/elasticsearch#671

Original commit: elastic/x-pack-elasticsearch@277c470889
2015-01-28 16:02:01 +01:00
javanna 82fc8fb9bf [TEST] add version compatibility check for aliases resolution code that needs updating with es core 1.5.0
Original commit: elastic/x-pack-elasticsearch@fb3a48bd02
2015-01-28 14:59:24 +01:00
javanna f709d4e9f0 [TEST] Fixed minor bug in IndexAliasesTests
Two aliases were supposed to be created, while only one was, which was also associated with a broken filter.

Original commit: elastic/x-pack-elasticsearch@695acbd668
2015-01-27 19:12:56 +01:00
javanna 21af0dafbf [TEST] Remove leftover assert in ClusterDiscoveryConfiguration
Same check is performed as part of VersionCompatibilityTests, assert can be removed.

Original commit: elastic/x-pack-elasticsearch@6e9241f646
2015-01-27 19:11:56 +01:00
Alexander Reelsen 37e392155b Merge branch 'pr/664'
Original commit: elastic/x-pack-elasticsearch@6811c189d1
2015-01-27 15:58:59 +01:00
Kevin Kluge 26d87fa3ef [docs] make download URLs consistent
make the download URL consistent:

- changed from elasticsearch-license to just license.
- file name will be "shield-{version}.zip".
- download location will be https://download.elasticsearch.org/elasticsearch/shield/{filename}
- update  URL for license download.
- update esvmrc to account for license plugin name change
- update error message for license plugin name change

Original commit: elastic/x-pack-elasticsearch@bebde15b4f
2015-01-27 15:40:24 +01:00
uboness 2582f4bb22 moving version to 2.0.0-SNAPSHOT
Original commit: elastic/x-pack-elasticsearch@51f1ee293f
2015-01-27 11:31:15 +01:00
uboness f43dda3abc changed license version to 1.0.0
Original commit: elastic/x-pack-elasticsearch@7b1f2428f8
2015-01-27 10:57:12 +01:00
uboness e7aeaee734 moving version to 1.0.0
Original commit: elastic/x-pack-elasticsearch@0a1c282324
2015-01-27 10:29:54 +01:00
uboness 9c3b72e782 [cleanup] removing redundant import
Original commit: elastic/x-pack-elasticsearch@ec386a9c22
2015-01-27 00:59:09 +01:00
uboness ca49afddfb [fix] sets treats the license as enabled by default
We need to assume the license is enabled until we're told otherwise by the license plugin. It's required as we should allow the execution of APIs (like cluster health) on a node that just started and didn't receive the cluster state yet.

Original commit: elastic/x-pack-elasticsearch@ce5fa68bfa
2015-01-27 00:27:00 +01:00
Alexander Reelsen 9121003c47 REST: Dont fail with NPE for unknown user
A NullPointerException was triggered in InternalAuthenticationService
in case a user did not exist because of trying to access the non-existing user.

While fixing this, a test added in IndexPrivilegeTests uncovered lots of wrong
assumptions about HTTP error codes, which have been fixed as well (a successful
operation now is expected to have a non 4XX/5XX HTTP return code). Also made sure
that certain preconditions are fulfilled before going on.

Fixes elastic/elasticsearch#646

Original commit: elastic/x-pack-elasticsearch@c4ed759e16
2015-01-26 20:37:04 +01:00
Alexander Reelsen 9b4566b72b Testing: Fix ClusterPrivilegeTests by using jsonBuilder instead of handcrafting JSON
Original commit: elastic/x-pack-elasticsearch@07d79b0f0c
2015-01-26 16:26:31 +01:00
Alexander Reelsen 383e41d6ca Snapshot Status: Allow system privilege to execute
As Elasticsearch 1.4.2 and below do not copy the headers in
TransportSnapshotsStatusAction, we need to allow the system user
to execute this in action, in order to see snapshots being currently
in progress.

This should be removed once we support elasticsearch 1.4.3

Closes elastic/elasticsearch#640

Original commit: elastic/x-pack-elasticsearch@00adf3dacf
2015-01-26 13:50:16 +01:00
Alexander Reelsen edc0bb86dc Functional Test: Test index privileges
This test adds an amount of users with different privileges, and
then goes on to not only test if the user is allowed to execute requests
but also if other requests are rejected as intended.

Closes elasticsearch/elasticsearch-shield-qaelastic/elasticsearch#17

Original commit: elastic/x-pack-elasticsearch@213a219c78
2015-01-26 10:17:34 +01:00
Alexander Reelsen d9023abfd0 Testing: Remove randomization on osx
The randomization of the `network.host` property on OSX only
could lead to connecting to the wrong HTTP port in our functional
tests.

As this randomization is not really needed, we can simply remove it

Closes elastic/elasticsearch#586

Original commit: elastic/x-pack-elasticsearch@fb16bd8644
2015-01-26 09:55:09 +01:00
uboness a6b992b1ea [perf] changed the default realm cache hasher
Changed form `bcrypt5` to `bcrypt4`. Also added more bcrypt hash algorithms to choose from when configuring it (added `bcrypt4`, `bcrypt6`, `bcrypt8` and `bcrypt9`)

Original commit: elastic/x-pack-elasticsearch@64bc26cafe
2015-01-25 21:32:51 +01:00
uboness 4e9c7bbf68 [cleanup] a small fix - add missing final
Original commit: elastic/x-pack-elasticsearch@1d4e708e47
2015-01-25 21:32:51 +01:00
Alexander Reelsen b61d601227 Tests: Made ShieldFilesTests check for posix support
Original commit: elastic/x-pack-elasticsearch@75bd823c9a
2015-01-25 19:59:47 +01:00
Alexander Reelsen f1bff033cc File permissions: Fixes and improvement
* Fix: `ShieldFiles.openAtomicMoveWriter()` always changed permissions to 600
  now changes back to original perms
* Fix: Required log message change by @skearns
* Improvement: When permissions change, before/after perms are now shown
* Improvement: Added more CheckFileCommand tests

Closes elastic/elasticsearch#634

Original commit: elastic/x-pack-elasticsearch@e44495aaff
2015-01-25 18:57:43 +01:00
uboness 4fb18bb65a [Perf] Introduced additional hashers
Introduced three new hasher implementations:

- `bcrypt5` - a bcrypt hasher configured with a salt generated with 5 iterations
- `bcrypt7` - a bcrypt hasher configured with a salt generated with 7 iterations
- `noop` - a hasher that doesn't hash and works with the original text

Also, due to poor performance and based on the external security audit review feedback, the default realm caching hash is now changed to `bcrypt5` (used to be `sha2`).

Original commit: elastic/x-pack-elasticsearch@53d4f40564
2015-01-24 22:59:33 +01:00
uboness b768ea9551 [Perf] Removed lazy creation of create_index action predicate
Instead of creating an automaton predicate on each request (very expensive) we now have a static create_index matcher (predicate) that is reused.

Original commit: elastic/x-pack-elasticsearch@f70dae13ac
2015-01-24 20:26:00 +01:00
uboness ac6b82ef7c Updated licensing behaviour
- on license expiration, we only block cluster stats/health and indices stats.
- depend on the latest snapshot of the licensing plugin that supports registrations of expiration callbacks
- registering expiration callbacks to periodically log and warn about license expiration (pre and post expiration)

Original commit: elastic/x-pack-elasticsearch@5aee30fac4
2015-01-24 00:25:06 +01:00
uboness 27fd142e0c Fixed version back to SNAPSHOT
Original commit: elastic/x-pack-elasticsearch@81b4d4cd09
2015-01-23 19:38:35 +01:00
c-a-m fd36c758b7 test: updated esvm for marvel and license plugins
This updates .esvmrc to get the latest license plugin, marvel, and reflects the latest configuration.
This sets the bind host and publish host to 127.0.0.1 so that hostname verification succeeds.

Original commit: elastic/x-pack-elasticsearch@a51046d130
2015-01-23 10:02:32 -07:00
uboness 8b95d0f71c Updated pom.xml
Changes reflect the restructuring of elasticsearch maven repo

- changed the repository names (for consistency sake)
- elasticsearch repositories now point to `/releases` and `/snapshots`
- added `deploy-internal` and `deploy-public` profiles

Original commit: elastic/x-pack-elasticsearch@92709ce38a
2015-01-23 15:10:18 +01:00
uboness 78f3e28cb8 Cleanup
- descriptive authentication messages
 - cleaned up a bit the `InternalAuthorizationService`

Original commit: elastic/x-pack-elasticsearch@47f485f1bc
2015-01-23 14:46:11 +01:00
uboness dd4a66bd6c Changed search and get privileges
- separated `get` privilege from `search`. This should make it simpler for users to only allow search (and not get) when working with filtered aliases
- added multi search under the `search` privilege
- added the multi get under the `get` privilege

Original commit: elastic/x-pack-elasticsearch@6fafb08a2c
2015-01-22 21:10:54 +01:00
uboness a25d603b93 Adds SUGGEST index privilege
The `suggest` action was also added to the `SEARCH` privilege as one can execute suggestions under the `_search` API as well.

 Closes elastic/elasticsearch#24

Original commit: elastic/x-pack-elasticsearch@672809e199
2015-01-22 19:39:12 +01:00
jaymode 97f229f667 SSL/TLS: Do not require keystore or truststore on for clients
This commit removes the requirement that a client using the SSLService must
have defined a keystore. Now for clients both the keystore and truststore are
optional; if neither are defined the system default trust managers will be used.

Closes elastic/elasticsearch#613

Original commit: elastic/x-pack-elasticsearch@1055a9666a
2015-01-22 13:22:22 -05:00
Alexander Reelsen 2986502984 CLI Tools: Add command to check for same permissions and owners after run
In case the creation of files changed the owner, group or the permissions, this command
will write an error message to the console.

Relates elastic/elasticsearch#517

Original commit: elastic/x-pack-elasticsearch@49aab5f712
2015-01-22 19:13:45 +01:00
jaymode c5028f7384 SSL/TLS: Allow control of SSL per profile
SSL can now be enabled or disabled per profile. This allows to have both
secured and unsecured client connections.

Closes elastic/elasticsearch#612

Original commit: elastic/x-pack-elasticsearch@53a7efa5b1
2015-01-22 07:39:37 -05:00