Sanitizer disable property added (#1531)
This commit is contained in:
parent
982d29709b
commit
81ecea1c91
2 changed files with 30 additions and 11 deletions
|
@ -1,6 +1,7 @@
|
|||
package com.provectus.kafka.ui.service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
@ -20,17 +21,27 @@ class KafkaConfigSanitizer extends Sanitizer {
|
|||
);
|
||||
|
||||
KafkaConfigSanitizer(
|
||||
@Value("${kafka.config.sanitizer.patterns:}") List<String> patternsToSanitize
|
||||
@Value("${kafka.config.sanitizer.enabled:true}") boolean enabled,
|
||||
@Value("${kafka.config.sanitizer.patterns:}") List<String> patternsToSanitize
|
||||
) {
|
||||
if (!enabled) {
|
||||
setKeysToSanitize();
|
||||
} else {
|
||||
var keysToSanitize = new HashSet<>(
|
||||
patternsToSanitize.isEmpty() ? DEFAULT_PATTERNS_TO_SANITIZE : patternsToSanitize);
|
||||
keysToSanitize.addAll(kafkaConfigKeysToSanitize());
|
||||
setKeysToSanitize(keysToSanitize.toArray(new String[]{}));
|
||||
}
|
||||
}
|
||||
|
||||
private static Set<String> kafkaConfigKeysToSanitize() {
|
||||
final ConfigDef configDef = new ConfigDef();
|
||||
SslConfigs.addClientSslSupport(configDef);
|
||||
SaslConfigs.addClientSaslSupport(configDef);
|
||||
final Set<String> keysToSanitize = configDef.configKeys().entrySet().stream()
|
||||
.filter(entry -> entry.getValue().type().equals(ConfigDef.Type.PASSWORD))
|
||||
.map(Map.Entry::getKey)
|
||||
.collect(Collectors.toSet());
|
||||
keysToSanitize.addAll(
|
||||
patternsToSanitize.isEmpty() ? DEFAULT_PATTERNS_TO_SANITIZE : patternsToSanitize);
|
||||
this.setKeysToSanitize(keysToSanitize.toArray(new String[0]));
|
||||
return configDef.configKeys().entrySet().stream()
|
||||
.filter(entry -> entry.getValue().type().equals(ConfigDef.Type.PASSWORD))
|
||||
.map(Map.Entry::getKey)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,9 +9,17 @@ import org.springframework.boot.actuate.endpoint.Sanitizer;
|
|||
|
||||
class KafkaConfigSanitizerTest {
|
||||
|
||||
@Test
|
||||
void doNothingIfEnabledPropertySetToFalse() {
|
||||
final Sanitizer sanitizer = new KafkaConfigSanitizer(false, Collections.emptyList());
|
||||
assertThat(sanitizer.sanitize("password", "secret")).isEqualTo("secret");
|
||||
assertThat(sanitizer.sanitize("sasl.jaas.config", "secret")).isEqualTo("secret");
|
||||
assertThat(sanitizer.sanitize("database.password", "secret")).isEqualTo("secret");
|
||||
}
|
||||
|
||||
@Test
|
||||
void obfuscateCredentials() {
|
||||
final Sanitizer sanitizer = new KafkaConfigSanitizer(Collections.emptyList());
|
||||
final Sanitizer sanitizer = new KafkaConfigSanitizer(true, Collections.emptyList());
|
||||
assertThat(sanitizer.sanitize("sasl.jaas.config", "secret")).isEqualTo("******");
|
||||
assertThat(sanitizer.sanitize("consumer.sasl.jaas.config", "secret")).isEqualTo("******");
|
||||
assertThat(sanitizer.sanitize("producer.sasl.jaas.config", "secret")).isEqualTo("******");
|
||||
|
@ -22,7 +30,7 @@ class KafkaConfigSanitizerTest {
|
|||
|
||||
@Test
|
||||
void notObfuscateNormalConfigs() {
|
||||
final Sanitizer sanitizer = new KafkaConfigSanitizer(Collections.emptyList());
|
||||
final Sanitizer sanitizer = new KafkaConfigSanitizer(true, Collections.emptyList());
|
||||
assertThat(sanitizer.sanitize("security.protocol", "SASL_SSL")).isEqualTo("SASL_SSL");
|
||||
final String[] bootstrapServer = new String[] {"test1:9092", "test2:9092"};
|
||||
assertThat(sanitizer.sanitize("bootstrap.servers", bootstrapServer)).isEqualTo(bootstrapServer);
|
||||
|
@ -30,7 +38,7 @@ class KafkaConfigSanitizerTest {
|
|||
|
||||
@Test
|
||||
void obfuscateCredentialsWithDefinedPatterns() {
|
||||
final Sanitizer sanitizer = new KafkaConfigSanitizer(Arrays.asList("kafka.ui", ".*test.*"));
|
||||
final Sanitizer sanitizer = new KafkaConfigSanitizer(true, Arrays.asList("kafka.ui", ".*test.*"));
|
||||
assertThat(sanitizer.sanitize("consumer.kafka.ui", "secret")).isEqualTo("******");
|
||||
assertThat(sanitizer.sanitize("this.is.test.credentials", "secret")).isEqualTo("******");
|
||||
assertThat(sanitizer.sanitize("this.is.not.credential", "not.credential"))
|
||||
|
|
Loading…
Add table
Reference in a new issue