Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatic userID tracking and blocking #4670

Open
wants to merge 161 commits into
base: master
Choose a base branch
from

Conversation

simon-id
Copy link
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
Copy link

github-actions bot commented Sep 11, 2024

Overall package size

Self size: 8.56 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.0 | 9.8 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

pr-commenter bot commented Sep 11, 2024

Benchmarks

Benchmark execution time: 2025-01-29 16:11:29

Comparing candidate commit cb4ceb6 in PR branch automatic_userid_blocking with baseline commit c0550a0 in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 910 metrics, 23 unstable metrics.

Copy link

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.08%. Comparing base (c0550a0) to head (9b1a4eb).

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.05%   81.08%   +0.02%     
==========================================
  Files         478      479       +1     
  Lines       21308    21352      +44     
==========================================
+ Hits        17271    17313      +42     
- Misses       4037     4039       +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
@IlyasShabi
Copy link
Contributor

LGTM

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