Skip to content

Commit 081dea3

Browse files
Allow login event SDK to be used with appsec disabled
1 parent 5b04538 commit 081dea3

File tree

16 files changed

+614
-545
lines changed

16 files changed

+614
-545
lines changed

.circleci/config.continue.yml.j2

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -860,6 +860,8 @@ jobs:
860860
APPSEC_API_SECURITY
861861
APPSEC_API_SECURITY_RC
862862
APPSEC_API_SECURITY_WITH_SAMPLING
863+
APPSEC_AUTO_EVENTS_RC
864+
APPSEC_AUTO_EVENTS_EXTENDED
863865
APPSEC_WAF_TELEMETRY
864866
APPSEC_STANDALONE_V2
865867
IAST_STANDALONE_V2

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Agent.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import datadog.trace.api.Platform;
1717
import datadog.trace.api.StatsDClientManager;
1818
import datadog.trace.api.WithGlobalTracer;
19+
import datadog.trace.api.appsec.AppSecEventTracker;
1920
import datadog.trace.api.config.AppSecConfig;
2021
import datadog.trace.api.config.CiVisibilityConfig;
2122
import datadog.trace.api.config.CwsConfig;
@@ -812,6 +813,10 @@ private static StatsDClientManager statsDClientManager() throws Exception {
812813
}
813814

814815
private static void maybeStartAppSec(Class<?> scoClass, Object o) {
816+
817+
// event tracking SDK must be available for customers even if AppSec is fully disabled
818+
AppSecEventTracker.install();
819+
815820
if (!(appSecEnabled || (remoteConfigEnabled && !appSecFullyDisabled))) {
816821
return;
817822
}

dd-java-agent/appsec/src/main/java/com/datadog/appsec/AppSecSystem.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import datadog.remoteconfig.ConfigurationPoller;
1818
import datadog.trace.api.Config;
1919
import datadog.trace.api.ProductActivation;
20-
import datadog.trace.api.appsec.AppSecEventTracker;
2120
import datadog.trace.api.gateway.SubscriptionService;
2221
import datadog.trace.api.telemetry.ProductChange;
2322
import datadog.trace.api.telemetry.ProductChangeCollector;
@@ -100,8 +99,6 @@ private static void doStart(SubscriptionService gw, SharedCommunicationObjects s
10099

101100
Blocking.setBlockingService(new BlockingServiceImpl(REPLACEABLE_EVENT_PRODUCER));
102101

103-
AppSecEventTracker.setEventTracker(new AppSecEventTracker());
104-
105102
STARTED.set(true);
106103

107104
String startedAppSecModules = String.join(", ", STARTED_MODULES_INFO.values());

dd-java-agent/appsec/src/main/java/com/datadog/appsec/event/data/KnownAddresses.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,9 @@ public interface KnownAddresses {
133133
/** Login success business event */
134134
Address<String> LOGIN_SUCCESS = new Address<>("server.business_logic.users.login.success");
135135

136+
/** Sign up business event */
137+
Address<String> SIGN_UP = new Address<>("server.business_logic.users.signup");
138+
136139
/** The Exec command being executed */
137140
Address<String> EXEC_CMD = new Address<>("server.sys.exec.cmd");
138141

@@ -215,6 +218,8 @@ static Address<?> forName(String name) {
215218
return LOGIN_SUCCESS;
216219
case "server.business_logic.users.login.failure":
217220
return LOGIN_FAILURE;
221+
case "server.business_logic.users.signup":
222+
return SIGN_UP;
218223
case "server.sys.exec.cmd":
219224
return EXEC_CMD;
220225
case "server.sys.shell.cmd":

dd-java-agent/appsec/src/main/java/com/datadog/appsec/gateway/AppSecRequestContext.java

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.datadog.appsec.report.AppSecEvent;
99
import com.datadog.appsec.util.StandardizedLogging;
1010
import datadog.trace.api.Config;
11-
import datadog.trace.api.UserIdCollectionMode;
1211
import datadog.trace.api.http.StoredBodySupplier;
1312
import datadog.trace.api.internal.TraceSegment;
1413
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
@@ -136,10 +135,8 @@ public class AppSecRequestContext implements DataBundle, Closeable {
136135

137136
// keep a reference to the last published usr.id
138137
private volatile String userId;
139-
private volatile UserIdCollectionMode userIdSource;
140138
// keep a reference to the last published usr.login
141139
private volatile String userLogin;
142-
private volatile UserIdCollectionMode userLoginSource;
143140
// keep a reference to the last published usr.session_id
144141
private volatile String sessionId;
145142

@@ -533,36 +530,30 @@ public void setRespDataPublished(boolean respDataPublished) {
533530
this.respDataPublished = respDataPublished;
534531
}
535532

536-
public String getUserId() {
537-
return userId;
538-
}
539-
540-
public void setUserId(String userId) {
533+
/**
534+
* Updates the current used usr.id
535+
*
536+
* @return {@code false} if the user id has not been updated
537+
*/
538+
public boolean updateUserId(String userId) {
539+
if (Objects.equals(this.userId, userId)) {
540+
return false;
541+
}
541542
this.userId = userId;
543+
return true;
542544
}
543545

544-
public UserIdCollectionMode getUserIdSource() {
545-
return userIdSource;
546-
}
547-
548-
public void setUserIdSource(UserIdCollectionMode userIdSource) {
549-
this.userIdSource = userIdSource;
550-
}
551-
552-
public String getUserLogin() {
553-
return userLogin;
554-
}
555-
556-
public void setUserLogin(String userLogin) {
546+
/**
547+
* Updates current used usr.login
548+
*
549+
* @return {@code false} if the user login has not been updated
550+
*/
551+
public boolean updateUserLogin(String userLogin) {
552+
if (Objects.equals(this.userLogin, userLogin)) {
553+
return false;
554+
}
557555
this.userLogin = userLogin;
558-
}
559-
560-
public UserIdCollectionMode getUserLoginSource() {
561-
return userLoginSource;
562-
}
563-
564-
public void setUserLoginSource(UserIdCollectionMode userLoginSource) {
565-
this.userLoginSource = userLoginSource;
556+
return true;
566557
}
567558

568559
public void setSessionId(String sessionId) {

0 commit comments

Comments
 (0)