Skip to content

Commit d16eb70

Browse files
authored
Grant server read/write permissions on shared data path "path.shared_data". (#131680)
Relates to ES-12447
1 parent ea9a57b commit d16eb70

File tree

11 files changed

+29
-1
lines changed

11 files changed

+29
-1
lines changed

docs/changelog/131680.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 131680
2+
summary: Grant server module read/write entitlements for deprecated path setting "path.shared_data"
3+
area: Infra/Core
4+
type: bug
5+
issues: []

libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/EntitlementBootstrap.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public class EntitlementBootstrap {
4646
* @param scopeResolver a functor to map a Java Class to the component and module it belongs to.
4747
* @param settingResolver a functor to resolve a setting name pattern for one or more Elasticsearch settings.
4848
* @param dataDirs data directories for Elasticsearch
49+
* @param sharedDataDir shared data directory for Elasticsearch (deprecated)
4950
* @param sharedRepoDirs shared repository directories for Elasticsearch
5051
* @param configDir the config directory for Elasticsearch
5152
* @param libDir the lib directory for Elasticsearch
@@ -63,6 +64,7 @@ public static void bootstrap(
6364
Function<Class<?>, PolicyManager.PolicyScope> scopeResolver,
6465
Function<String, Stream<String>> settingResolver,
6566
Path[] dataDirs,
67+
Path sharedDataDir,
6668
Path[] sharedRepoDirs,
6769
Path configDir,
6870
Path libDir,
@@ -82,6 +84,7 @@ public static void bootstrap(
8284
getUserHome(),
8385
configDir,
8486
dataDirs,
87+
sharedDataDir,
8588
sharedRepoDirs,
8689
libDir,
8790
modulesDir,

libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/HardcodedEntitlements.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import static org.elasticsearch.entitlement.runtime.policy.PathLookup.BaseDir.LOGS;
3838
import static org.elasticsearch.entitlement.runtime.policy.PathLookup.BaseDir.MODULES;
3939
import static org.elasticsearch.entitlement.runtime.policy.PathLookup.BaseDir.PLUGINS;
40+
import static org.elasticsearch.entitlement.runtime.policy.PathLookup.BaseDir.SHARED_DATA;
4041
import static org.elasticsearch.entitlement.runtime.policy.PathLookup.BaseDir.SHARED_REPO;
4142
import static org.elasticsearch.entitlement.runtime.policy.Platform.LINUX;
4243
import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.Mode.READ;
@@ -57,6 +58,7 @@ private static List<Scope> createServerEntitlements(Path pidFile) {
5758
FilesEntitlement.FileData.ofBaseDirPath(LOGS, READ_WRITE),
5859
FilesEntitlement.FileData.ofBaseDirPath(LIB, READ),
5960
FilesEntitlement.FileData.ofBaseDirPath(DATA, READ_WRITE),
61+
FilesEntitlement.FileData.ofBaseDirPath(SHARED_DATA, READ_WRITE),
6062
FilesEntitlement.FileData.ofBaseDirPath(SHARED_REPO, READ_WRITE),
6163
// exclusive settings file
6264
FilesEntitlement.FileData.ofRelativePath(Path.of("operator/settings.json"), CONFIG, READ_WRITE).withExclusive(true),

libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PathLookup.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ enum BaseDir {
2424
USER_HOME,
2525
CONFIG,
2626
DATA,
27+
SHARED_DATA,
2728
SHARED_REPO,
2829
LIB,
2930
MODULES,

libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PathLookupImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public record PathLookupImpl(
2525
Path homeDir,
2626
Path configDir,
2727
Path[] dataDirs,
28+
Path sharedDataDir,
2829
Path[] sharedRepoDirs,
2930
Path libDir,
3031
Path modulesDir,
@@ -56,6 +57,7 @@ public Stream<Path> getBaseDirPaths(BaseDir baseDir) {
5657
return switch (baseDir) {
5758
case USER_HOME -> Stream.of(homeDir);
5859
case DATA -> Arrays.stream(dataDirs);
60+
case SHARED_DATA -> Stream.ofNullable(sharedDataDir);
5961
case SHARED_REPO -> Arrays.stream(sharedRepoDirs);
6062
case CONFIG -> Stream.of(configDir);
6163
case LIB -> Stream.of(libDir);

libs/entitlement/src/test/java/org/elasticsearch/entitlement/bootstrap/FilesEntitlementsValidationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public static void beforeClass() {
4848
testBaseDir.resolve("user/home"),
4949
TEST_CONFIG_DIR,
5050
new Path[] { testBaseDir.resolve("data1"), testBaseDir.resolve("data2") },
51+
Path.of("/shareddata"),
5152
new Path[] { testBaseDir.resolve("shared1"), testBaseDir.resolve("shared2") },
5253
TEST_LIBS_DIR,
5354
testBaseDir.resolve("modules"),

libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ private static Path path(String s) {
5959
Path.of("/home"),
6060
Path.of("/config"),
6161
new Path[] { Path.of("/data1"), Path.of("/data2") },
62+
Path.of("/shareddata"),
6263
new Path[] { Path.of("/shared1"), Path.of("/shared2") },
6364
Path.of("/lib"),
6465
Path.of("/modules"),

libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyManagerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public static void beforeClass() {
7171
baseDir.resolve("/user/home"),
7272
baseDir.resolve("/config"),
7373
new Path[] { baseDir.resolve("/data1/"), baseDir.resolve("/data2") },
74+
Path.of("/shareddata"),
7475
new Path[] { baseDir.resolve("/shared1"), baseDir.resolve("/shared2") },
7576
baseDir.resolve("/lib"),
7677
baseDir.resolve("/modules"),

libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlementTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public static void setupRoot() {
4747
Path.of("/home"),
4848
Path.of("/config"),
4949
new Path[] { Path.of("/data1"), Path.of("/data2") },
50+
Path.of("/shareddata"),
5051
new Path[] { Path.of("/shared1"), Path.of("/shared2") },
5152
Path.of("/lib"),
5253
Path.of("/modules"),

server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ private static void initPhase2(Bootstrap bootstrap) throws IOException {
256256
scopeResolver::resolveClassToScope,
257257
nodeEnv.settings()::getValues,
258258
nodeEnv.dataDirs(),
259+
nodeEnv.sharedDataDir(),
259260
nodeEnv.repoDirs(),
260261
nodeEnv.configDir(),
261262
nodeEnv.libDir(),

0 commit comments

Comments
 (0)