OpenSearch/plugins
Jay Modi 7ca5495d86
Allow custom authorization with an authorization engine (#38358)
For some users, the built in authorization mechanism does not fit their
needs and no feature that we offer would allow them to control the
authorization process to meet their needs. In order to support this,
a concept of an AuthorizationEngine is being introduced, which can be
provided using the security extension mechanism.

An AuthorizationEngine is responsible for making the authorization
decisions about a request. The engine is responsible for knowing how to
authorize and can be backed by whatever mechanism a user wants. The
default mechanism is one backed by roles to provide the authorization
decisions. The AuthorizationEngine will be called by the
AuthorizationService, which handles more of the internal workings that
apply in general to authorization within Elasticsearch.

In order to support external authorization services that would back an
authorization engine, the entire authorization process has become
asynchronous, which also includes all calls to the AuthorizationEngine.

The use of roles also leaked out of the AuthorizationService in our
existing code that is not specifically related to roles so this also
needed to be addressed. RequestInterceptor instances sometimes used a
role to ensure a user was not attempting to escalate their privileges.
Addressing this leakage of roles meant that the RequestInterceptor
execution needed to move within the AuthorizationService and that
AuthorizationEngines needed to support detection of whether a user has
more privileges on a name than another. The second area where roles
leaked to the user is in the handling of a few privilege APIs that
could be used to retrieve the user's privileges or ask if a user has
privileges to perform an action. To remove the leakage of roles from
these actions, the AuthorizationService and AuthorizationEngine gained
methods that enabled an AuthorizationEngine to return the response for
these APIs.

Ultimately this feature is the work included in:
#37785
#37495
#37328
#36245
#38137
#38219

Closes #32435
2019-02-05 13:39:29 -07:00
..
analysis-icu Default include_type_name to false in the yml test harness. (#38058) 2019-02-01 11:44:13 -08:00
analysis-kuromoji Default include_type_name to false in the yml test harness. (#38058) 2019-02-01 11:44:13 -08:00
analysis-nori Default include_type_name to false in the yml test harness. (#38058) 2019-02-01 11:44:13 -08:00
analysis-phonetic Default include_type_name to false in the yml test harness. (#38058) 2019-02-01 11:44:13 -08:00
analysis-smartcn Default include_type_name to false in the yml test harness. (#38058) 2019-02-01 11:44:13 -08:00
analysis-stempel Default include_type_name to false in the yml test harness. (#38058) 2019-02-01 11:44:13 -08:00
analysis-ukrainian Default include_type_name to false in the yml test harness. (#38058) 2019-02-01 11:44:13 -08:00
discovery-azure-classic Rename static Zen1 settings (#38333) 2019-02-05 08:46:52 +00:00
discovery-ec2 Rename static Zen1 settings (#38333) 2019-02-05 08:46:52 +00:00
discovery-gce Rename static Zen1 settings (#38333) 2019-02-05 08:46:52 +00:00
examples Allow custom authorization with an authorization engine (#38358) 2019-02-05 13:39:29 -07:00
ingest-attachment Update httpclient for JDK 11 TLS engine (#37994) 2019-01-30 14:24:29 -07:00
mapper-annotated-text Default include_type_name to false in the yml test harness. (#38058) 2019-02-01 11:44:13 -08:00
mapper-murmur3 Default include_type_name to false in the yml test harness. (#38058) 2019-02-01 11:44:13 -08:00
mapper-size Default include_type_name to false in the yml test harness. (#38058) 2019-02-01 11:44:13 -08:00
repository-azure Split third party audit exclusions by type (#36763) 2019-01-07 17:24:19 +02:00
repository-gcs Update httpclient for JDK 11 TLS engine (#37994) 2019-01-30 14:24:29 -07:00
repository-hdfs Update httpclient for JDK 11 TLS engine (#37994) 2019-01-30 14:24:29 -07:00
repository-s3 Update httpclient for JDK 11 TLS engine (#37994) 2019-01-30 14:24:29 -07:00
store-smb Removes typed calls from YAML REST tests (#37611) 2019-01-30 16:32:58 +00:00
transport-nio Extract message serialization from `TcpTransport` (#37034) 2019-01-21 14:14:18 -07:00
build.gradle Reorganize license files 2018-04-20 15:33:59 -07:00