Skip to content

Commit a8ecd2f

Browse files
authored
Restrict master key reading from cluster settings API (opensearch-project#1825)
Signed-off-by: Vamsi Manohar <[email protected]>
1 parent f38ffed commit a8ecd2f

File tree

3 files changed

+45
-5
lines changed

3 files changed

+45
-5
lines changed

integ-test/src/test/java/org/opensearch/sql/datasource/DataSourceAPIsIT.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,10 @@
1717
import java.util.ArrayList;
1818
import java.util.List;
1919
import lombok.SneakyThrows;
20-
import org.apache.commons.lang3.StringUtils;
2120
import org.junit.AfterClass;
2221
import org.junit.Assert;
23-
import org.junit.BeforeClass;
2422
import org.junit.Test;
25-
import org.opensearch.action.update.UpdateRequest;
2623
import org.opensearch.client.Request;
27-
import org.opensearch.client.RequestOptions;
2824
import org.opensearch.client.Response;
2925
import org.opensearch.client.ResponseException;
3026
import org.opensearch.sql.datasource.model.DataSourceMetadata;
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.opensearch.sql.datasource;
7+
8+
import static org.hamcrest.Matchers.equalTo;
9+
10+
import java.io.IOException;
11+
import org.apache.logging.log4j.LogManager;
12+
import org.apache.logging.log4j.Logger;
13+
import org.json.JSONObject;
14+
import org.junit.Test;
15+
import org.opensearch.client.ResponseException;
16+
import org.opensearch.sql.legacy.TestUtils;
17+
import org.opensearch.sql.ppl.PPLIntegTestCase;
18+
19+
public class DatasourceClusterSettingsIT extends PPLIntegTestCase {
20+
21+
private static final Logger LOG = LogManager.getLogger();
22+
@Test
23+
public void testGetDatasourceClusterSettings() throws IOException {
24+
JSONObject clusterSettings = getAllClusterSettings();
25+
assertThat(clusterSettings.query("/defaults/plugins.query.datasources.encryption.masterkey"),
26+
equalTo(null));
27+
}
28+
29+
30+
@Test
31+
public void testPutDatasourceClusterSettings() throws IOException {
32+
final ResponseException exception =
33+
expectThrows(ResponseException.class, () -> updateClusterSettings(new ClusterSetting(PERSISTENT,
34+
"plugins.query.datasources.encryption.masterkey",
35+
"masterkey")));
36+
JSONObject resp = new JSONObject(TestUtils.getResponseBody(exception.getResponse()));
37+
assertThat(resp.getInt("status"), equalTo(400));
38+
assertThat(resp.query("/error/root_cause/0/reason"),
39+
equalTo("final persistent setting [plugins.query.datasources.encryption.masterkey], not updateable"));
40+
assertThat(resp.query("/error/type"), equalTo("settings_exception"));
41+
}
42+
43+
}

opensearch/src/main/java/org/opensearch/sql/opensearch/setting/OpenSearchSettings.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ public class OpenSearchSettings extends Settings {
113113
ENCYRPTION_MASTER_KEY.getKeyValue(),
114114
"0000000000000000",
115115
Setting.Property.NodeScope,
116-
Setting.Property.Final);
116+
Setting.Property.Final,
117+
Setting.Property.Filtered);
117118

118119
public static final Setting<String> DATASOURCE_URI_ALLOW_HOSTS = Setting.simpleString(
119120
Key.DATASOURCES_URI_ALLOWHOSTS.getKeyValue(),

0 commit comments

Comments
 (0)