OpenSearch/plugins
Yogesh Gaikwad 471d940c44
Refactor cluster privileges and cluster permission (#45265) (#45442)
The current implementations make it difficult for
adding new privileges (example: a cluster privilege which is
more than cluster action-based and not exposed to the security
administrator). On the high level, we would like our cluster privilege
either:
- a named cluster privilege
  This corresponds to `cluster` field from the role descriptor
- or a configurable cluster privilege
  This corresponds to the `global` field from the role-descriptor and
allows a security administrator to configure them.

Some of the responsibilities like the merging of action based cluster privileges
are now pushed at cluster permission level. How to implement the predicate
(using Automaton) is being now enforced by cluster permission.

`ClusterPermission` helps in enforcing the cluster level access either by
performing checks against cluster action and optionally against a request.
It is a collection of one or more permission checks where if any of the checks
allow access then the permission allows access to a cluster action.

Implementations of cluster privilege must be able to provide information
regarding the predicates to the cluster permission so that can be enforced.
This is enforced by making implementations of cluster privilege aware of
cluster permission builder and provide a way to specify how the permission is
to be built for a given privilege.

This commit renames `ConditionalClusterPrivilege` to `ConfigurableClusterPrivilege`.
`ConfigurableClusterPrivilege` is a renderable cluster privilege exposed
as a `global` field in role descriptor.

Other than this there is a requirement where we would want to know if a cluster
permission is implied by another cluster-permission (`has-privileges`).
This is helpful in addressing queries related to privileges for a user.
This is not just simply checking of cluster permissions since we do not
have access to runtime information (like request object).
This refactoring does not try to address those scenarios.

Relates #44048
2019-08-13 09:06:18 +10:00
..
analysis-icu Upgrade to Lucene 8.2.0 release (#44859) (#44892) 2019-07-26 08:14:59 +02:00
analysis-kuromoji Upgrade to Lucene 8.2.0 release (#44859) (#44892) 2019-07-26 08:14:59 +02:00
analysis-nori Upgrade to Lucene 8.2.0 release (#44859) (#44892) 2019-07-26 08:14:59 +02:00
analysis-phonetic Upgrade to Lucene 8.2.0 release (#44859) (#44892) 2019-07-26 08:14:59 +02:00
analysis-smartcn Upgrade to Lucene 8.2.0 release (#44859) (#44892) 2019-07-26 08:14:59 +02:00
analysis-stempel Upgrade to Lucene 8.2.0 release (#44859) (#44892) 2019-07-26 08:14:59 +02:00
analysis-ukrainian Upgrade to Lucene 8.2.0 release (#44859) (#44892) 2019-07-26 08:14:59 +02:00
discovery-azure-classic Allow parsing the value of java.version sysprop (#44017) 2019-07-22 20:14:56 +03:00
discovery-ec2 [Backport] Enable caching of rest tests which use integ-test distribution (#44181) 2019-07-10 15:42:28 -07:00
discovery-gce [Backport] Enable caching of rest tests which use integ-test distribution (#44181) 2019-07-10 15:42:28 -07:00
examples Refactor cluster privileges and cluster permission (#45265) (#45442) 2019-08-13 09:06:18 +10:00
ingest-attachment [Backport] Improve build configuration time (#42674) 2019-05-30 10:29:42 -07:00
mapper-annotated-text Simplify handling of keyword field normalizers (#42002) 2019-05-10 14:38:46 +01:00
mapper-murmur3 Small refactorings to analysis components (#40745) 2019-04-03 14:22:16 +02:00
mapper-size Remove -Xlint exclusions in all plugins. (#40721) 2019-04-04 08:30:34 +02:00
repository-azure Reomve debugging loging statements from Azure tests 2019-07-22 16:55:55 +09:00
repository-gcs Remove blobExists Method from BlobContainer (#44472) (#44475) 2019-07-17 11:56:02 +02:00
repository-hdfs skip repository-hdfs integTest in case of fips jvm (#44319) 2019-07-18 21:10:53 +10:00
repository-s3 Remove Settings from BaseRestRequest Constructor (#45418) (#45429) 2019-08-12 05:14:45 +02:00
store-smb Remove usage of FileSwitchDirectory (#42937) 2019-06-12 19:35:27 +02:00
transport-nio Upgrade to Netty 4.1.38 (#45132) (#45364) 2019-08-09 03:38:14 +02:00
build.gradle Testclsuters: convert plugins qa projects (#41496) 2019-04-26 08:57:52 -07:00