Skip to content

EUDB compliance recommendations and example #1191

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

Merged
merged 4 commits into from
Aug 9, 2023

Conversation

maxgolov
Copy link
Contributor

@maxgolov maxgolov commented Aug 4, 2023

Certain Microsoft applications are in scope to be European Union Data boundary (EUDB) Compliant.

This FAQ for 1DS SDK addresses one of the 8 EUDB requirements:

  • Data Residency which requires all EU data accessed, processed, displayed/viewed with certain applications must reside within EU. 1DS Collector itself ensures that the data routed to regional collection end-point is maintained in EU. Products must perform determination whether or not a specific installation / seat within a Commercial / Enterprise setting belongs to EU or not. This determination process is out-of-scope for 1DS SDK itself, and may be performed via another systems/APIs, such as ECS, OneSettings, MSGraph, etc.

The goal of this PR is:

  • to provide an example how to configure 1DS C++ SDK to respect a regional URL.
  • how to perform the asynchronous update of the URL at runtime.
  • additional safety check to ensure that the SDK could be started with an empty URL: collection disabled until the URL is known. Although PauseTransmission called on app start is generally safe to use, as default transmission timer is at least 1 second, unfortunately it does not reliably cover the "immediate" priority events, which could be emitted by application early at boot. Thus, the need for more reliable mechanism that allows to initialize in a fully "offline" state, functionally similar to "paused" state, without necessity of calling into PauseTransmission. This is solving a potential race condition between the main thread calling PauseTransmission and a background thread emitting a critical realtime priority event.

Out-of-scope:

  • There is no guidance how to actually obtain the EUDB URL. This is out-of-scope for 1DS client SDK.
  • There is no guidance what option to prefer: having 2 instances (one for US, one for EU); or having 1 instance that gets adjusted to use the regional EUDB URL at runtime. The choice to use this or that approach is up to concrete product developers.

@lalitb
Copy link
Contributor

lalitb commented Aug 7, 2023

Thanks for documenting, and adding a fix to pause the transmission during the start. It would be good to explicitly document that for EuDB scenarios, the URL should be updated only once during startup, and not afterwards. And be aware of the consequences of doing it. Users shouldn't raise issues with 1ds stating that they are changing the endpoint URL and old events are getting uploaded to the new endpoint even though not destined for there.

@maxgolov maxgolov merged commit 6129741 into main Aug 9, 2023
@maxgolov maxgolov deleted the user/maxgolov/eudb_compliance branch August 9, 2023 03:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants