Skip to content

Commit c257bef

Browse files
committed
wip
1 parent 9228f4a commit c257bef

File tree

7 files changed

+14
-19
lines changed

7 files changed

+14
-19
lines changed

dd-java-agent/appsec/src/main/java/com/datadog/appsec/config/AppSecConfigServiceImpl.java

-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import static com.datadog.appsec.util.StandardizedLogging.RulesInvalidReason.INVALID_JSON_FILE;
44
import static datadog.remoteconfig.Capabilities.CAPABILITY_ASM_ACTIVATION;
5-
import static datadog.remoteconfig.Capabilities.CAPABILITY_ASM_API_SECURITY_SAMPLE_RATE;
65
import static datadog.remoteconfig.Capabilities.CAPABILITY_ASM_AUTO_USER_INSTRUM_MODE;
76
import static datadog.remoteconfig.Capabilities.CAPABILITY_ASM_CUSTOM_BLOCKING_RESPONSE;
87
import static datadog.remoteconfig.Capabilities.CAPABILITY_ASM_CUSTOM_RULES;
@@ -196,7 +195,6 @@ private void subscribeAsmFeatures() {
196195
log.debug("Will not subscribe report CAPABILITY_ASM_ACTIVATION (AppSec explicitly enabled)");
197196
}
198197
this.configurationPoller.addCapabilities(CAPABILITY_ASM_AUTO_USER_INSTRUM_MODE);
199-
this.configurationPoller.addCapabilities(CAPABILITY_ASM_API_SECURITY_SAMPLE_RATE);
200198
}
201199

