Commit Graph

1131 Commits

Author SHA1 Message Date
Tim Vernum f7e80e7fd2
Merge branch 'main' into feature/multi-project 2025-02-27 12:09:08 +11:00
Ryan Ernst cee43fd7d8
Add ignore_url for setting based files entitlement (#123541)
File entitlements which read a setting may actually contain urls. This
commit adds an optional `ignore_url` property for the entitlement to
skip any values which are urls.
2025-02-26 12:41:44 -08:00
Tim Vernum 597ab8a7e9 Merge branch 'main' into multi-project 2025-02-26 17:57:01 +11:00
Ryan Ernst 8176746754
Give NamedComponentReader access to read plugins directories (#123431)
The NamedComponentReader reads a file created upon plugin installation
for stable plugins from the plugin installation dir. This commit passes
the plugins directory through to entitlements and grants server access.
2025-02-26 00:44:03 +00:00
Ryan Ernst b5e482bc91
Enable entitlements by default (#122907)
Entitlements are almost complete. This commit enables them by default,
in preparation for 8.18/9.0.
2025-02-25 09:58:39 -08:00
Lorenzo Dematté f929270431
Fix how we suppress logs for self-tests (#123361) 2025-02-25 14:09:30 +00:00
Lorenzo Dematté 2f0e1dabf7
Missing log4j policy (#123360) 2025-02-25 13:55:25 +01:00
Lorenzo Dematté 4f6a0e6840
[Entitlements] Follows links during FileAccessTree creation (#123357) 2025-02-25 13:39:58 +01:00
Lorenzo Dematté 12fcdd8633
Some missing entitlements preventing serverless to start (#123271) 2025-02-25 10:19:15 +01:00
Ryan Ernst 9aaf07242c
Add pidfile access for server (#123313) 2025-02-25 10:18:56 +01:00
Ryan Ernst 5b0591e04a
Consider entitlement lib as system module (#123315)
* Consider entitlement lib as system module

Entitlements sometimes needs to perform sensitive operations,
particularly within the FileAccessTree. This commit expands the
trivially allowed check to include entitlements as one of the system
modules alongside the jdk. One consequence is that the self test must be
moved outside entitlements.

* [CI] Auto commit changes from spotless

* remove old method call

---------

Co-authored-by: elasticsearchmachine <infra-root+elasticsearchmachine@elastic.co>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2025-02-25 09:05:36 +01:00
Ryan Ernst 1c7d17c295
Remove unnecessary temp dir access (#123314)
All modules have read/write access to the temp dir. This commit removes
unnecessarily adding the temp dir explicitly to the server policy.
2025-02-25 01:48:07 +00:00
Tim Vernum 77bf65d9af Merge main into multi-project 2025-02-25 10:33:53 +11:00
Ryan Ernst 09a3ec1fb3
Add platform property to files entitlement (#123212)
Some file paths are OS specific. This commit adds a `platform` property
to each file in a files entitlement that can be used to limit that file
to a specific platform.

Co-authored-by: Moritz Mack <mmack@apache.org>
Co-authored-by: Lorenzo Dematte <lorenzo.dematte@elastic.co>
2025-02-24 22:17:25 +00:00
Ryan Ernst ad99b0d3e8
Add shared_repo relative dir for files entitlement (#123221)
This commit adds the shared repo path as a relative base dir. However,
it does not make this available to policy files, only to server.
2025-02-24 11:39:26 -08:00
Patrick Doyle 763e7cd44a
FileAccessTree fixes for ordering and pruning (#123291)
* Custom comparator for paths in FileAccessTree

* Strip trailing separators in normalizePath
2025-02-24 13:50:33 -05:00
Lorenzo Dematté c7bcdd37f4
[Entitlements] Cross-platform implementation of Path.isAbsolute() (#123282) 2025-02-24 18:27:36 +01:00
Tim Vernum fd9f8e1b08 Merge main into multi-project 2025-02-22 16:42:59 +11:00
Jack Conradson 7cbd305a16
Prune extraneous files entitlements paths to prevent incorrect binary search (#123177) 2025-02-22 01:45:39 +00:00
Patrick Doyle afd7e4e911
Misc non-java.base file entitlements (#123078)
* Misc non-java.base file entitlements

* Remove unnecessary dependency
2025-02-21 14:54:34 +00:00
Tim Vernum b29682c931 Merge revision b3959b6642 into multi-project 2025-02-21 19:28:00 +11:00
Patrick Doyle 3da1bb808f
Reduce warnings in entitlement REST tests (#123028) 2025-02-20 17:23:17 +01:00
Moritz Mack d1b7639784
Add missing entitlements discovered in IT tests (#123015) 2025-02-20 15:05:42 +01:00
Tim Vernum 4f918a81b9 Merge main into multi-project 2025-02-20 12:17:12 +11:00
Lorenzo Dematté a4c7d29675
[Entitlements] Instrumentation of NIO file channels (#122816) 2025-02-19 23:18:07 +01:00
Lorenzo Dematté 20b829fc14
[Entitlements] Add check functions for NIO Files (#122591) 2025-02-19 21:55:06 +01:00
Moritz Mack 2c15b68efa
[Entitlements] Log message for troubleshooting if not entitled (#122948)
Log message for troubleshooting if not entitled.
2025-02-20 06:13:54 +11:00
Patrick Doyle 877963c652
Miscellaneous java.base file entitlements (#122906)
* java.base entitlements

* SuppressForbidden, and add a missing test

* Revert logging back to commented-out printlns

* Merge FileCheckActions and rename for overloads

* Remove stray logger

* Remove more traces of logging change

* Remove more traces of logging
2025-02-19 13:17:15 -05:00
Moritz Mack 3b1825571d
Add missing entitlements for FIPS (#122941)
Add missing entitlements for FIPS
2025-02-20 03:36:10 +11:00
Patrick Doyle 17278183ea
Change printlns to log statements (#122935) 2025-02-19 15:57:43 +01:00
Tim Vernum de93304b95 Merge main into multi-project 2025-02-19 21:37:13 +11:00
David Turner 997233fd4e
Remove unused `@UpdateForV9` owners (#122748)
Several teams have completed all outstanding `@UpdateForV9` tasks, so
this commit removes the corresponding `Owner` symbols.
2025-02-19 21:06:13 +11:00
Tim Vernum 838d8389de Merge main into multi-project 2025-02-19 16:40:34 +11:00
Tim Vernum 81043b5ce0 Merge revision 2eb0d00b8f into multi-project 2025-02-19 16:00:15 +11:00
Ryan Ernst cffbccbb49
Add support for setting based file entitlements (#122656)
With Security Manager we have SecuredConfigFileSettingAccessPermission.
This commit adds an entitlement equivalent. With each entry in files
entitlement, a `path_setting` can now be used. The value may be an
explicit setting, or a setting glob with a single `*`.

relates ES-10844
2025-02-18 23:13:55 +01:00
Moritz Mack 8eb89cf7c1
Add entitlement checks for java.io stream classes (#122406) 2025-02-18 14:12:01 +01:00
Moritz Mack 87c58ff93f
[Entitlements] Add missing entitlements for trust store (#122797)
Add missing entitlements for trust store if running in fips mode.

Fixes #122546, fixes #122569, fixes #122568, fixes #122680, fixes
#122566
2025-02-18 23:32:05 +11:00
Lorenzo Dematté cf64bd31f6
Fix policy manager/parser absolute path checks (#122736) 2025-02-17 20:26:30 +01:00
Moritz Mack 67dc1995df
Support file entitlements relative to the user's home directory (#122724) 2025-02-17 17:56:02 +01:00
Ryan Ernst bf1cbb0e47
Instrument methods on File that require read permissions (#122544)
This commit adds instrumentation for File methods that require read permissions.

see #122109 for the write side
2025-02-17 16:27:42 +01:00
Ryan Ernst c211040470
Remove FileEntitlement (#122657)
This is no longer used since FilesEntitlement was added.
2025-02-17 06:08:00 -08:00
Ryan Ernst abfda89e19
Use records for FileData implementations (#122658)
This commit switches to using records in place of classes for FileData
impls. It moves them outside the interface so that they can be private.
This does not change the fact the interface is sealed, nor the factory
methods for creating them.
2025-02-17 06:07:33 -08:00
Tim Vernum 927e67bc5d Merge main into multi-project 2025-02-18 00:19:44 +11:00
Moritz Mack 7fd1addccf
[Entitlements] Instrument nio path (#122507) 2025-02-17 14:01:57 +01:00
Moritz Mack cc9679162f
[Entitlements] Add missing file entitlements for server (#122728)
Add missing file entitlements for server.

closes https://github.com/elastic/elasticsearch/issues/122569, closes
https://github.com/elastic/elasticsearch/issues/122568, closes
https://github.com/elastic/elasticsearch/issues/122567, closes
https://github.com/elastic/elasticsearch/issues/122566 

(Note, some failures are due to a `NoSuchAlgorithmException` when fips
is enabled. This issue is unrelated to entitlements)
2025-02-17 21:06:11 +11:00
Lorenzo Dematté 191f801f8c
[Entitlements] Add logsDir to entitlement bootstrap parameters (#122605)
While testing https://github.com/elastic/elasticsearch/pull/122591, I
realized we need to grand read/write permission to the logs dir to
server.

This PR adds the `logsDir` to the bootstrap parameters, and uses it in
the `server` policy.
2025-02-17 18:42:08 +11:00
Tim Vernum d271a48c2a Merge main into multi-project 2025-02-17 17:05:19 +11:00
Lorenzo Dematté 91413351ce
[Entitlements] Add ability to set path relative to a special directory for Files policies (#122370) 2025-02-14 18:08:08 +01:00
Lorenzo Dematté eff30608ce
Add file read entitlement check to library load functions (#122494) 2025-02-14 17:23:33 +01:00
Tim Vernum 680e7a6979 Merge revision 5c00341c2b into multi-project 2025-02-14 17:17:41 +11:00
Sam Xiao 5d48ded537
Improve SLM Health Indicator to cover missing snapshot (#121370)
Currently the SLM health indicator in health report turns YELLOW when snapshots fail for a number of times. However, the SLM health indicator stays GREEN if snapshot is not completed (no success or failure) for a long time. This change adds a new optional setting unhealthy_if_no_snapshot_within to SLM policy, that sets a time threshold. If the SLM policy has not had a successful snapshot for longer than the threshold, the SLM health indicator will turn YELLOW.
2025-02-14 09:54:26 +08:00
Ryan Ernst b8e4f4ea6a
Add temp dir access to all modules (#122525)
Temp dir access is necessary all over Elasticsearch, and in general is
not sensitive. With Security Manager all code in ES, including plugins,
are given read/write access to the temp dir. This commit mimicks that
behavior with entitlements.
2025-02-13 17:19:00 -08:00
Lorenzo Dematté 0810e66802
[Entitlements] Make `lookupImplementationMethod` inheritance-aware (#122474) 2025-02-13 22:08:29 +01:00
Patrick Doyle f8aa047994
Entitlements: manage_threads (#122261)
* Refactor: protected -> private

* Initial thread-related entitlements

* Entitlements from manual test runs

* Refactor: notEntitled method

* Entitlements reporting mode

* Entitlements from CI

* Revert "Entitlements reporting mode"

This reverts commit 443ca767333269a73accd0cedf9ca6c6ac51698a.

* Remove unnecessary EntitledActions.newThread

* Don't log in entitlements ITs by default

* Import SuppressForbidden

* Respond to PR comments

* Move manage_threads tests to their own file
2025-02-13 13:45:51 -05:00
Lorenzo Dematté bd242cccbc
[Entitlements] Instrumentation for FileSystemProvider (#122232) 2025-02-12 18:56:13 +01:00
Ryan Ernst 5f00b64ec7
Instrument methods on File that require write permission (#122109)
This commit adds instrumentation for File methods that require write
permission. No server or plugins use these methods, so no policy changes
were necessary. Note that since we are not planning to restrict temp
file creation, the bootstrap self test on file writing was removed,
which failed with these changes.
2025-02-12 06:20:34 -08:00
Lorenzo Dematté ec7f4ccb04
[Entitlements] Add FileStore instrumentation + tests (#122348) 2025-02-12 14:04:18 +01:00
Yang Wang 04d459009b Merge main into multi-project 2025-02-12 09:57:09 +11:00
Lorenzo Dematté a10f8a8c1c
[Entitlements] Fix "dynamic" instrumentation target class (#122197) 2025-02-11 08:48:00 +01:00
Tim Vernum 17657c0104
Remove TLSv1.1 from default protocols (#121731)
This commit removes "TLSv1.1" from the list of default protocols in
Elasticsearch (starting with ES9.0)

TLSv1.1 has been deprecated by the IETF since March 2021

This affects a variety of TLS contexts, include
 - The HTTP Server (Rest API)
 - Transport protocol (including CCS and CCR)
 - Outgoing connections for features that have configurable SSL
   settings. This includes
    - reindex
    - watcher
    - security realms (SAML, OIDC, LDAP, etc)
    - monitoring exporters
    - inference services

In practice, however, TLSv1.1 has been disabled in most Elasticsearch
deployments since around 7.12 because most JDK releases have disabled
TLSv1.1 (by default) starting in April 2021

That is, if you run a default installation of Elasticsearch (for any
currently supported version of ES) that uses the bundled JVM then
TLSv1.1 is already disabled.
And, since ES9+ requires JDK21+, all supported JDKs ship with TLSv1.1
disabled by default.

In addition, incoming HTTP connections to Elastic Cloud deployments
have required TLSv1.2 or higher since April 2020

This change simply makes it clear that Elasticsearch does not
attempt to enable TLSv1.1 and administrators who wish to use that
protocol will need to explicitly enable it in both the JVM and in
Elasticsearch.

Resolves: #108057
2025-02-10 09:12:52 +01:00
Ryan Ernst e32b9f48b0
Use dynamic policy for entitled test plugin (#121852)
Like the plugin being testing, the entitled test plugin needs access to
dynamic elements (namely, file paths). This commit dynamically generates
the entitlement policy for the entitlted test plugin when it is
installed. It also adds using the file entitltlement as an example.
2025-02-07 21:47:48 +01:00
Ryan Ernst 743e5d4c81
Remove assertion about theoretical path separators (#122069)
The only real path separators are either forward or back slash. Trying
to use something else like newline fails to even parse as a path on
windows. This commit removes testing of other separators.

closes #121872
2025-02-07 11:51:26 -08:00
Lorenzo Dematté 05340746bb
Missing providers from nio (#122004) 2025-02-07 17:09:36 +01:00
Lorenzo Dematté 20376e0762
[Entitlements] Add native checks support and tests for Java 21 (preview) (#121881) 2025-02-07 17:01:04 +01:00
Jack Conradson 8206411ee9
Merge all file entitlements into a single files entitlement (#121864)
This change replaces FileEntitlement with FilesEntitlement so that we can have exactly one entitlement 
class per module (or possibly future scope). This cleans up our policy files so that all files are located 
together to allow access, and this opens up the design for future optimizations.
2025-02-06 11:11:11 -08:00
Yang Wang b4d60b0c01 Merge main into multi-project 2025-02-06 14:15:37 +11:00
Patrick Doyle ba343c157b
Improved PolicyManager error reporting (#121824)
* Report componentName in ModuleEntitlements.

This lets us produce error messages that guide the user to add the right
entitlement to the right plugin/server/etc.

* Include component names in errors and logs

* Name APM agent specifically.

Avoids confusion with the entitlements agent.

* Entitlement component names package private

* [CI] Auto commit changes from spotless

---------

Co-authored-by: elasticsearchmachine <infra-root+elasticsearchmachine@elastic.co>
2025-02-06 00:58:36 +01:00
Yang Wang 38d74f7408 Merge main into multi-project 2025-02-06 10:04:49 +11:00
Patrick Doyle c1deef4467
Entitlement policies correct handling of prefixes that are not directories (#121598)
* Fix FileAccessTree for prefixes that aren't parents

* Support backslashes

* Whoops, nio

* Move normalization responsibility to FileEntitlement

* Normalize to native separators

* Avoid forbidden API
2025-02-05 20:04:43 +01:00
Jack Conradson 534e171275
Update policy parser to allow static methods for entitlement creation (#121706)
This updates the PolicyParser to allow static methods to have an ExternalEntitlement annotation. This 
removes a limitation where constructors cannot properly support type-erasure with different types of 
data structures for internal entitlement generation and external entitlement generation (for example 
List<Object> from the parser and List<SomeData> from an internal builder). We continue to enforce 
that only one constructor/method may be annotated with ExternalEntitlement per Entitlement class.
2025-02-05 08:57:12 -08:00
Ryan Ernst 5ab175ebc1
Move spi and system actions into separate classes (#121555)
This commit moves methods used to test spi and system actions out of
RestEntitlementsCheckAction into separate classes, to ease future
merges.
2025-02-05 16:37:02 +01:00
Yang Wang fee57daf53 Merge main into multi-project 2025-02-05 11:03:29 +11:00
Ryan Ernst 6389dfc2e7
Sort groups of instrumented methods (#121616)
Instrumented methods in EntitlementChecker are loosely grouped by the
associated entitlement. This commit sorts the methods within groups to
allow more clear placement of additional instrumented methods.
2025-02-04 15:27:29 -08:00
Lorenzo Dematté fdbd079bb0
[Entitlements] Fix Entitlement initialization to work across multiple versions (#121192) 2025-02-04 14:32:04 +01:00
Niels Bauman a15932159a Merge remote-tracking branch 'public/main' into merge-main 2025-02-04 11:19:42 +10:00
Patrick Doyle cc6e84ecd0
Remove entitlement reflection ITs. (#121550)
This is best tested in unit tests, not REST actions.
2025-02-03 20:25:11 +01:00
Patrick Doyle aa28d84792
Fix PolicyManager: plugin resolver overrides agent (#121456) 2025-02-03 16:10:01 +01:00
Niels Bauman 1b342b26ef Merge main into multi-project 2025-02-03 21:03:58 +10:00
Patrick Doyle 38a3844441
Entitlement tests using reflection (#121436)
* Entitlement IT cases for reflection

* EntitlementBootstrap selfTest using reflection

* Remove errant logging setting

* Lambdas instead of booleans

* [CI] Auto commit changes from spotless

* Refactor: Extract lambdas to method refs

---------

Co-authored-by: elasticsearchmachine <infra-root+elasticsearchmachine@elastic.co>
2025-01-31 19:18:17 +01:00
Patrick Doyle f205061e91
Reduce duplicate and dead entitlements code (#121409)
* Refactor: remove duplicate canWrite methods.

This serves as a good example of how Path and File handling could be
specialized in the future, but as long as they are identical, the duplication
causes more harm than good.

* Refactor: just one neverEntitled.

The original motivation was to avoid allocating a lambda object on each call,
but since that's a highly optimized operation in the JVM, it's unlikely to make
a difference in practice, and this smacks of premature optimization.

We're pretty liberal about lambdas elsewhere, so let's not sweat it here until
we have some evidence that it matters.

* Remove dead code
2025-01-31 16:29:53 +01:00
Ryan Ernst 37c929b9dc
Make entitlement IT tests reflective (#121355)
This commit adds an EntitlementTest annotation that can be used on
classes containing test actions for entitlements. The annotation mirrors
the parameters of CheckAction. Only file check actions are currently
converted, the rest can be moved and annotated as followups. Note that
the check action name is simply the method name, no fancy name
manipulation is done.
2025-01-31 16:09:51 +01:00
Ryan Ernst c3f752054e
Pass environment paths into entitlement bootstrap (#121347)
This commit adds the data dirs, config dir and temp dir into
entitlement bootstrapping. It doesn't yet use them in entitlement
policies, but makes them available to use within initialization.
2025-01-31 05:51:44 -08:00
Niels Bauman da7d58c06c Merge main into multi-project 2025-01-31 11:21:48 +10:00
Patrick Doyle 2bbf7c72db
Fix PolicyManagerTests after package move (#121304)
* Fix PolicyManagerTests after package move

* Unmute
2025-01-30 17:47:37 +01:00
Patrick Doyle 45c191ec55
Refactor: separate package for entitlement records (#121204) 2025-01-30 16:00:12 +01:00
Lorenzo Dematté e260f29464
[Entitlements] "dynamic" instrumentation method keys (#120811) 2025-01-30 12:29:24 +01:00
Niels Bauman 621a18d947 Merge main into multi-project 2025-01-30 17:26:28 +10:00
Jack Conradson 74e8ae5448
Add single flag entitlement validation (#121234)
This adds basic flag entitlement validation when creating PolicyManager. If a module has the same flag 
entitlement as part of it's policy multiple times we will throw an IllegalArgumentException. With this 
validation we can safely assume FileEntitlement is the only one we currently have that allows multiple entitlements in a policy.
2025-01-29 16:15:46 -08:00
Ryan Ernst e0b168d3f6
Add initial file entitlement check (#120243)
This commit adds FileEntitlement to entitlements. It does not add checks
for all file access methods yet, instead opting for example read and
write methods.

Each module contains a sorted array of paths with read and write
permissions. Binary search is used to quickly identify the closest path
to determine whether a target path can be read or written.

Some important things about FileEntitlement are the path can either be a
file or a directory. All directories grant recursive permission. The
mode is either read or read_write. All operations like create or delete
are considered write.

relates ES-10354

Co-authored-by: Jack Conradson <osjdconrad@gmail.com>
2025-01-28 21:13:31 +01:00
Jack Conradson 343ec0bcc3
Restrict apm agent entitlements to the apm package in an unnamed module (#120546)
This change closes a hole where we assumed any check against an unnamed-module from any 
classloader was for one of our apm agent. This was not the case and made it so scripts could in theory 
have the same entitlements as apm agent. Instead we now check to see if a class is part of the apm 
package in an unnamed module to ensure it's actually for the apm agent.

Relates to ES-10192
2025-01-28 07:18:22 -08:00
Lorenzo Dematté 436e604b90
[Entitlements] Add checks for native libraries restricted methods (#120775) 2025-01-28 13:08:05 +01:00
Moritz Mack a608f0626e
Added query param `?include_source_on_error` for ingest requests (#120725)
A new query parameter `?include_source_on_error` was added for create / index, update and bulk REST APIs to control
if to include the document source in the error response in case of parsing errors. The default value is `true`.
2025-01-28 09:33:22 +01:00
Patrick Doyle e3c5e975f9
Entitled plugin for testing (#120840)
* Entitled plugin

* [CI] Auto commit changes from spotless

* SuppressForbidden in entitled plugin

* Respond to PR comments

* Reinstate entitled plugin

* Make System_clearProperty package-private

---------

Co-authored-by: elasticsearchmachine <infra-root+elasticsearchmachine@elastic.co>
2025-01-27 12:57:15 -08:00
Moritz Mack 58b893e78b
[Entitlements] Deny setting global defaults for Locale / TimeZone (#120804)
Part of #ES-10359
2025-01-27 09:44:57 +01:00
Ryan Ernst 75b772d66c
Share more entitlement IT setup (#120846)
This commit adds an AbstractEntitlementsIT and moves the entitlement
cluster setup into a bespoke EntitlementTestRule. That allows most of
the common code to be deduplicated. This change also automatically
creates a temp dir which the test passes along into the test cluster.
2025-01-24 15:22:32 -08:00
Ryan Ernst 095621f801
Validate mrjar plugin versions (#120823)
The mrjar plugin adds support for sourcesets named in the form mainNN,
which adds the appropriate compiler and other settings for that version
of Java, and produces a multi-release jar. Having multi-release jars
only makes sense for versions of java newer than the minimum compile
version. This commit adds validation that the version is not too old.

Note that the check is slightly relaxed; it allows mainNN where NN is
equal to the min java version. This is due to the desire to keep
code using incubating modules separate because warnings must be
disabled.
2025-01-24 18:59:34 +00:00
Lorenzo Dematté 81a9348431
[Entitlements] Enable native access based on policies (#120638) 2025-01-24 08:29:38 +01:00
Niels Bauman 6495dcbb40 Merge main into multi-project 2025-01-24 15:48:39 +10:00
Lorenzo Dematté 0e5fe75250
Rename test-plugin to entitlement-test-plugin (#120696) 2025-01-23 14:37:00 +01:00
Niels Bauman 682cf0a18f Merge remote-tracking branch 'public/main' into merge-main 2025-01-23 13:27:52 +10:00
Ryan Ernst 14b1611cbb
Ensure entitlements have exactly one external constructor (#120665)
When an entitlement is available to policy files, it should have one
constructor that the parser uses. This commit adjusts the policy parser
to scan the constructor to find that one annotated constructor, and
errors if more than one is found.
2025-01-23 00:54:40 +00:00
Ryan Ernst 0b65bc1525
Refactor entitlement IT test to allow dynamic policy (#120443)
This commit combines the different entitlement test plugins used for
integration tests into a single plugin. When installing the plugin in
the integ test cluster, the entitlement policy and plugin properties are
adjusted to test the desired combination of settings. This allows the
plugin policy to be dynamically generated by each test, rather than rely
on a static policy.
2025-01-22 08:47:09 -08:00
Lorenzo Dematté d18b6790f4
[Entitlements] Refactor: create/parse entitlement policies earlier during bootstrap (#120611) 2025-01-22 14:29:57 +01:00
Lorenzo Dematté bdd2fc00d3
[Entitlements] Policy and checks for loading native libraries (#120044) 2025-01-22 14:00:40 +01:00
Simon Cooper e6a3aff093 Merge commit '13c75c02f0f328c1a3424cf68ac43d6551d7b007' into merge-main-22-01-25T12 2025-01-22 12:09:34 +00:00
Lorenzo Dematté 61e9a226b9
[Entitlements] Relax check in IT tests for FIPS environments (#120463) 2025-01-22 10:14:13 +01:00
Moritz Mack f1447fe821
[Entitlements] Instrument write access to System properties (#120357)
Instrument write access to System properties by means of the `WriteSystemPropertiesEntitlement`.
`System.setProperties(Properties)` is always denied.

Part of #ES-10359
2025-01-21 18:07:40 +01:00
Lorenzo Dematté 3fa2415db8
[Entitlements] Move some checks that use version-specific API (#120397) 2025-01-21 08:38:20 +01:00
Niels Bauman 6c7d2d285b Merge main into multi-project 2025-01-21 11:04:37 +10:00
Lorenzo Dematté cd86b3b497
[Entitlements] Refactor Network Entitlement (#120391) 2025-01-20 18:29:32 +01:00
Yang Wang 7a1f5c5d4f Merge main into multi-project 2025-01-20 11:17:40 +11:00
Jack Conradson 45e80f55be
Add `PolicyValdidationException` for entitlements (#120225)
This adds a new exception called PolicyValdidationException. This exception is intended to be used during construction of entitlements that require parsing additional arguments. This allows PolicyParser to give improved error messaging about a specific entitlement that may have failed during the parsing process.
2025-01-17 10:34:53 -08:00
Lorenzo Dematté a397fe9291
[Entitlements] Network access checks for NIO classes (#120138) 2025-01-17 11:54:27 +01:00
Lorenzo Dematté cbb7c24ada
[Entitlements] Network access checks for miscellanea (#120262) 2025-01-17 09:48:22 +01:00
Tim Vernum 552cec7ff0 Merge revision 34059c9dbd into multi-project 2025-01-17 16:32:15 +11:00
Craig Taverner 40c34cd896
Optimize ST_EXTENT_AGG for geo_shape and cartesian_shape (#119889)
Support for `ST_EXTENT_AGG` was added in https://github.com/elastic/elasticsearch/pull/118829, and then partially optimized in https://github.com/elastic/elasticsearch/pull/118829. This optimization worked only for cartesian_shape fields, and worked by extracting the Extent from the doc-values and re-encoding it as a WKB `BBOX` geometry. This does not work for geo_shape, where we need to retain all 6 integers stored in the doc-values, in order to perform the datelline choice only at reduce time during the final phase of the aggregation.

Since both geo_shape and cartesian_shape perform the aggregations using integers, and the original Extent values in the doc-values are integers, this PR expands the previous optimization by:
* Saving all Extent values into a multi-valued field in an IntBlock for both cartesian_shape and geo_shape
* Simplifying the logic around merging intermediate states for all cases (geo/cartesian and grouped and non-grouped aggs)
* Widening test cases for testing more combinations of aggregations and types, and fixing a few bugs found
* Enhancing cartesian extent to convert from 6 ints to 4 ints at block loading time (for efficiency)
* Fixing bugs in both cartesian and geo extents for generating intermediate state with missing groups (flaky tests in serverless)
* Moved the int order to always match Rectangle for 4-int and Extent for 6-int cases (improved internal consistency)

Since the PR already changed the meaning of the invalid/infinite values of the intermediate state integers, it was already not compatible with the previous cluster versions. We disabled mixed-cluster testing to prevent errors as a result of that. This leaves us the opportunity to make further changes that are mixed-cluster incompatible, hence the decision to perform this consistency update now.
2025-01-16 19:43:51 +01:00
Lorenzo Dematté 46a8e69dd6
[Entitlements] Introducing runtime version-specific checks in IT tests (#120265) 2025-01-16 15:50:41 +01:00
Simon Cooper 5a70623d8d Merge remote-tracking branch 'upstream-main/main' into merge-main-16-01-25 2025-01-16 09:23:46 +00:00
Lorenzo Dematté 1848d6bb93
[Entitlements] Network access checks on Sockets (#120093) 2025-01-15 22:01:56 +01:00
Lorenzo Dematté 19965d5794
Removing unneeded check on SSLSession#getSessionContext (#120191) 2025-01-15 15:32:59 +01:00
Lorenzo Dematté 1be9253779
[Entitlements] Network entitlement classes + Datagram socket check functions (#119735) 2025-01-14 09:08:15 +01:00
Lorenzo Dematté d3a1d9b509
Add "always denied" network access checks (#119867) 2025-01-13 09:26:55 +01:00
Tim Vernum 280fcb1a57 Merge main into multi-project 2025-01-09 19:39:24 +11:00
Lorenzo Dematté 78890e9312
Reintroduce entitlement check on System.exit (#119757) 2025-01-08 18:30:07 +01:00
Tim Vernum 60010f991e Merge main into multi-project 2025-01-08 13:02:38 +11:00
Patrick Doyle 6484f94614
Entitlements for JDK-wide global state changes (#119592)
* Refactor: separate check method name vs signature parsing

* Cosmetic: change checker comment format

* Entitlements for JDK-wide global state

* [CI] Auto commit changes from spotless

* Comment explaining entitlement add-exports

* @SuppressForbidden

* Refactor: rename dummy subclases

---------

Co-authored-by: elasticsearchmachine <infra-root+elasticsearchmachine@elastic.co>
2025-01-08 01:12:27 +00:00
Yang Wang e1151ef1ba Merge main into multi-project 2025-01-06 13:30:02 +11:00
Patrick Doyle 8ed9a5a825
Entitlement bootstrap self-test (#119376)
* Entitlement bootstrap self-test

* Add a permitted action to self-test

* Refactor: Move integrity checks to record constructors

* Self-test javadocs
2025-01-03 17:33:42 +00:00
Patrick Doyle 4eefc6d73b
Convert a few entitlements to records (#118705)
* Convert a few entitlements to records

* Make SetHttpsConnectionPropertiesEntitlement a record and fix tests
2025-01-03 17:12:44 +00:00
Jack Conradson 7297390378
Add entitlement checks for `java.lang.ClassLoader` (#119027)
This commit adds an entitlement for creating a classloader.
2025-01-02 21:55:00 +00:00
Lorenzo Dematté 5df57fda72
[Entitlements] Add `set_https_connection_properties` entitlement and checks (#118577) 2025-01-02 16:06:37 +01:00
Tim Vernum 8bf5c2d0cb Merge main into multi-project 2024-12-31 15:41:30 +11:00
Tim Vernum 4ff691f066 Merge revision 7fb6ca447a into multi-project 2024-12-31 15:41:02 +11:00
Patrick Doyle 401220868a
Mandatory class name (#118626)
* Use $$ for static check methods

* Always use class name from checker method name

* Spotless

* Varargs assertParseCheckerMethodSignatureThrows

* Remove hasReceiver again

* Spotless

* Cosmetic changes

* Change to new check method naming convention
2024-12-30 21:57:38 +00:00
Patrick Doyle 7c46556e21
Grant all entitlements to system modules (#119168)
* Grant all entitlements to system modules

* [CI] Auto commit changes from spotless

* Make NO_ENTITLEMENTS_MODULE non-null

* Initialize NO_ENTITLEMENTS_MODULE with @BeforeClass.

Looks like @WithoutSecurityManager doesn't work with static initializers.

* Move check to public method

* Logging adjustments

---------

Co-authored-by: elasticsearchmachine <infra-root+elasticsearchmachine@elastic.co>
2024-12-30 17:35:26 +00:00
Rene Groeschke ba61f8c7f7
Update Gradle wrapper to 8.12 (#118683)
This updates the gradle wrapper to 8.12

We addressed deprecation warnings due to the update that includes:

- Fix change in TestOutputEvent api
- Fix deprecation in groovy syntax
- Use latest ospackage plugin containing our fix
- Remove project usages at execution time
- Fix deprecated project references in repository-old-versions
2024-12-30 15:34:24 +01:00
Rene Groeschke 5278159987
Reapply "[Build] Do not invalidate configuration cache when branch is switched (#118894)" (#119300) (#119325)
* Reapply "[Build] Do not invalidate configuration cache when branch is switched (#118894)" (#119300)

The original PR (#118894) has broken serverless.

* Fix gitinfo plugin for serverless usage

* Update buildscan git revision reference
2024-12-30 08:54:42 +01:00
Mark Vieira 9d0f08bedf
Revert "[Build] Do not invalidate configuration cache when branch is switched (#118894)" (#119300)
This reverts commit f9c6a6c0b2.
2024-12-27 10:05:53 +11:00
Armin Braun e94f145350
Fix a bunch of non-final static fields (#119185)
Fixing almost all missing `final` spots, who knows maybe we get a small speedup from
some constant folding here and there.
2024-12-26 19:14:36 +01:00
Niels Bauman 3738202979 Merge main into multi-project 2024-12-24 18:26:13 +01:00
Rene Groeschke f9c6a6c0b2
[Build] Do not invalidate configuration cache when branch is switched (#118894)
* [Build] Do not invalidate configuration cache when branch is switched
* Update build tools tests
* Update GitInfoValueSource.java
2024-12-23 14:51:33 +00:00
Yang Wang e790688377 Merge main into multi-project 2024-12-22 19:36:33 +11:00
Patrick Doyle 730441855c
Add missing ProcessBuilder.start entitlements test (#119100) 2024-12-19 10:20:55 -08:00
Ryan Ernst 21bcc314c4
Limit which classes are retransformed (#118786)
During entitlements initialization the transformer is added to
instrumenation after some classes are already loaded. Currently we end
up force loading (though not initializing) all classes that want to
transform. This commit simplifies the retransform to only apply to
classes which we know are already loaded by the jdk, which
Instrumentation provides.
2024-12-19 08:59:23 -08:00
Yang Wang f7791a0f5f Merge main into multi-project 2024-12-19 14:36:37 +11:00
Patrick Doyle c3a59bb965
Process execution checks and IT tests (#119010)
* Process creation checks and IT tests

* Remove process queries; only forbid execution
2024-12-18 23:06:52 +00:00
Patrick Doyle 9cc362b966
Entitlements: More robust frame skipping (#118983)
* More robust frame skipping

* Cosmetic improvements for clarity

* Explicit set of runtime classes

* Pass entitlements runtime module to PolicyManager ctor

* Use the term "entitlements module" and filter instead of dropWhile

* [CI] Auto commit changes from spotless

---------

Co-authored-by: elasticsearchmachine <infra-root+elasticsearchmachine@elastic.co>
2024-12-18 19:08:51 +00:00
Tim Vernum affd6dfb5b Merge revision ce2a7dee86 into multi-project 2024-12-16 00:11:08 +11:00
Ryan Ernst b456e16c7d
Simplify instrumenter and tests (#118493)
This commit simplifies the entitlements instrumentation service and
instrumenter a bit. It especially removes some repetition in the
instrumenter tests.
2024-12-13 23:23:37 +00:00
Lorenzo Dematté 5411b93d49
Entitlements tools: public callers finder (#116257)
* WIP: Tool to find all public caller from a starting list of (JDK) methods.

* Add public-callers-finder tool, extract common stuff to common module

* Adjustments to visibility/functions and classes and modules to print out

* Spotless

* Missing gradle configuration

* Add details in README as requested in PR

* Update ASM version

* Including protected methods
2024-12-13 10:24:54 -05:00
Lorenzo Dematté 1bad1cf6b2
Implementing the correct exit functions (Runtime) (#118657) 2024-12-13 16:21:42 +01:00
Gal Lalouche 2be4cd983f
ESQL: Support ST_EXTENT_AGG (#117451)
This PR adds support for ST_EXTENT_AGG aggregation, i.e., computing a bounding box over a set of points/shapes (Cartesian or geo). Note the difference between this aggregation and the already implemented scalar function ST_EXTENT.

This isn't a very efficient implementation, and future PRs will attempt to read these extents directly from the doc values.
We currently always use longitude wrapping, i.e., we may wrap around the dateline for a smaller bounding box. Future PRs will let the user control this behavior.
Fixes #104659.
2024-12-13 12:41:24 +02:00
Yang Wang fda1fa19d4 Merge main into multi-project 2024-12-13 12:15:25 +11:00
Lorenzo Dematté f3dc0bdd50
[Entitlements] Differentiate between ES modules and plugins (external) (#117973) 2024-12-12 13:10:56 +01:00
Lorenzo Dematté 95315cc08c
Building scope -> entitlements map during PolicyManager initialization (#118070) 2024-12-12 09:28:58 +01:00
Tim Vernum e5a0739005 Merge main into multi-project 2024-12-12 17:23:24 +11:00
John Verwolf a560782995
Remove any references to V_7 (#118103)
This PR removes any references to org.elasticsearch.core.RestApiVersion#V_7.
2024-12-11 17:43:17 -08:00
Ryan Ernst 9837e782e1
Rename instrumenter tests (#118462)
The "sythetic" tests are the only unit tests for the instrumenter. This
commit renames the test suite to be more clear it is the place to put
instrumenter tests.
2024-12-11 17:09:21 +01:00
Lorenzo Dematté ea37a8acc0
[Entitlements] Moving and refactoring IT tests (#118254) 2024-12-11 15:55:02 +01:00
Ryan Ernst d7453159e8
Remove old instrumentation tests (#118411)
The newer "sythetic" tests cover all the cases of instrumentation
2024-12-11 05:54:00 -08:00
Jim Ferenczi b40a52035f
Add Optional Source Filtering to Source Loaders (#113827)
This change introduces optional source filtering directly within source loaders (both synthetic and stored).
The main benefit is seen in synthetic source loaders, as synthetic fields are stored independently.
By filtering while loading the synthetic source, generating the source becomes linear in the number of fields that match the filter.

This update also modifies the get document API to apply source filters earlier—directly through the source loader.
The search API, however, is not affected in this change, since the loaded source is still used by other features (e.g., highlighting, fields, nested hits),
and source filtering is always applied as the final step.
A follow-up will be required to ensure careful handling of all search-related scenarios.
2024-12-11 13:17:19 +00:00
Tim Vernum 64d5baf753 Merge main into multi-project 2024-12-11 16:40:08 +11:00
Lorenzo Dematté ba9e0cef4d
Do not try to enable SecurityManager on JDK 24 (#117999) 2024-12-10 18:00:58 +01:00
Chris Hegarty 836e55566b
Improve logging of native vector scorer - vec_caps (#118325)
This commit adds logging of the system's vector capability check, to help with diagnosing whether AVX2 or AVX 512 will be used.
2024-12-10 15:51:05 +00:00
Yang Wang b386491779 Merge main into multi-project 2024-12-09 09:29:42 +11:00
Lorenzo Dematté 7bd5c69c8c
Update ASM 9.7 -> 9.7.1 to support JDK 24 (#118094) 2024-12-06 08:16:46 +01:00
Ryan Ernst 3a292e982f
Add a diagram of how entitlements loading works (#117513)
This commit adds a diagram to source control that explains how the
entitlements lib is loaded.
2024-12-05 15:53:17 -08:00
Henrique Paes 4740b02a9b
Wrap jackson exception on malformed json string (#114445)
This commit hides the underlying Jackson parse exception when encountered while parsing string tokens.
2024-12-05 09:22:48 -08:00
Niels Bauman ffe911bd3c Merge main into multi-project 2024-12-05 13:25:44 +01:00
Lorenzo Dematté 724e0524bb
[Entitlements] Integrate PluginsLoader with PolicyManager (#117239)
This PR expands `PolicyManager` to actually use `Policy` and
`Entitlement` classes for checks, instead of hardcoding them.

It also introduces a separate `PluginsResolver`, with a dedicated
function to map a Class to a Plugin (name). `PluginsResolver` is
initialized with data from `PluginsLoader`, and then its resolve
function is used internally in `PolicyManager` to find a plugin policy
(and then test against the entitlements declared in the policy).
2024-12-05 20:29:03 +11:00
Niels Bauman 04da446e42 Merge main into multi-project 2024-12-04 23:18:13 +01:00
Lorenzo Dematté 435a0cc272
CreateClassLoaderEntitlement + extensions to parse logic (#117754) 2024-12-04 13:23:27 +01:00
Craig Taverner c7e985c3b6
Support ST_ENVELOPE and related ST_XMIN, etc. (#116964)
Support ST_ENVELOPE and related ST_XMIN, etc.

Based on the PostGIS equivalents:

https://postgis.net/docs/ST_Envelope.html
https://postgis.net/docs/ST_XMin.html
https://postgis.net/docs/ST_XMax.html
https://postgis.net/docs/ST_YMin.html
https://postgis.net/docs/ST_YMax.html
2024-12-04 12:20:47 +01:00
Simon Cooper 73645b2daf Merge remote-tracking branch 'upstream-main/main' into merge-main-031224 2024-12-03 15:48:16 +00:00
Benjamin Trent e10fc3c90d
Speed up bit compared with floats or bytes script operations (#117199)
Instead of doing an "if" statement, which doesn't lend itself to
vectorization, I switched to expand to the bits and multiply the 1s and
0s.

This led to a marginal speed improvement on ARM.

I expect that Panama vector could be used here to be even faster, but I
didn't want to spend anymore time on this for the time being.

```
Benchmark                                              (dims)   Mode  Cnt  Score   Error   Units
IpBitVectorScorerBenchmark.dotProductByteIfStatement      768  thrpt    5  2.952 ± 0.026  ops/us
IpBitVectorScorerBenchmark.dotProductByteUnwrap           768  thrpt    5  4.017 ± 0.068  ops/us
IpBitVectorScorerBenchmark.dotProductFloatIfStatement     768  thrpt    5  2.987 ± 0.124  ops/us
IpBitVectorScorerBenchmark.dotProductFloatUnwrap          768  thrpt    5  4.726 ± 0.136  ops/us
```

Benchmark I used.
https://gist.github.com/benwtrent/b0edb3975d2f03356c1a5ea84c72abc9
2024-12-03 04:19:03 +11:00
Ignacio Vera 79ce6e3872
Improve performance of H3.h3ToGeoBoundary (#117812)
There are two clear code paths depending if a h3 bin belongs to even resolutions (class II) or 
uneven resolutions (class III). especializing the code paths for each type leads to an improvement in performance.
2024-12-02 11:59:34 +01:00
Lorenzo Dematté c77f09e436
[Entitlements] Refactor InstrumenterImpl tests (#117688)
Following up
https://github.com/elastic/elasticsearch/pull/117332#discussion_r1856803255,
I refactored `InstrumenterImpl` tests, splitting them into 2 suites:  -
`SyntheticInstrumenterImplTests`, which tests the mechanics of
instrumentation using ad-hoc test cases. This should see little change
now that we have our Instrumenter working as intended -
`InstrumenterImplTests`, which is back to its original intent to make
sure (1) the right arguments make it all the way to the check methods,
and (2) if the check method throws, that exception correctly bubbles up
through the instrumented method.

The PR also includes a little change to `InstrumenterImpl`  construction
to clean it up a bit and make it more testable.
2024-11-30 19:38:40 +11:00
Yang Wang 92867cdf50 Merge main into multi-project 2024-11-29 08:50:54 +11:00
Jack Conradson 418cbbf7b9
Remove entitlement parameter (#117597)
Removes the "entitlement" parameter from policy parsing.
2024-11-27 07:56:54 -08:00
Niels Bauman 5fba9d8250 Merge remote-tracking branch 'public/main' into merge-main
# Conflicts:
#	server/src/main/java/org/elasticsearch/action/get/TransportGetAction.java
#	server/src/main/java/org/elasticsearch/action/get/TransportShardMultiGetAction.java
#	server/src/main/java/org/elasticsearch/action/search/TransportSearchAction.java
#	server/src/main/java/org/elasticsearch/cluster/routing/IndexRoutingTable.java
#	server/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java
#	server/src/main/java/org/elasticsearch/cluster/routing/ShardRouting.java
#	server/src/test/java/org/elasticsearch/cluster/routing/IndexRoutingTableTests.java
2024-11-27 13:57:22 +01:00
Lorenzo Dematté 9799d0082b
[Entitlements] Add support for instrumenting constructors (#117332) 2024-11-27 11:31:02 +01:00
Niels Bauman a008545bf3 Merge remote-tracking branch 'public/main' into merge-main 2024-11-26 13:10:41 +01:00
Benjamin Trent 374c88a832
Correct bit * byte and bit * float script comparisons (#117404)
I goofed on the bit * byte and bit * float comparisons. Naturally, these
should be bigendian and compare the dimensions with the binary ones
appropriately.

Additionally, I added a test to ensure that this is handled correctly.
2024-11-26 03:38:06 +11:00
Yang Wang b8f8656fda Merge main into multi-project 2024-11-23 16:55:53 +11:00
Ryan Ernst 129e174551
Fix entitlement tools to build (#117351)
This commit adjusts the common lib of entitlement tools to use
elasticsearch.build so that it gets java version configuration
automatically. Additionally the mrjar plugin is removed from the core
lib since it is not used there.
2024-11-22 21:24:50 +00:00
Ryan Ernst b45564364b
Add java version variants of entitlements checker (#116878)
As each version of Java is released, there may be additional methods we
want to instrument for entitlements. Since new methods won't exist in
the base version of Java that Elasticsearch is compiled with, we need to
hava different classes and compilation for each version.

This commit adds a scaffolding for adding the classes for new versions
of Java. Unfortunately it requires several classes in different
locations. But hopefully these are infrequent enough that the
boilerplate is ok. We could consider adding a helper Gradle task to
templatize the new classes in the future if it is too cumbersome. Note
that the example for Java23 does not have anything meaningful in it yet,
it's only meant as an example until we find go through classes and
methods that were added after Java 21.
2024-11-22 07:40:06 -08:00
Rene Groeschke f6ac6e1c3b
[Build] Remove deprecated BuildParams (#116984) 2024-11-22 16:30:57 +01:00
Tim Vernum 8f8fe06550 Merge revision de73397 into multi-project 2024-11-22 11:55:39 +11:00
Ryan Ernst a9451df218
Fix SecureSM to allow innocuous threads and threadgroups for parallel streams (#117277)
When a parallel stream is opened, the jdk uses an internal fork join
pool to do work on processing the stream. This pool is internal to the
jdk, and so it should always be allowed to create threads. This commit
modifies SecureSM to account for this innocuous thread group and
threads.
2024-11-21 21:11:04 +00:00
Jack Conradson 0e945127ed
Policy manager for entitlements (#116695) 2024-11-21 11:54:19 +01:00
Tim Vernum 442138e86d Merge main into multi-project 2024-11-21 21:10:53 +11:00
Lorenzo Dematté adcc5bed1e
[Entitlements] Implement entry point definitions via checker function signature (#116754) 2024-11-21 07:40:55 +01:00
Lorenzo Dematté 654c37c188
[Entitlements] Consider only system modules in the boot layer (#117017) 2024-11-21 07:34:32 +01:00
Tim Vernum 192ed6c5a4 Merge main into multi-project 2024-11-21 11:25:11 +11:00
Joe Gallo 123b1035a8
Optimize PipelineConfiguration-checking ClusterStateListeners (#117038) 2024-11-19 16:42:07 -05:00
Niels Bauman 0edb9fa778 Merge remote-tracking branch 'public/main' into merge-main
# Conflicts:
#	server/src/main/java/org/elasticsearch/action/search/TransportSearchShardsAction.java
#	server/src/main/java/org/elasticsearch/cluster/routing/allocation/AllocationStatsService.java
#	server/src/main/java/org/elasticsearch/gateway/GatewayMetaState.java
#	server/src/main/java/org/elasticsearch/plugins/Plugin.java
#	server/src/test/java/org/elasticsearch/gateway/GatewayMetaStateTests.java
#	server/src/test/java/org/elasticsearch/ingest/IngestMetadataTests.java
2024-11-18 10:53:12 +01:00
Rene Groeschke 13c8aaeffa
[Gradle] Remove static use of BuildParams (#115122)
Static fields dont do well in Gradle with configuration cache enabled.

- Use buildParams extension in build scripts
- Keep BuildParams.ci for now for easy serverless migration
-  Tweak testing doc
2024-11-15 17:58:57 +01:00
Lorenzo Dematté d702919fdb
[Entitlements] External IT test for checkSystemExit (#116435) 2024-11-13 09:36:40 +01:00
Tim Vernum 17c27bc42b Merge main into multi-project 2024-11-11 16:28:45 +11:00
Lorenzo Dematté f88a004030
Remove unused EntitlementInternals (#116473) 2024-11-08 16:08:54 +01:00