Skip to content

Commit 151c11b

Browse files
CarlesDDjuan-fernandez
authored andcommitted
[Appsec] AAP Requirements - Activation Origin (#6896)
* Update origin for appsec.enabled * Revert "Add appsec.enabled origin gauge metric (#5794)" This reverts commit c21e73b. * Remove telemetry test * New config singleton * Fix linting * Fix config + teset * Fix config in test * Refactor
1 parent 66b046c commit 151c11b

File tree

6 files changed

+85
-205
lines changed

6 files changed

+85
-205
lines changed

packages/dd-trace/src/appsec/telemetry/index.js

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,47 +16,17 @@ const {
1616
incrementWafConfigErrors,
1717
incrementWafRequests
1818
} = require('./waf')
19-
const telemetryMetrics = require('../../telemetry/metrics')
2019

2120
const metricsStoreMap = new WeakMap()
2221

23-
const appsecMetrics = telemetryMetrics.manager.namespace('appsec')
24-
2522
let enabled = false
26-
let interval
27-
const SUPPORTED_ORIGINS = new Set(['env_var', 'code', 'remote_config', 'unknown'])
2823

2924
function enable (config) {
30-
const telemetryConfig = config.telemetry
31-
enabled = telemetryConfig?.enabled && telemetryConfig.metrics
32-
33-
if (enabled) {
34-
let origin = 'remote_config'
35-
36-
if (config.appsec.enabled) {
37-
origin = config.getOrigin('appsec.enabled')
38-
39-
if (!SUPPORTED_ORIGINS.has(origin)) {
40-
origin = 'unknown'
41-
}
42-
}
43-
44-
const gauge = appsecMetrics.gauge('enabled', { origin })
45-
gauge.track()
46-
47-
interval = setInterval(() => {
48-
gauge.track()
49-
}, telemetryConfig.heartbeatInterval)
50-
interval.unref?.()
51-
}
25+
enabled = config.telemetry?.enabled && config.telemetry?.metrics
5226
}
5327

5428
function disable () {
5529
enabled = false
56-
if (interval) {
57-
clearInterval(interval)
58-
interval = undefined
59-
}
6030
}
6131

6232
function newStore () {

packages/dd-trace/src/remote_config/index.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const RemoteConfigManager = require('./manager')
66
const RemoteConfigCapabilities = require('./capabilities')
77
const { setCollectionMode } = require('../appsec/user_tracking')
88
const log = require('../log')
9+
const { updateConfig } = require('../telemetry')
910

1011
let rc
1112

@@ -62,7 +63,8 @@ function enable (config, appsec) {
6263

6364
function enableOrDisableAppsec (action, rcConfig, config, appsec) {
6465
if (typeof rcConfig.asm?.enabled === 'boolean') {
65-
const shouldEnable = action === 'apply' || action === 'modify'
66+
const isRemoteConfigControlling = action === 'apply' || action === 'modify'
67+
const shouldEnable = isRemoteConfigControlling
6668
? rcConfig.asm.enabled // take control
6769
: config.appsec.enabled // give back control to local config
6870

@@ -71,6 +73,14 @@ function enableOrDisableAppsec (action, rcConfig, config, appsec) {
7173
} else {
7274
appsec.disable()
7375
}
76+
77+
updateConfig([
78+
{
79+
name: 'appsec.enabled',
80+
origin: isRemoteConfigControlling ? 'remote_config' : config.getOrigin('appsec.enabled'),
81+
value: shouldEnable
82+
}
83+
], config)
7484
}
7585
}
7686

packages/dd-trace/test/appsec/index.spec.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,9 +1276,8 @@ describe('AppSec Index', function () {
12761276

12771277
const metrics = appsecNamespace.metrics.toJSON()
12781278

1279-
expect(metrics.series.length).to.equal(2)
1280-
expect(metrics.series[0].metric).to.equal('enabled')
1281-
expect(metrics.series[1].metric).to.equal('waf.init')
1279+
expect(metrics.series.length).to.equal(1)
1280+
expect(metrics.series[0].metric).to.equal('waf.init')
12821281
})
12831282

12841283
it('should not increment waf.init metric if metrics are not enabled', () => {

packages/dd-trace/test/appsec/telemetry/index.spec.js

Lines changed: 0 additions & 139 deletions
This file was deleted.

packages/dd-trace/test/appsec/telemetry/waf.spec.js

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -218,13 +218,13 @@ describe('Appsec Waf Telemetry metrics', () => {
218218
appsecTelemetry.incrementWafInitMetric(wafVersion, rulesVersion, true)
219219

220220
const { metrics } = appsecNamespace.toJSON()
221-
expect(metrics.series.length).to.be.eq(2)
222-
expect(metrics.series[1].metric).to.be.eq('waf.init')
223-
expect(metrics.series[1].points.length).to.be.eq(1)
224-
expect(metrics.series[1].points[0][1]).to.be.eq(3)
225-
expect(metrics.series[1].tags).to.include('waf_version:0.0.1')
226-
expect(metrics.series[1].tags).to.include('event_rules_version:0.0.2')
227-
expect(metrics.series[1].tags).to.include('success:true')
221+
expect(metrics.series.length).to.be.eq(1)
222+
expect(metrics.series[0].metric).to.be.eq('waf.init')
223+
expect(metrics.series[0].points.length).to.be.eq(1)
224+
expect(metrics.series[0].points[0][1]).to.be.eq(3)
225+
expect(metrics.series[0].tags).to.include('waf_version:0.0.1')
226+
expect(metrics.series[0].tags).to.include('event_rules_version:0.0.2')
227+
expect(metrics.series[0].tags).to.include('success:true')
228228
})
229229

230230
it('should increment waf.init and waf.config_errors on failed init', () => {
@@ -233,16 +233,16 @@ describe('Appsec Waf Telemetry metrics', () => {
233233
appsecTelemetry.incrementWafInitMetric(wafVersion, rulesVersion, false)
234234

235235
const { metrics } = appsecNamespace.toJSON()
236-
expect(metrics.series.length).to.be.eq(3)
237-
expect(metrics.series[1].metric).to.be.eq('waf.init')
236+
expect(metrics.series.length).to.be.eq(2)
237+
expect(metrics.series[0].metric).to.be.eq('waf.init')
238+
expect(metrics.series[0].tags).to.include('waf_version:0.0.1')
239+
expect(metrics.series[0].tags).to.include('event_rules_version:0.0.2')
240+
expect(metrics.series[0].tags).to.include('success:false')
241+
242+
expect(metrics.series[1].metric).to.be.eq('waf.config_errors')
238243
expect(metrics.series[1].tags).to.include('waf_version:0.0.1')
239244
expect(metrics.series[1].tags).to.include('event_rules_version:0.0.2')
240-
expect(metrics.series[1].tags).to.include('success:false')
241-
242-
expect(metrics.series[2].metric).to.be.eq('waf.config_errors')
243-
expect(metrics.series[2].tags).to.include('waf_version:0.0.1')
244-
expect(metrics.series[2].tags).to.include('event_rules_version:0.0.2')
245-
expect(metrics.series[2].tags).to.include('action:init')
245+
expect(metrics.series[1].tags).to.include('action:init')
246246
})
247247
})
248248

@@ -266,13 +266,13 @@ describe('Appsec Waf Telemetry metrics', () => {
266266
appsecTelemetry.incrementWafUpdatesMetric(wafVersion, rulesVersion, true)
267267

268268
const { metrics } = appsecNamespace.toJSON()
269-
expect(metrics.series.length).to.be.eq(2)
270-
expect(metrics.series[1].metric).to.be.eq('waf.updates')
271-
expect(metrics.series[1].points.length).to.be.eq(1)
272-
expect(metrics.series[1].points[0][1]).to.be.eq(3)
273-
expect(metrics.series[1].tags).to.include('waf_version:0.0.1')
274-
expect(metrics.series[1].tags).to.include('event_rules_version:0.0.2')
275-
expect(metrics.series[1].tags).to.include('success:true')
269+
expect(metrics.series.length).to.be.eq(1)
270+
expect(metrics.series[0].metric).to.be.eq('waf.updates')
271+
expect(metrics.series[0].points.length).to.be.eq(1)
272+
expect(metrics.series[0].points[0][1]).to.be.eq(3)
273+
expect(metrics.series[0].tags).to.include('waf_version:0.0.1')
274+
expect(metrics.series[0].tags).to.include('event_rules_version:0.0.2')
275+
expect(metrics.series[0].tags).to.include('success:true')
276276
})
277277
})
278278

@@ -296,13 +296,13 @@ describe('Appsec Waf Telemetry metrics', () => {
296296
appsecTelemetry.incrementWafConfigErrorsMetric(wafVersion, rulesVersion, true)
297297

298298
const { metrics } = appsecNamespace.toJSON()
299-
expect(metrics.series.length).to.be.eq(2)
300-
expect(metrics.series[1].metric).to.be.eq('waf.config_errors')
301-
expect(metrics.series[1].points.length).to.be.eq(1)
302-
expect(metrics.series[1].points[0][1]).to.be.eq(3)
303-
expect(metrics.series[1].tags).to.include('waf_version:0.0.1')
304-
expect(metrics.series[1].tags).to.include('event_rules_version:0.0.2')
305-
expect(metrics.series[1].tags).to.include('action:update')
299+
expect(metrics.series.length).to.be.eq(1)
300+
expect(metrics.series[0].metric).to.be.eq('waf.config_errors')
301+
expect(metrics.series[0].points.length).to.be.eq(1)
302+
expect(metrics.series[0].points[0][1]).to.be.eq(3)
303+
expect(metrics.series[0].tags).to.include('waf_version:0.0.1')
304+
expect(metrics.series[0].tags).to.include('event_rules_version:0.0.2')
305+
expect(metrics.series[0].tags).to.include('action:update')
306306
})
307307
})
308308

0 commit comments

Comments
 (0)