Sure @frederikdc
Current Behavior:
When you create and publish an application, only declared data sources are accessible through public endpoints. This means that only tables used within these data sources are exposed. Even if the application designer has access to more tables, only the specific tables declared as data sources will be accessible.
Data access is limited by the permissions of the user associated with the selected Baserow integration. You cannot declare a data source for a table that the application designer doesn’t have visibility over.
If you want the application to have fewer access rights, you can change the user associated with the integration. However, this step is not necessary for ensuring security of the published application.
When a data source has filters, only the filtered data is exposed. Data source filters are executed in the backend. If, for example, you filter a data source by the logged-in user’s ID, only that user’s rows will be visible to them. So yes, this filtering acts as a security measure.
The same principle applies to actions like create, update, or delete records. If no action is defined, no one can modify the exposed data sources. As soon as you define actions, they can be triggered via the API. If the action relies on internal data (e.g., logged-in user ID, data source properties, …), the user cannot manipulate these values. However, if the action depends on a page parameter, users may alter it. For example, if you define a delete action that uses a row ID from a filtered data source, only the filtered rows can be deleted. But if you rely on a page parameter for the row ID, any row could be deleted by the user.
However, currently, we cannot restrict data sources to a subset of users and all fields of a table are returned via the data source, even if they contain sensitive data. This is something we plan to improve.
Upcoming Improvements:
Soon, data sources and their fields will be filtered based on the current user and his role. If a record property is visible to the user, it will be included in the API response; if not, it won’t. If no properties are visible, the data source won’t be returned at all.
You are already able to configure element visibility based on user authentication status (logged-in or anonymous) and role. But soon, the system will automatically calculate which fields should be returned by the API based on what the user can see through the visible elements.
At that point, we will have full security, and the API will only return data visible to the authenticated user.
Is it clearer @valexico?