-
Notifications
You must be signed in to change notification settings - Fork 136
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
dashboard telemetry is sending non anonymized data to twilio segment #3612
Comments
thank you @gberche-orange good cacth! will consider it as a priority |
Thank you @gberche-orange! I see two problems here:
The 1st issue has been fixed at #3609. The 2nd is more problematic - at the moment Segment's client doesn't allow us to limit the data. I created an issue (segmentio/analytics-next#829) in their library and hope for a quick resolution. If you still don't feel comfortable with this tracking though, as a temporary solution I may recommend you disabling the telemetry. We will try to sort it out as soon as it will be possible. |
Thanks a lot @rangoo94 for your detailed answer and this prompt fix ! I'll try to test it shortly.
I haven't yet found a way to opt-out from telemetry at installation time (just submitted related enhancement suggestion at #3622 ) |
I got an answer from the Twilio team, and it's actually super simple to hide this data. We have a problem though, that we are using the hostname in Twilio Segment for filtering some environments. I think that the highest risk is associated with referrers, and we will definitely delete it. @gberche-orange, do you think that it's acceptable, or is sending an FQDN/URL a no-go for you? |
Thanks a lot @rangoo94 for the update. From the point of view of companies running testkube in sensitive environments such as production, the dashboard fqdn is indeed a sensitive data. I however saw on issue #3622 that API telemetry is using a hash of the pod hostname as a cluster id. Would a similar dashboard fqdn hash suit the purpose of env filtering without disclosing the fqdn ? |
@gberche-orange, sorry for the late update, but it took some time to determine all internal dependencies on that. I think that we have everything clear now. Next week I plan to apply all the required adjustments to our tooling and environments, and then we should be able to avoid sending hostname and cluster ID at all. I hope that we'll be able to sort it out next week, but it may slip into the next one. |
@gberche-orange, sorry for the delay - we had a lot of improvements included for this release, so the testing took longer than it's expected. We've just released the chart for 1.11.213, which has the UI telemetry improvements included. I hope that it will work fine for you! |
Sorry for the problem, the ticket #3846 is released now 👍 |
Thanks @rangoo94 for this fix. I now properly see posted data is now anonymized the url transmitted is now However, the http headers still include the Full sample http request captured as curl:
Can you please also remove/anonymize these headers ? |
Thank you @gberche-orange! I was focused on the payload, and forgot to check the actual headers too. We will be able to easily delete the |
just wanted to say thank you @gberche-orange for making us aware of this - we definitely want to get telemetry right so you and everyone else feels comfortable using Testkube.. |
@gberche-orange, unfortunately, I didn't find any way to omit the I will update the referrer policy to stop sending the |
* feat: connect to testkube cloud (#667) * fix: show latest data in execution details / make private registry optional (#665) * fix: use only one executor object per executor in the Redux slice Resolves: kubeshop/testkube#3831 * fix: make private registry not required for the executor Resolves: kubeshop/testkube#3830 * fix: hide form from executor name & type (#664) Resolves: kubeshop/testkube#3830 * feat: enable NGINX IPv6 (#663) * chore: update docs links (#662) * Release v1.11.0 (#648) * test ci to develop (#634) * test ci (#635) * remove sha (#636) * docs: delete legacy Netlify deployment (#637) * fix: get test-suite list after creation (#639) * fix: run GitHub workflows for develop PRs too (#640) * feat: stop sending the hostname to the Segment.io (#641) * fix: some forms had never enabled "Save" button (#643) * update ci for tag creation (#644) * fix: adjust build release workflow (#649) Co-authored-by: ypoplavs <[email protected]> * Multiple test/test-suite execution abortion (#638) * ui for all execution abortion * abortion on details page * added abortion on list * remove dropdown bg customization * wrapper style in dots dropdown * remove on hover trigger * commented the merge of release branch for now * fix typo * command input consistency (#651) * refactor: enhanced copy command (#652) Co-authored-by: ediv <[email protected]> * Types (#642) * refactor: adjusted typings in many places * refactor: deleted redundant import and @src * refactor: changes according to comments on PR * refactor: changes according to comments on PR * refactor: changes according to comments on PR from Dawid * refactor: changes according to comments on PR from Dawid * refactor: fixed github job * refactor: changes due to comments on PR --------- Co-authored-by: ediv <[email protected]> * fix: deleted a redundant row from entity grid item (#654) Co-authored-by: ediv <[email protected]> * feat: added a custom space component (#660) * feat: added a custom space component * feat: renamed the component according to comment on PR --------- Co-authored-by: ediv <[email protected]> * fix: show axis for executions even when there is a lot of them (#659) Resolves: kubeshop/testkube#3466 * fix: immediately return new data from RTK (#658) Resolves: kubeshop/testkube#3776 * fix: round test duration correctly (#657) * fix: round test duration correctly Resolves: kubeshop/testkube#3743 * fixup test * fix: allow dots in k8s resource names (#656) Resolves: kubeshop/testkube#3816 * fix: glitching skeleton animation (#655) * fix: glitching skeleton animation * fixup lint * fix: use Git tokens and Git usernames correctly for the Test Sources (#653) * fix: create test source with Git token correctly * fix: updating git token/username in the test source details * fix: show repository URL for the proper source * use FullWidthSpace Resolves: testkube#3810 * fix: some console errors (#661) * fix: show latest data in execution details / make private registry optional (#665) * fix: use only one executor object per executor in the Redux slice Resolves: kubeshop/testkube#3831 * fix: make private registry not required for the executor Resolves: kubeshop/testkube#3830 * fix: hide form from executor name & type (#664) Resolves: kubeshop/testkube#3830 * feat: enable NGINX IPv6 (#663) * chore: update docs links (#662) --------- Co-authored-by: ypoplavs <[email protected]> Co-authored-by: Bogdan Hanea <[email protected]> Co-authored-by: Pavlo Burchak <[email protected]> Co-authored-by: ypoplavs <[email protected]> Co-authored-by: Toxer10 <[email protected]> Co-authored-by: ediv <[email protected]> Co-authored-by: ahmedimf1 <[email protected]> Co-authored-by: Abdallah Abedraba <[email protected]> * feat: dashboard E2E tests migrated from main repo (#669) * E2E tests migrated from main repo * E2E tests migrated from main repo - dir change * updated after linter * updated after linter * updated after linter * typo fixed * semicolons * fixes after eslint * fixes after eslint * ci: rename release branch (#673) * rename release branch * ci: rename release branch (#672) * rename release branch * feat: connect to testkube cloud (#667) * feat: dashboard E2E tests migrated from main repo (#669) * E2E tests migrated from main repo * E2E tests migrated from main repo - dir change * updated after linter * updated after linter * updated after linter * typo fixed * semicolons * fixes after eslint * fixes after eslint * refactor: changed theme color and styling (#668) * feat: connect to testkube cloud (#667) * fix: show latest data in execution details / make private registry optional (#665) * fix: use only one executor object per executor in the Redux slice Resolves: kubeshop/testkube#3831 * fix: make private registry not required for the executor Resolves: kubeshop/testkube#3830 * fix: hide form from executor name & type (#664) Resolves: kubeshop/testkube#3830 * refactor: changed theme color and styling --------- Co-authored-by: Bogdan Hanea <[email protected]> Co-authored-by: Dawid Rusnak <[email protected]> Co-authored-by: ediv <[email protected]> * feat: add ModalOutletProvider that's automatically injecting the ModalOutlet (#670) * fix naming (#677) * fix: E2E tests - fix tests after eslint fixes (#676) * feat: connect to testkube cloud (#667) * fix: show latest data in execution details / make private registry optional (#665) * fix: use only one executor object per executor in the Redux slice Resolves: kubeshop/testkube#3831 * fix: make private registry not required for the executor Resolves: kubeshop/testkube#3830 * fix: hide form from executor name & type (#664) Resolves: kubeshop/testkube#3830 * feat: enable NGINX IPv6 (#663) * chore: update docs links (#662) * feat: dashboard E2E tests migrated from main repo (#669) * E2E tests migrated from main repo * E2E tests migrated from main repo - dir change * updated after linter * updated after linter * updated after linter * typo fixed * semicolons * fixes after eslint * fixes after eslint * ci: rename release branch (#672) * rename release branch * typo fixed --------- Co-authored-by: Bogdan Hanea <[email protected]> Co-authored-by: Dawid Rusnak <[email protected]> Co-authored-by: ahmedimf1 <[email protected]> Co-authored-by: Abdallah Abedraba <[email protected]> Co-authored-by: ypoplavs <[email protected]> * fix: fixed home page UI (#679) Co-authored-by: ediv <[email protected]> * fix: enable IPv6 for nginx only when ENABLE_IPV6 is set to true (#680) Relates to: kubeshop/testkube#3846 * fix: enable IPv6 for nginx only when ENABLE_IPV6 is set to true (#683) Relates to: kubeshop/testkube#3846 * tech: used FullWidthSpace instead of StyledSpace with inline width (#681) Co-authored-by: ediv <[email protected]> * Utilize external links (#686) * utilize external links * fix type * add timeout doc * fix sider links (#687) * Move error reports into the area where they were triggered (#685) * notifications in cards * validation fix * refactored error handling, added scroll to notification * refactor notification flow * set null error on submit Co-authored-by: Dawid Rusnak <[email protected]> --------- Co-authored-by: Dawid Rusnak <[email protected]> * tech: read PostHog, Segment and GA4 keys from env variables (#688) * tech: read PostHog, Segment and GA4 keys from env variables * replace with created secrets Resolves: kubeshop/testkube#3875 * fix: avoid sending Referer header (#691) Related to: kubeshop/testkube#3612 * feat: add contact Us external link (#694) * feat: implemented OSS to Cloud hints for OSS (#690) * feat: implemented OSS to Cloud hints for OSS * feat: changes according to comments on PR * feat: changes due to comments on PR * feat: changes due to comments on PR * feat: adjusted stylelint rule * feat: adjusted stylelint * feat: changes due to comments on PR * feat: changes due to comments on PR --------- Co-authored-by: ediv <[email protected]> * feat: add REACT_APP_DISABLE_TELEMETRY to force disabling telemetry (#692) Related to: kubeshop/testkube#3884 * feat: report Git version in telemetry (#693) * feat: use Git version for analytics Resolves: kubeshop/testkube#3881 * feat: expose app version in meta[app-version] * feat: send app version to PostHog too Resolves: kubeshop/testkube#3887 * feat: avoid processing IP in PostHog * fix: fixed cloud banner on Cloud (#695) Co-authored-by: ediv <[email protected]> * ci: update gh token var (#696) * feat: adjusted FullWidthSpace component, added new prop (#697) * feat: adjusted FullWidthSpace component, added new prop * tech: added a new color * tech: changed the color * tech: changes due to comments on PR --------- Co-authored-by: ediv <[email protected]> * ci: add docker registry description (#699) * add GH for uploading readme to dockerhub registry * feat: integrate Prettier (#698) * chore: update Prettier - new version supports --cache flag * feat: move Prettier configuration to JS file and adjust import orders * chore: rename deprecated Prettier option * feat: run Prettier formatting on pre-commit Resolves: kubeshop/testkube#3709 * feat: add cache for ESLint * feat: check Prettier formatting on CI/CD * chore: run Prettier against the source * fix: delete unused parts of package.json * fix: make whole page scrollable (#701) * fix: make whole page scrollable Resolves: kubeshop/testkube#3901 * chore: delete unnecessary overflow * fix: align paddings of the notification wrapper * fix: make html & body full height too * fix: make sider scrollable too on smaller devices * Allow using Prettier from different dir (#704) * Labels improvements (#702) * labels improvements * refactored labels multiselect * fix default labels props * fixes after review * Implement Triggers store in Zustand (#703) * triggers zustand * local trigger store * remove files and renaming * prettier fix --------- Co-authored-by: Bogdan Hanea <[email protected]> * ci: add workflow dispatch (#706) * fix: fixed dropdown styles (#705) Co-authored-by: ediv <[email protected]> * fix: fixed dropdown UI (#707) Co-authored-by: ediv <[email protected]> * fix: fixed a problem reported by Tomek (#709) Co-authored-by: ediv <[email protected]> * tech: make Zustand contextual (#710) * feat: add utilities for local Zustand stores and use it for Triggers * feat: create combined store for Dashboard * feat: inject combined store for whole Dashboard * fix: show existing Test Suite steps (#714) Resolves: kubeshop/testkube#3940 * fix: allow non-root user for the Docker image (#708) Resolves: kubeshop/testkube#3931 * fix: avoid infinite recursion due to always truthy update on error (#715) * feat: add overrides mechanism for testing variables (#716) * feat: add overrides mechanism for testing variables Resolves: kubeshop/testkube#3948 * typo: rename hasOverridesApplied to areOverridesApplied --------- Co-authored-by: Bogdan Hanea <[email protected]> Co-authored-by: Dawid Rusnak <[email protected]> Co-authored-by: ahmedimf1 <[email protected]> Co-authored-by: Abdallah Abedraba <[email protected]> Co-authored-by: Pavlo Burchak <[email protected]> Co-authored-by: Toxer10 <[email protected]> Co-authored-by: ediv <[email protected]> Co-authored-by: Tomasz Konieczny <[email protected]> Co-authored-by: Tomasz Konieczny <[email protected]>
@gberche-orange, sorry I forgot to put an update. The fix for the |
thanks @rangoo94 for your efforts to preserve privacy on the testkube telemetry
I wonder what response from twilio is expected, and what impact this has if the response can't be read ? |
When Tracking systems like Twilio Segment have retrying and queuing mechanisms. When there is no information about the response, it can't determine the event status and would put it back to the queue. Otherwise it would risk data corruption. I think that they could use |
Thanks, would it make sense to submit an upstream issue describing the privacy issue that current twilio segment implementation causes to testkube ? |
I think that it would be very problematic for Twilio - they need to avoid breaking changes, so they would need to maintain additional endpoints, that would behave differently. I believe that for such cases, they could recommend proxying it via our own infrastructure, to have full control over the data sent (i.e. with segmentio/segment-proxy, but it's pretty old). Unfortunately, I don't think that we are capable to handle it on our side, at least for now. It's a really small flaw, and we would need to maintain another component specifically to solve that. |
I'm closing this ticket, as most of the problems are fixed. To fix the last part, we would need to use custom proxy, but that would introduce unnecessary complexity for us, while that is rather not a significant problem. |
Describe the bug
https://docs.testkube.io/reference/telemetry/ mentions
However, the browser request traces from the dashboard front-end show requests are made to twilio segment platform endpoints: cdn.segment.com and api.segment.io with possibly sensitive data:
https://myreferer.domain.org/
)testkube-ui.domain.org
)To Reproduce
Steps to reproduce the behavior:
See sample requests captured from firefox in curl format
curl 'https://cdn.segment.com/v1/projects/YrfdfjvrZALf5HETS25jDfSiTPfU9wi3/settings' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0' -H 'Accept: */*' -H 'Accept-Language: en-US,fr-FR;q=0.8,fr;q=0.5,en;q=0.3' -H 'Accept-Encoding: gzip, deflate, br' -H 'Referer: https://testkube-ui.domain.org/' -H 'Origin: https://testkube-ui.domain.org' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Sec-Fetch-Dest: empty' -H 'Sec-Fetch-Mode: cors' -H 'Sec-Fetch-Site: cross-site'
curl 'https://api.segment.io/v1/t' -X POST -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0' -H 'Accept: */*' -H 'Accept-Language: en-US,fr-FR;q=0.8,fr;q=0.5,en;q=0.3' -H 'Accept-Encoding: gzip, deflate, br' -H 'Referer: https://testkube-ui.domain.org/' -H 'Content-Type: text/plain' -H 'Origin: https://testkube-ui.domain.org' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Sec-Fetch-Dest: empty' -H 'Sec-Fetch-Mode: cors' -H 'Sec-Fetch-Site: cross-site' -H 'TE: trailers' --data-raw '{"timestamp":"2023-04-04T14:59:41.580Z","integrations":{},"userId":"5b8afd72c1350efca911821600496e50","anonymousId":"3bc847b8-0e90-4f1c-b63f-1bf6c6a60e1f","event":"trackTime","type":"track","properties":{"duration":54300,"page":"tests-settings","hostname":"testkube-ui.domain.org","appVersion":"1.9.0"},"context":{"page":{"path":"/tests/executions/02-testkube-sample-tests-test-kuttl-data","referrer":"https://myreferer.domain.org/","search":"","title":"Settings | Testkube","url":"https://testkube-ui.domain.org/tests/executions/02-testkube-sample-tests-test-kuttl-data"},"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0","locale":"en-US","library":{"name":"analytics.js","version":"npm:next-1.51.3"}},"messageId":"ajs-next-a81945272bdf93d2eac35354de883f50","writeKey":"YrfdfjvrZALf5HETS25jDfSiTPfU9wi3","sentAt":"2023-04-04T14:59:42.585Z","_metadata":{"bundled":["Segment.io"],"unbundled":[],"bundledIds":[]}}'
Expected behavior
posted data should not include referrers, FQDN, nor test executions data
Version / Cluster
Screenshots
If applicable, add CLI commands/output to help explain your problem.
Additional context
Add any other context about the problem here.
The text was updated successfully, but these errors were encountered: