From 6038ea0821dbf2e6d1c86b757d0caa9c1609a209 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Tue, 12 Mar 2019 13:19:58 +0100 Subject: Log query params in audit log --- .../yahoo/vespa/hosted/controller/auditlog/AuditLogger.java | 12 +++++++++++- .../vespa/hosted/controller/auditlog/AuditLoggerTest.java | 5 +++-- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'controller-server') diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/auditlog/AuditLogger.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/auditlog/AuditLogger.java index 7d8bbb17361..67b81ffa703 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/auditlog/AuditLogger.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/auditlog/AuditLogger.java @@ -8,6 +8,7 @@ import com.yahoo.vespa.hosted.controller.persistence.CuratorDb; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.UncheckedIOException; +import java.net.URI; import java.nio.charset.StandardCharsets; import java.security.Principal; import java.time.Clock; @@ -67,7 +68,7 @@ public class AuditLogger { } Instant now = clock.instant(); - AuditLog.Entry entry = new AuditLog.Entry(now, principal.getName(), method.get(), request.getUri().getPath(), + AuditLog.Entry entry = new AuditLog.Entry(now, principal.getName(), method.get(), pathAndQueryOf(request.getUri()), Optional.of(new String(data, StandardCharsets.UTF_8))); try (Lock lock = db.lockAuditLog()) { AuditLog auditLog = db.readAuditLog() @@ -90,4 +91,13 @@ public class AuditLogger { } } + private static String pathAndQueryOf(URI url) { + String pathAndQuery = url.getPath(); + String query = url.getQuery(); + if (query != null) { + pathAndQuery += "?" + query; + } + return pathAndQuery; + } + } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/auditlog/AuditLoggerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/auditlog/AuditLoggerTest.java index 4354c1968e8..6470ce3663f 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/auditlog/AuditLoggerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/auditlog/AuditLoggerTest.java @@ -36,7 +36,7 @@ public class AuditLoggerTest { } { // PATCH request is logged in audit log - URI url = URI.create("http://localhost:8080/os/v1/"); + URI url = URI.create("http://localhost:8080/os/v1/?foo=bar"); String data = "{\"cloud\":\"cloud9\",\"version\":\"42.0\"}"; HttpRequest request = testRequest(Method.PATCH, url, data); tester.controller().auditLogger().log(request); @@ -44,7 +44,7 @@ public class AuditLoggerTest { assertEquals(instant(), log.get().entries().get(0).at()); assertEquals("user", log.get().entries().get(0).principal()); assertEquals(Entry.Method.PATCH, log.get().entries().get(0).method()); - assertEquals("/os/v1/", log.get().entries().get(0).resource()); + assertEquals("/os/v1/?foo=bar", log.get().entries().get(0).resource()); assertEquals(data, log.get().entries().get(0).data().get()); } @@ -55,6 +55,7 @@ public class AuditLoggerTest { tester.controller().auditLogger().log(request); assertEquals(2, log.get().entries().size()); assertEquals(instant(), log.get().entries().get(0).at()); + assertEquals("/os/v1/", log.get().entries().get(0).resource()); } { // 14 days pass and another PATCH request is logged. Older entries are removed due to expiry -- cgit v1.2.3