Skip to content

Commit 80b15fe

Browse files
committed
address feedback
1 parent 182858b commit 80b15fe

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/Security.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -789,14 +789,20 @@ private static void addTribeSettings(Settings settings, Settings.Builder setting
789789
// we passed all the checks now we need to copy in all of the x-pack security settings
790790
SecureSettings secureSettings = Settings.builder().put(settings).getSecureSettings(); // hack to get at secure settings...
791791
Set<String> secureSettingKeys = secureSettings == null ? Collections.emptySet() : secureSettings.getSettingNames();
792+
List<String> invalidSettings = new ArrayList<>();
792793
for (String k : settings.keySet()) {
793794
if (k.startsWith("xpack.security.")) {
794795
if (secureSettingKeys.contains(k)) {
795-
throw new IllegalArgumentException("Secure setting [" + k + "] cannot be used with tribe client node");
796+
invalidSettings.add(k);
797+
} else {
798+
settingsBuilder.copy(tribePrefix + k, k, settings);
796799
}
797-
settingsBuilder.copy(tribePrefix + k, k, settings);
798800
}
799801
}
802+
if (invalidSettings.isEmpty() == false) {
803+
throw new IllegalArgumentException("Secure settings " + invalidSettings.toString() +
804+
" cannot be used with tribe client node");
805+
}
800806
}
801807

802808
Map<String, Settings> realmsSettings = settings.getGroups(SecurityField.setting("authc.realms"), true);

x-pack/qa/tribe-tests-with-security/src/test/java/org/elasticsearch/xpack/security/SecurityTribeTests.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -560,14 +560,16 @@ public void testNoTribeSecureSettings() throws Exception {
560560
MockSecureSettings secureSettings = new MockSecureSettings();
561561
Path home = createTempDir();
562562
secureSettings.setString("xpack.security.http.ssl.keystore.secure_password", "dummypass");
563+
secureSettings.setString("xpack.security.authc.token.passphrase", "dummypass");
563564
Settings settings = Settings.builder().setSecureSettings(secureSettings)
564565
.put("path.home", home)
565566
.put("tribe.t1.cluster.name", "foo")
566567
.put("xpack.security.enabled", true).build();
567568
Security security = new Security(settings, home.resolve("config"));
568569
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, security::additionalSettings);
569-
assertThat(e.getMessage(),
570-
equalTo("Secure setting [xpack.security.http.ssl.keystore.secure_password] cannot be used with tribe client node"));
570+
// can't rely on order of the strings printed in the exception message
571+
assertThat(e.getMessage(), containsString("xpack.security.http.ssl.keystore.secure_password"));
572+
assertThat(e.getMessage(), containsString("xpack.security.authc.token.passphrase"));
571573
}
572574

573575
private void assertTribeNodeHasAllIndices() throws Exception {

0 commit comments

Comments
 (0)