202200
private void distributeSubConfigurations(
@@ -358,7 +356,6 @@ public void close() {
358356
| CAPABILITY_ASM_CUSTOM_RULES
359357
| CAPABILITY_ASM_CUSTOM_BLOCKING_RESPONSE
360358
| CAPABILITY_ASM_TRUSTED_IPS
361-
| CAPABILITY_ASM_API_SECURITY_SAMPLE_RATE
362359
| CAPABILITY_ASM_RASP_SQLI
363360
| CAPABILITY_ASM_RASP_SSRF
364361
| CAPABILITY_ASM_RASP_LFI

dd-java-agent/appsec/src/test/groovy/com/datadog/appsec/api/security/AppSecSpanPostProcessorTest.groovy

+12-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package com.datadog.appsec.api.security
22

33
import com.datadog.appsec.event.EventProducerService
44
import com.datadog.appsec.event.ExpiredSubscriberInfoException
5+
import com.datadog.appsec.event.data.KnownAddresses
56
import com.datadog.appsec.gateway.AppSecRequestContext
67
import datadog.trace.api.gateway.RequestContext
8+
import datadog.trace.api.internal.TraceSegment
79
import datadog.trace.bootstrap.instrumentation.api.AgentSpan
810
import datadog.trace.test.util.DDSpecification
911

@@ -16,6 +18,7 @@ class AppSecSpanPostProcessorTest extends DDSpecification {
1618
def subInfo = Mock(EventProducerService.DataSubscriberInfo)
1719
def span = Mock(AgentSpan)
1820
def reqCtx = Mock(RequestContext)
21+
def traceSegment = Mock(TraceSegment)
1922
def ctx = Mock(AppSecRequestContext)
2023
def processor = new AppSecSpanPostProcessor(sampler, producer)
2124

@@ -28,9 +31,11 @@ class AppSecSpanPostProcessorTest extends DDSpecification {
2831
1 * reqCtx.getData(_) >> ctx
2932
1 * ctx.isKeepOpenForApiSecurityPostProcessing() >> true
3033
1 * sampler.sampleRequest(_) >> true
31-
1 * producer.getDataSubscribers(_) >> subInfo
34+
1 * reqCtx.getTraceSegment() >> traceSegment
35+
1 * producer.getDataSubscribers(KnownAddresses.WAF_CONTEXT_PROCESSOR) >> subInfo
3236
1 * subInfo.isEmpty() >> false
3337
1 * producer.publishDataEvent(_, ctx, _, _)
38+
1 * ctx.commitDerivatives(traceSegment)
3439
1 * ctx.setKeepOpenForApiSecurityPostProcessing(false)
3540
1 * ctx.close()
3641
1 * sampler.releaseOne()
@@ -67,6 +72,7 @@ class AppSecSpanPostProcessorTest extends DDSpecification {
6772
def producer = Mock(EventProducerService)
6873
def span = Mock(AgentSpan)
6974
def reqCtx = Mock(RequestContext)
75+
def traceSegment = Mock(TraceSegment)
7076
def ctx = Mock(AppSecRequestContext)
7177
def processor = new AppSecSpanPostProcessor(sampler, producer)
7278

@@ -79,6 +85,7 @@ class AppSecSpanPostProcessorTest extends DDSpecification {
7985
1 * reqCtx.getData(_) >> ctx
8086
1 * ctx.isKeepOpenForApiSecurityPostProcessing() >> true
8187
1 * sampler.sampleRequest(_) >> true
88+
1 * reqCtx.getTraceSegment() >> traceSegment
8289
1 * producer.getDataSubscribers(_) >> null
8390
1 * ctx.setKeepOpenForApiSecurityPostProcessing(false)
8491
1 * ctx.close() >> { throw new RuntimeException() }
@@ -184,6 +191,7 @@ class AppSecSpanPostProcessorTest extends DDSpecification {
184191
def subInfo = Mock(EventProducerService.DataSubscriberInfo)
185192
def span = Mock(AgentSpan)
186193
def reqCtx = Mock(RequestContext)
194+
def traceSegment = Mock(TraceSegment)
187195
def ctx = Mock(AppSecRequestContext)
188196
def processor = new AppSecSpanPostProcessor(sampler, producer)
189197

@@ -196,6 +204,7 @@ class AppSecSpanPostProcessorTest extends DDSpecification {
196204
1 * reqCtx.getData(_) >> ctx
197205
1 * ctx.isKeepOpenForApiSecurityPostProcessing() >> true
198206
1 * sampler.sampleRequest(_) >> true
207+
1 * reqCtx.getTraceSegment() >> traceSegment
199208
1 * producer.getDataSubscribers(_) >> subInfo
200209
1 * subInfo.isEmpty() >> true
201210
1 * ctx.setKeepOpenForApiSecurityPostProcessing(false)
@@ -211,6 +220,7 @@ class AppSecSpanPostProcessorTest extends DDSpecification {
211220
def subInfo = Mock(EventProducerService.DataSubscriberInfo)
212221
def span = Mock(AgentSpan)
213222
def reqCtx = Mock(RequestContext)
223+
def traceSegment = Mock(TraceSegment)
214224
def ctx = Mock(AppSecRequestContext)
215225
def processor = new AppSecSpanPostProcessor(sampler, producer)
216226

@@ -223,6 +233,7 @@ class AppSecSpanPostProcessorTest extends DDSpecification {
223233
1 * reqCtx.getData(_) >> ctx
224234
1 * ctx.isKeepOpenForApiSecurityPostProcessing() >> true
225235
1 * sampler.sampleRequest(_) >> true
236+
1 * reqCtx.getTraceSegment() >> traceSegment
226237
1 * producer.getDataSubscribers(_) >> subInfo
227238
1 * subInfo.isEmpty() >> false
228239
1 * producer.publishDataEvent(_, ctx, _, _) >> { throw new ExpiredSubscriberInfoException() }

dd-java-agent/appsec/src/test/groovy/com/datadog/appsec/gateway/GatewayBridgeSpecification.groovy

+1-4
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ class GatewayBridgeSpecification extends DDSpecification {
8181
}
8282

8383
TraceSegmentPostProcessor pp = Mock()
84-
ApiSecurityRequestSampler requestSampler = Mock(ApiSecurityRequestSampler) {
85-
preSampleRequest(_ as AppSecRequestContext) >> false
86-
}
84+
ApiSecurityRequestSampler requestSampler = Mock(ApiSecurityRequestSampler)
8785
GatewayBridge bridge = new GatewayBridge(ig, eventDispatcher, requestSampler, [pp])
8886

8987
Supplier<Flow<AppSecRequestContext>> requestStartedCB
@@ -451,7 +449,6 @@ class GatewayBridgeSpecification extends DDSpecification {
451449
1 * ig.registerCallback(EVENTS.shellCmd(), _) >> { shellCmdCB = it[1]; null }
452450
1 * ig.registerCallback(EVENTS.user(), _) >> { userCB = it[1]; null }
453451
1 * ig.registerCallback(EVENTS.loginEvent(), _) >> { loginEventCB = it[1]; null }
454-
1 * ig.registerCallback(EVENTS.postProcessing(), _) >> { postProcessingCB = it[1]; null }
455452
0 * ig.registerCallback(_, _)
456453

457454
bridge.init()

dd-trace-api/src/main/java/datadog/trace/api/ConfigDefaults.java

-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ public final class ConfigDefaults {
107107
static final boolean DEFAULT_APPSEC_WAF_METRICS = true;
108108
static final int DEFAULT_APPSEC_WAF_TIMEOUT = 100000; // 0.1 s
109109
static final boolean DEFAULT_API_SECURITY_ENABLED = false;
110-
static final float DEFAULT_API_SECURITY_REQUEST_SAMPLE_RATE = 0.1f; // 10 %
111110
static final float DEFAULT_API_SECURITY_SAMPLE_DELAY = 30.0f;
112111
static final boolean DEFAULT_APPSEC_RASP_ENABLED = true;
113112
static final boolean DEFAULT_APPSEC_STACK_TRACE_ENABLED = true;

dd-trace-api/src/main/java/datadog/trace/api/config/AppSecConfig.java

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ public final class AppSecConfig {
2626
public static final String API_SECURITY_ENABLED = "api-security.enabled";
2727
public static final String API_SECURITY_ENABLED_EXPERIMENTAL =
2828
"experimental.api-security.enabled";
29-
public static final String API_SECURITY_REQUEST_SAMPLE_RATE = "api-security.request.sample.rate";
3029
public static final String API_SECURITY_SAMPLE_DELAY = "api-security.sample.delay";
3130

3231
public static final String APPSEC_SCA_ENABLED = "appsec.sca.enabled";

internal-api/src/main/java/datadog/trace/api/Config.java

-8
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,6 @@ public static String getHostName() {
288288
private final int appSecMaxStackTraces;
289289
private final int appSecMaxStackTraceDepth;
290290
private final boolean apiSecurityEnabled;
291-
private final float apiSecurityRequestSampleRate;
292291
private final float apiSecuritySampleDelay;
293292

294293
private final IastDetectionMode iastDetectionMode;
@@ -1315,9 +1314,6 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
13151314
apiSecurityEnabled =
13161315
configProvider.getBoolean(
13171316
API_SECURITY_ENABLED, DEFAULT_API_SECURITY_ENABLED, API_SECURITY_ENABLED_EXPERIMENTAL);
1318-
apiSecurityRequestSampleRate =
1319-
configProvider.getFloat(
1320-
API_SECURITY_REQUEST_SAMPLE_RATE, DEFAULT_API_SECURITY_REQUEST_SAMPLE_RATE);
13211317
apiSecuritySampleDelay =
13221318
configProvider.getFloat(API_SECURITY_SAMPLE_DELAY, DEFAULT_API_SECURITY_SAMPLE_DELAY);
13231319

@@ -2650,10 +2646,6 @@ public boolean isApiSecurityEnabled() {
26502646
return apiSecurityEnabled;
26512647
}
26522648

2653-
public float getApiSecurityRequestSampleRate() {
2654-
return apiSecurityRequestSampleRate;
2655-
}
2656-
26572649
public float getApiSecuritySampleDelay() {
26582650
return apiSecuritySampleDelay;
26592651
}

internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/SpanPostProcessor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Holder {
2727

2828
// XXX: At the moment, a single post-processor can be registered, and only AppSec defines one.
2929
// If other products add their own, we'll need to refactor this to support multiple processors.
30-
@Nonnull public static volatile SpanPostProcessor INSTANCE = NOOP;
30+
public static volatile SpanPostProcessor INSTANCE = NOOP;
3131
}
3232

3333
class NoOpSpanPostProcessor implements SpanPostProcessor {

0 commit comments

Comments
 (0)