|
@@ -65,7 +65,6 @@ import java.util.function.Predicate;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static org.elasticsearch.cluster.metadata.IndexMetaData.INDEX_FORMAT_SETTING;
|
|
|
-import static org.elasticsearch.discovery.DiscoveryModule.ZEN2_DISCOVERY_TYPE;
|
|
|
import static org.elasticsearch.xpack.core.security.index.RestrictedIndicesNames.SECURITY_MAIN_ALIAS;
|
|
|
import static org.elasticsearch.xpack.security.support.SecurityIndexManager.INTERNAL_MAIN_INDEX_FORMAT;
|
|
|
import static org.hamcrest.Matchers.containsString;
|
|
@@ -243,61 +242,6 @@ public class SecurityTests extends ESTestCase {
|
|
|
assertNull(joinValidator);
|
|
|
}
|
|
|
|
|
|
- public void testTLSJoinValidator() throws Exception {
|
|
|
- createComponents(Settings.EMPTY);
|
|
|
- BiConsumer<DiscoveryNode, ClusterState> joinValidator = security.getJoinValidator();
|
|
|
- assertNotNull(joinValidator);
|
|
|
- DiscoveryNode node = new DiscoveryNode("foo", buildNewFakeTransportAddress(), Version.CURRENT);
|
|
|
- joinValidator.accept(node, ClusterState.builder(ClusterName.DEFAULT).build());
|
|
|
- int numIters = randomIntBetween(1, 10);
|
|
|
- for (int i = 0; i < numIters; i++) {
|
|
|
- boolean tlsOn = randomBoolean();
|
|
|
- boolean securityExplicitlyEnabled = randomBoolean();
|
|
|
- String discoveryType = randomFrom("single-node", ZEN2_DISCOVERY_TYPE, randomAlphaOfLength(4));
|
|
|
-
|
|
|
- final Settings settings;
|
|
|
- if (securityExplicitlyEnabled) {
|
|
|
- settings = Settings.builder().put("xpack.security.enabled", true).build();
|
|
|
- } else {
|
|
|
- settings = Settings.EMPTY;
|
|
|
- }
|
|
|
- Security.ValidateTLSOnJoin validator = new Security.ValidateTLSOnJoin(tlsOn, discoveryType, settings);
|
|
|
- MetaData.Builder builder = MetaData.builder();
|
|
|
- License.OperationMode licenseMode = randomFrom(License.OperationMode.values());
|
|
|
- License license = TestUtils.generateSignedLicense(licenseMode.description(), TimeValue.timeValueHours(24));
|
|
|
- TestUtils.putLicense(builder, license);
|
|
|
- ClusterState state = ClusterState.builder(ClusterName.DEFAULT).metaData(builder.build()).build();
|
|
|
-
|
|
|
- final boolean expectFailure;
|
|
|
- switch (licenseMode) {
|
|
|
- case PLATINUM:
|
|
|
- case GOLD:
|
|
|
- case STANDARD:
|
|
|
- expectFailure = tlsOn == false && "single-node".equals(discoveryType) == false;
|
|
|
- break;
|
|
|
- case BASIC:
|
|
|
- expectFailure = tlsOn == false && "single-node".equals(discoveryType) == false && securityExplicitlyEnabled;
|
|
|
- break;
|
|
|
- case MISSING:
|
|
|
- case TRIAL:
|
|
|
- expectFailure = false;
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new AssertionError("unknown operation mode [" + license.operationMode() + "]");
|
|
|
- }
|
|
|
- logger.info("Test TLS join; Lic:{} TLS:{} Disco:{} Settings:{} ; Expect Failure: {}",
|
|
|
- licenseMode, tlsOn, discoveryType, settings.toDelimitedString(','), expectFailure);
|
|
|
- if (expectFailure) {
|
|
|
- IllegalStateException ise = expectThrows(IllegalStateException.class, () -> validator.accept(node, state));
|
|
|
- assertEquals("Transport TLS ([xpack.security.transport.ssl.enabled]) is required for license type ["
|
|
|
- + license.operationMode().description() + "] when security is enabled", ise.getMessage());
|
|
|
- } else {
|
|
|
- validator.accept(node, state);
|
|
|
- }
|
|
|
- validator.accept(node, ClusterState.builder(ClusterName.DEFAULT).metaData(MetaData.builder().build()).build());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
public void testJoinValidatorForFIPSLicense() throws Exception {
|
|
|
DiscoveryNode node = new DiscoveryNode("foo", buildNewFakeTransportAddress(),
|
|
|
VersionUtils.randomVersionBetween(random(), null, Version.CURRENT));
|