Skip to content

Automatic userID tracking and blocking#4670

Merged
simon-id merged 163 commits intomasterfrom
automatic_userid_blocking
Feb 3, 2025
Merged

Automatic userID tracking and blocking#4670
simon-id merged 163 commits intomasterfrom
automatic_userid_blocking

Conversation

@simon-id
Copy link
Copy Markdown
Member

@simon-id simon-id commented Sep 11, 2024

What does this PR do?

Adds automatic User ID tracking when using passport.js

Changes:

  • Add instrumentation for passport deserializeUser
  • Add an IAST weak hash exclusion for express-session as it's using SHA1 for diff checking.
  • Make the user tracking SDK call the WAF whenever an ID or login is passed.
  • Make the user tracking SDK add the _dd.appsec.user.collection_mode: 'sdk' tag.
  • Use res.constructor.prototype.end() instead of res.end() in blocking.js to bypass express-session monkeypatch of that method.
  • Add automated user tracking and blocking for passport module.
  • Add instrum.user_auth.missing_user_id telemetry metric.
  • Remove rootSpan check from trackLogin() as it's already checked by the caller.
  • Add trackUser() method, called right after deserializeUser() finishes.
  • Update all relevant tests.

ST: DataDog/system-tests#3747

@simon-id simon-id self-assigned this Sep 11, 2024
@simon-id simon-id changed the title instrument passport Automatic userID blocking Sep 11, 2024
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Sep 11, 2024

Overall package size

Self size: 8.57 MB
Deduped: 94.96 MB
No deduping: 95.47 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.4.0 | 29.44 MB | 29.44 MB | | @datadog/native-appsec | 8.4.0 | 19.25 MB | 19.26 MB | | @datadog/native-iast-taint-tracking | 3.2.0 | 13.9 MB | 13.91 MB | | @datadog/pprof | 5.5.1 | 9.79 MB | 10.17 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.6.1 | 2.59 MB | 2.73 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.1.0 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 826.22 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Sep 11, 2024

Benchmarks

Benchmark execution time: 2025-01-31 10:25:10

Comparing candidate commit b9ffe92 in PR branch automatic_userid_blocking with baseline commit 6f79a86 in branch master.

Found 0 performance improvements and 3 performance regressions! Performance is the same for 905 metrics, 25 unstable metrics.

scenario:log-skip-log-20

  • 🟥 cpu_user_time [+18.221ms; +22.782ms] or [+5.087%; +6.360%]

scenario:log-without-log-20

  • 🟥 cpu_user_time [+17.348ms; +22.530ms] or [+5.183%; +6.731%]

scenario:plugin-graphql-with-async-hooks-22

  • 🟥 max_rss_usage [+104.857MB; +107.407MB] or [+19.247%; +19.715%]

@codecov
Copy link
Copy Markdown

codecov Bot commented Sep 17, 2024

Codecov Report

Attention: Patch coverage is 95.83333% with 2 lines in your changes missing coverage. Please review.

Project coverage is 81.10%. Comparing base (6f79a86) to head (b9ffe92).
Report is 8 commits behind head on master.

Files with missing lines Patch % Lines
packages/datadog-instrumentations/src/passport.js 89.47% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4670      +/-   ##
==========================================
+ Coverage   81.07%   81.10%   +0.02%     
==========================================
  Files         479      480       +1     
  Lines       21342    21386      +44     
==========================================
+ Hits        17303    17345      +42     
- Misses       4039     4041       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@simon-id simon-id marked this pull request as ready for review January 27, 2025 09:35
@simon-id simon-id requested review from a team as code owners January 27, 2025 09:35
Comment thread packages/dd-trace/src/appsec/sdk/set_user.js Outdated
Comment thread packages/dd-trace/src/appsec/sdk/set_user.js Outdated
Comment thread packages/dd-trace/src/appsec/sdk/set_user.js
Comment thread packages/dd-trace/src/appsec/user_tracking.js
@IlyasShabi
Copy link
Copy Markdown
Contributor

LGTM

@datadog-datadog-prod-us1
Copy link
Copy Markdown

Datadog Report

Branch report: automatic_userid_blocking
Commit report: 9f1652b
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 612 Passed, 0 Skipped, 11m 19.45s Total Time

@simon-id simon-id merged commit dbe0b74 into master Feb 3, 2025
@simon-id simon-id deleted the automatic_userid_blocking branch February 3, 2025 08:47
watson pushed a commit that referenced this pull request Feb 3, 2025
@watson watson mentioned this pull request Feb 3, 2025
watson pushed a commit that referenced this pull request Feb 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants