Skip to content

Commit 0f1105d

Browse files
Remove remote configuration for API Security sampling rate (#8486)
Co-authored-by: Valentin Zakharov <[email protected]>
1 parent a951656 commit 0f1105d

File tree

6 files changed

+3
-111
lines changed

6 files changed

+3
-111
lines changed

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,7 @@ private static void doStart(SubscriptionService gw, SharedCommunicationObjects s
7373
// may throw and abort startup
7474
APP_SEC_CONFIG_SERVICE =
7575
new AppSecConfigServiceImpl(
76-
config,
77-
configurationPoller,
78-
requestSampler,
79-
() -> reloadSubscriptions(REPLACEABLE_EVENT_PRODUCER));
76+
config, configurationPoller, () -> reloadSubscriptions(REPLACEABLE_EVENT_PRODUCER));
8077
APP_SEC_CONFIG_SERVICE.init();
8178

8279
sco.createRemaining(config);

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

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import static datadog.remoteconfig.Capabilities.CAPABILITY_ENDPOINT_FINGERPRINT;
2525

2626
import com.datadog.appsec.AppSecSystem;
27-
import com.datadog.appsec.api.security.ApiSecurityRequestSampler;
2827
import com.datadog.appsec.config.AppSecModuleConfigurer.SubconfigListener;
2928
import com.datadog.appsec.config.CurrentAppSecConfig.DirtyStatus;
3029
import com.datadog.appsec.util.AbortStartupException;
@@ -72,7 +71,6 @@ public class AppSecConfigServiceImpl implements AppSecConfigService {
7271
private final Config tracerConfig;
7372
private final List<TraceSegmentPostProcessor> traceSegmentPostProcessors = new ArrayList<>();
7473
private final AppSecModuleConfigurer.Reconfiguration reconfiguration;
75-
private final ApiSecurityRequestSampler apiSecurityRequestSampler;
7674

7775
private final ConfigurationEndListener applyRemoteConfigListener =
7876
this::applyRemoteConfigListener;
@@ -82,12 +80,10 @@ public class AppSecConfigServiceImpl implements AppSecConfigService {
8280
public AppSecConfigServiceImpl(
8381
Config tracerConfig,
8482
ConfigurationPoller configurationPoller,
85-
ApiSecurityRequestSampler apiSecurityRequestSampler,
8683
AppSecModuleConfigurer.Reconfiguration reconfig) {
8784
this.tracerConfig = tracerConfig;
8885
this.configurationPoller = configurationPoller;
8986
this.reconfiguration = reconfig;
90-
this.apiSecurityRequestSampler = apiSecurityRequestSampler;
9187
}
9288

9389
private void subscribeConfigurationPoller() {
@@ -385,7 +381,6 @@ private void applyRemoteConfigListener() {
385381
// apply ASM_FEATURES configuration first as they might enable AppSec
386382
final AppSecFeatures features = mergedAsmFeatures.getMergedData();
387383
setAppSecActivation(features.asm);
388-
setApiSecuritySampling(features.apiSecurity);
389384
setUserIdCollectionMode(features.autoUserInstrum);
390385

391386
if (!AppSecSystem.isActive() || !currentAppSecConfig.dirtyStatus.isAnyDirty()) {
@@ -415,25 +410,6 @@ private void setAppSecActivation(final AppSecFeatures.Asm asm) {
415410
}
416411
}
417412

418-
private void setApiSecuritySampling(final AppSecFeatures.ApiSecurity apiSecurity) {
419-
final float newSampling;
420-
if (apiSecurity == null) {
421-
newSampling = tracerConfig.getApiSecurityRequestSampleRate();
422-
} else {
423-
newSampling = apiSecurity.requestSampleRate;
424-
}
425-
if (apiSecurityRequestSampler.setSampling(newSampling)) {
426-
int pct = apiSecurityRequestSampler.getSampling();
427-
if (pct == 0) {
428-
log.info("Api Security is disabled via remote-config");
429-
} else {
430-
log.info(
431-
"Api Security changed via remote-config. New sampling rate is {}% of all requests.",
432-
pct);
433-
}
434-
}
435-
}
436-
437413
private void setUserIdCollectionMode(final AppSecFeatures.AutoUserInstrum autoUserInstrum) {
438414
UserIdCollectionMode current = UserIdCollectionMode.get();
439415
UserIdCollectionMode newMode;

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

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
public class AppSecFeatures {
44
public Asm asm;
55

6-
@com.squareup.moshi.Json(name = "api_security")
7-
public ApiSecurity apiSecurity;
8-
96
@com.squareup.moshi.Json(name = "auto_user_instrum")
107
public AutoUserInstrum autoUserInstrum;
118

@@ -18,16 +15,6 @@ public String toString() {
1815
}
1916
}
2017

21-
public static class ApiSecurity {
22-
@com.squareup.moshi.Json(name = "request_sample_rate")
23-
public Float requestSampleRate;
24-
25-
@Override
26-
public String toString() {
27-
return "ApiSecurity{" + "requestSampleRate=" + requestSampleRate + '}';
28-
}
29-
}
30-
3118
public static class AutoUserInstrum {
3219
public String mode;
3320

@@ -39,13 +26,6 @@ public String toString() {
3926

4027
@Override
4128
public String toString() {
42-
return "AppSecFeatures{"
43-
+ "asm="
44-
+ asm
45-
+ ", apiSecurity="
46-
+ apiSecurity
47-
+ ", autoUserInstrum="
48-
+ autoUserInstrum
49-
+ '}';
29+
return "AppSecFeatures{" + "asm=" + asm + ", autoUserInstrum=" + autoUserInstrum + '}';
5030
}
5131
}

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

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public AppSecFeatures getMergedData() {
3131

3232
private AppSecFeatures merge(final AppSecFeatures target, final AppSecFeatures newFeatures) {
3333
mergeAsm(target, newFeatures.asm);
34-
mergeApiSecurity(target, newFeatures.apiSecurity);
3534
mergeAutoUserInstrum(target, newFeatures.autoUserInstrum);
3635
return target;
3736
}
@@ -43,14 +42,6 @@ private void mergeAsm(final AppSecFeatures target, final AppSecFeatures.Asm newV
4342
target.asm = newValue;
4443
}
4544

46-
private void mergeApiSecurity(
47-
final AppSecFeatures target, final AppSecFeatures.ApiSecurity newValue) {
48-
if (newValue == null || newValue.requestSampleRate == null) {
49-
return;
50-
}
51-
target.apiSecurity = newValue;
52-
}
53-
5445
private void mergeAutoUserInstrum(
5546
final AppSecFeatures target, final AppSecFeatures.AutoUserInstrum newValue) {
5647
if (newValue == null || newValue.mode == null) {

dd-java-agent/appsec/src/test/groovy/com/datadog/appsec/config/AppSecConfigServiceImplSpecification.groovy

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.datadog.appsec.config
22

33
import com.datadog.appsec.AppSecSystem
4-
import com.datadog.appsec.api.security.ApiSecurityRequestSampler
54
import com.datadog.appsec.util.AbortStartupException
65
import datadog.remoteconfig.ConfigurationChangesTypedListener
76
import datadog.remoteconfig.ConfigurationDeserializer
@@ -45,9 +44,8 @@ class AppSecConfigServiceImplSpecification extends DDSpecification {
4544

4645
ConfigurationPoller poller = Mock()
4746
def config = Mock(Class.forName('datadog.trace.api.Config'))
48-
ApiSecurityRequestSampler sampler = Mock(ApiSecurityRequestSampler)
4947
AppSecModuleConfigurer.Reconfiguration reconf = Stub()
50-
AppSecConfigServiceImpl appSecConfigService = new AppSecConfigServiceImpl(config, poller, sampler, reconf)
48+
AppSecConfigServiceImpl appSecConfigService = new AppSecConfigServiceImpl(config, poller, reconf)
5149

5250
void cleanup() {
5351
appSecConfigService?.close()
@@ -533,35 +531,6 @@ class AppSecConfigServiceImplSpecification extends DDSpecification {
533531
thrown IOException
534532
}
535533

536-
void 'update sample rate via remote-config'() {
537-
given:
538-
def newConfig = new AppSecFeatures().tap { features ->
539-
features.apiSecurity = new AppSecFeatures.ApiSecurity().tap { api ->
540-
api.requestSampleRate = 0.2
541-
}
542-
}
543-
def listeners = new SavedListeners()
544-
545-
when:
546-
appSecConfigService.init()
547-
appSecConfigService.maybeSubscribeConfigPolling()
548-
549-
then:
550-
1 * poller.addListener(Product.ASM_FEATURES, _, _) >> {
551-
listeners.savedFeaturesDeserializer = it[1]
552-
listeners.savedFeaturesListener = it[2]
553-
}
554-
1 * poller.addCapabilities(CAPABILITY_ASM_API_SECURITY_SAMPLE_RATE)
555-
1 * poller.addConfigurationEndListener(_) >> { listeners.savedConfEndListener = it[0] }
556-
557-
when:
558-
listeners.savedFeaturesListener.accept('asm_api_security', newConfig, null)
559-
listeners.savedConfEndListener.onConfigurationEnd()
560-
561-
then:
562-
1 * sampler.setSampling(0.2F)
563-
}
564-
565534
void 'update auto user instrum mode via remote-config'() {
566535
given:
567536
def listeners = new SavedListeners()

dd-java-agent/appsec/src/test/groovy/com/datadog/appsec/config/MergedAsmFeaturesSpecification.groovy

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,6 @@ class MergedAsmFeaturesSpecification extends Specification {
2525
features.mergedData.asm.enabled
2626
}
2727

28-
void 'test merging and removing api security sampling'() {
29-
setup:
30-
final features = new MergedAsmFeatures()
31-
32-
when:
33-
features.addConfig('api_security_1', apiSecurity(2.0))
34-
35-
then:
36-
features.mergedData.apiSecurity.requestSampleRate == 2.0
37-
38-
when:
39-
features.addConfig('api_security_1', apiSecurity(3.0))
40-
41-
then:
42-
features.mergedData.apiSecurity.requestSampleRate == 3.0
43-
}
44-
4528
void 'test merging and removing auto user instrum'() {
4629
setup:
4730
final features = new MergedAsmFeatures()
@@ -63,10 +46,6 @@ class MergedAsmFeaturesSpecification extends Specification {
6346
return new AppSecFeatures(asm: new AppSecFeatures.Asm(enabled: enabled))
6447
}
6548

66-
private static AppSecFeatures apiSecurity(float sampling) {
67-
new AppSecFeatures(apiSecurity: new AppSecFeatures.ApiSecurity(requestSampleRate: sampling))
68-
}
69-
7049
private static AppSecFeatures autoUserInstrum(UserIdCollectionMode mode) {
7150
new AppSecFeatures(autoUserInstrum: new AppSecFeatures.AutoUserInstrum(mode: mode.toString()))
7251
}

0 commit comments

Comments
 (0)