Dynamics 365 Dataverse TDS endpoint Control Access and rights
Following up on the previous two articles regarding subjects How to access the Dynamics 365 online SQL Server database and Dynamics 365 / Dataverse access SQL Server database from C#, here's a third one that will illustrate how to control access to this endpoint.
Initially, when this feature was first released, Microsoft hadn't yet implemented a mechanism allowing for selective access to this endpoint. It was an all-or-nothing scenario, where the parameter had to be activated at the level of the entire organization, either enabling it for everyone or for no one. Given that this endpoint granted access to data in a new way and was quite permissive, many companies simply opted not to activate it for security reasons.
However, Microsoft has now introduced a new option that could put TDS back in game. This option not only allows for enabling TDS for the entire organization as before, but also enables the selection of who, or rather which role, can use it. This is now possible thanks to the introduction of a new privilege named "prvAllowTDSAccess," which is rather self-explanatory :)
Here's the official documentation covering this feature: https://learn.microsoft.com/en-us/power-platform/admin/control-tds-settings
Step by Step
To get started, go to admin.powerplatform.microsoft.com and select your environment
Then click on Settings and navigate to Product > Features
Then on the page, at the TDS Chapter level, you will see this new option: Enable user level access control for TDS endpoint
Once activated, all you need to do is go to one of your security roles with which the user will have the right to access TDS and assign this privilege.
Go again to admin.powerplatform.microsoft.com and select your environment.
Then go to Users > Security Roles
Then click on Miscellaneous privileges then select Show All Privileges and you should be able to add the prvAllowTDSAccess privilege to this role.
NB : If you are unable to see the list of Miscellaneous privileges you can also assign this via C# code. Explained in this article. https://dynamics-chronicles.com/article/assign-privileges-security-role-code-c
Thus, all users with this role will be authorized to use the TDS endpoint, the others will receive an error!
Support of Security Roles
An important point to remember, which may seem obvious, the user's security roles will apply to the requested SQL objects. Indeed, SQL actually exposes filteredviews applying the application's security model.
Thus, in the example below, the user has the right to access Contact data but not the configuration table. The user will get the following error if they try.
Add new comment