Commit 8230d2cb authored by Stephane Nicoll's avatar Stephane Nicoll

Merge pull request #3266 from lejeunen/master

* pull3266:
  Polish
  Better sanitizer default for sensitive keys
parents c3b344fd fd5d6ef3
/* /*
* Copyright 2012-2014 the original author or authors. * Copyright 2012-2015 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -26,6 +26,7 @@ import org.springframework.util.Assert; ...@@ -26,6 +26,7 @@ import org.springframework.util.Assert;
* @author Christian Dupuis * @author Christian Dupuis
* @author Toshiaki Maki * @author Toshiaki Maki
* @author Phillip Webb * @author Phillip Webb
* @author Nicolas Lejeune
*/ */
class Sanitizer { class Sanitizer {
...@@ -34,7 +35,7 @@ class Sanitizer { ...@@ -34,7 +35,7 @@ class Sanitizer {
private Pattern[] keysToSanitize; private Pattern[] keysToSanitize;
public Sanitizer() { public Sanitizer() {
setKeysToSanitize(new String[] { "password", "secret", "key" }); setKeysToSanitize("password", "secret", "key", ".*credentials.*", "vcap_services");
} }
/** /**
......
...@@ -37,6 +37,8 @@ import static org.junit.Assert.assertThat; ...@@ -37,6 +37,8 @@ import static org.junit.Assert.assertThat;
* *
* @author Phillip Webb * @author Phillip Webb
* @author Christian Dupuis * @author Christian Dupuis
* @author Nicolas Lejeune
* @author Stephane Nicoll
*/ */
public class EnvironmentEndpointTests extends AbstractEndpointTests<EnvironmentEndpoint> { public class EnvironmentEndpointTests extends AbstractEndpointTests<EnvironmentEndpoint> {
...@@ -68,12 +70,41 @@ public class EnvironmentEndpointTests extends AbstractEndpointTests<EnvironmentE ...@@ -68,12 +70,41 @@ public class EnvironmentEndpointTests extends AbstractEndpointTests<EnvironmentE
public void testKeySanitization() throws Exception { public void testKeySanitization() throws Exception {
System.setProperty("dbPassword", "123456"); System.setProperty("dbPassword", "123456");
System.setProperty("apiKey", "123456"); System.setProperty("apiKey", "123456");
System.setProperty("mySecret", "123456");
System.setProperty("myCredentials", "123456");
System.setProperty("VCAP_SERVICES", "123456");
EnvironmentEndpoint report = getEndpointBean(); EnvironmentEndpoint report = getEndpointBean();
Map<String, Object> env = report.invoke(); Map<String, Object> env = report.invoke();
assertEquals("******", assertEquals("******",
((Map<String, Object>) env.get("systemProperties")).get("dbPassword")); ((Map<String, Object>) env.get("systemProperties")).get("dbPassword"));
assertEquals("******", assertEquals("******",
((Map<String, Object>) env.get("systemProperties")).get("apiKey")); ((Map<String, Object>) env.get("systemProperties")).get("apiKey"));
assertEquals("******",
((Map<String, Object>) env.get("systemProperties")).get("mySecret"));
assertEquals("******",
((Map<String, Object>) env.get("systemProperties")).get("myCredentials"));
assertEquals("******",
((Map<String, Object>) env.get("systemProperties")).get("VCAP_SERVICES"));
}
@SuppressWarnings("unchecked")
@Test
public void testKeySanitizationCredentialsPattern() throws Exception {
System.setProperty("my.services.amqp-free.credentials.uri", "123456");
System.setProperty("credentials.http_api_uri", "123456");
System.setProperty("my.services.cleardb-free.credentials", "123456");
System.setProperty("foo.mycredentials.uri", "123456");
EnvironmentEndpoint report = getEndpointBean();
Map<String, Object> env = report.invoke();
assertEquals("******",
((Map<String, Object>) env.get("systemProperties")).get("my.services.amqp-free.credentials.uri"));
assertEquals("******",
((Map<String, Object>) env.get("systemProperties")).get("credentials.http_api_uri"));
assertEquals("******",
((Map<String, Object>) env.get("systemProperties")).get("my.services.cleardb-free.credentials"));
assertEquals("******",
((Map<String, Object>) env.get("systemProperties")).get("foo.mycredentials.uri"));
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
......
...@@ -607,7 +607,7 @@ content into your application; rather pick only the properties that you need. ...@@ -607,7 +607,7 @@ content into your application; rather pick only the properties that you need.
endpoints.configprops.id=configprops endpoints.configprops.id=configprops
endpoints.configprops.sensitive=true endpoints.configprops.sensitive=true
endpoints.configprops.enabled=true endpoints.configprops.enabled=true
endpoints.configprops.keys-to-sanitize=password,secret,key # suffix or regex endpoints.configprops.keys-to-sanitize=password,secret,key,.*credentials.*,vcap_services # suffix or regex
endpoints.dump.id=dump endpoints.dump.id=dump
endpoints.dump.sensitive=true endpoints.dump.sensitive=true
endpoints.dump.enabled=true endpoints.dump.enabled=true
...@@ -615,7 +615,7 @@ content into your application; rather pick only the properties that you need. ...@@ -615,7 +615,7 @@ content into your application; rather pick only the properties that you need.
endpoints.env.id=env endpoints.env.id=env
endpoints.env.sensitive=true endpoints.env.sensitive=true
endpoints.env.enabled=true endpoints.env.enabled=true
endpoints.env.keys-to-sanitize=password,secret,key # suffix or regex endpoints.env.keys-to-sanitize=password,secret,key,.*credentials.*,vcap_services # suffix or regex
endpoints.health.id=health endpoints.health.id=health
endpoints.health.sensitive=true endpoints.health.sensitive=true
endpoints.health.enabled=true endpoints.health.enabled=true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment