How to design a BI permission model for a SaaS team
Max Musing
Max MusingFounder and CEO of Basedash · June 4, 2026

Max Musing
Max MusingFounder and CEO of Basedash · June 4, 2026

A BI permission model decides who can see which data, who can build dashboards, and who can change shared definitions. For most SaaS teams, the right model has four independent layers: identity (who the user is), workspace (which folders and projects they can open), dataset (which tables, columns, and metric definitions they can query), and row level (which rows inside those datasets they can see). Tools that collapse these layers into a single “role” are easy to set up and almost always wrong by the time the company has a finance team, an external contractor, and a customer-facing dashboard.
This guide is for founders, heads of data, and operators setting up or rebuilding BI permissions for a B2B SaaS team between roughly 10 and 300 people. It walks through the four-layer model, how modern BI tools implement each layer, a default role design that holds up as the company grows, and the mistakes that quietly break governance once a few teams are using the tool every day.
A BI permission model is the set of rules that connects an authenticated person to the data they are allowed to see and the actions they are allowed to take. In a SaaS company, it has to satisfy four things at once:
These goals pull in different directions. Tight confidentiality slows self-serve. Open self-serve risks trust. Locking down editing keeps definitions stable but pushes people back into spreadsheets. A good permission model is the smallest set of rules that satisfies all four without making any of them painful.
The cleanest way to design one is to stop thinking about a single “role” and start thinking about four independent layers.
Identity is the answer to “who is this user?” and “what groups are they in?”. It comes from your identity provider (IdP), not your BI tool.
For a SaaS team, identity should be federated through SSO and SCIM as soon as you have more than ten people in the BI tool. The reason is not security theater. It is that group membership is the actual currency of permissions, and you want a single source of truth for groups so they propagate when someone joins the finance team, leaves the company, or moves to a customer-facing role.
Practical rules:
finance, engineering, customer-success, external-contractors) as the unit of permission, not individual users.If your BI tool only supports usernames and passwords with manual group assignment, that is a hard ceiling on how seriously you can take governance.
Workspace permissions answer “which folders, projects, or collections can this user see?”. They are the navigation layer, not the data layer.
Most BI tools call this something different. Tableau has projects. Power BI has workspaces. Looker has folders and groups. Metabase has collections. Sigma has folders and workbooks. Basedash has workspaces and folders. The shape is similar: a tree of containers that hold dashboards, reports, and saved queries, with permissions inherited from parent to child.
Workspace permissions are useful for two things:
They are not enough on their own. A workspace permission says “you can open this dashboard.” It does not say “you can only see your team’s data inside it.” For that, you need dataset and row-level rules.
The most common workspace mistake is using folders as the only access boundary. A finance dashboard sitting in an “executive” folder feels protected until a builder duplicates it into an open folder for a one-off question. The underlying dataset still allows the query, so the data leaks even though the original dashboard was locked down.
Dataset permissions answer “which tables, columns, models, and metrics can this user query?”. This is where most teams underinvest.
In a modern BI stack, the dataset layer usually has three sub-layers:
A useful dataset model lets you grant access at any level. A customer success manager might be able to query the customers semantic model (which already hides cost-of-acquisition columns) without having any access to the raw customer_costs table.
A few rules that hold up over time:
If your BI tool ships a semantic layer (Looker’s LookML, Cube, dbt’s semantic layer, Sigma’s data models, Basedash’s semantic layer, Power BI’s tabular models), the dataset layer is where most of your real work lives. If it does not, the dataset layer leaks back into the warehouse, and you have to enforce it there with database roles and views.
Row-level permissions answer “within a dataset the user is allowed to query, which rows can they actually see?”. This is the layer that fails most often.
The standard pattern is attribute-based: every fact table has a tenant_id, region, team_id, or account_owner column, and a rule like region = $user.region is injected into every query that touches it. Some tools enforce this in the BI layer, some in the warehouse, and the better setups enforce it in both.
A few patterns to know:
For internal SaaS analytics, BI-layer RLS is usually enough. For customer-facing or embedded dashboards, you should layer warehouse RLS underneath the BI tool’s enforcement. The cost of one cross-tenant leak in an embedded dashboard is much higher than the cost of writing a few row access policies. The multi-tenant analytics architecture guide covers this case in more depth.
The single most common RLS bug is a cache that ignores the user attribute. If two users with different tenant IDs both query “monthly revenue,” the second user can be served the first user’s cached result if the cache key is just the query text. Whatever tool you pick, confirm that the query cache keys include user attributes, not just SQL.
The four layers exist in every modern BI tool, but the names and the depth differ. The table below summarizes how a few common platforms map to the model.
| Tool | Identity | Workspace | Dataset | Row level |
|---|---|---|---|---|
| Tableau | SSO + groups via Tableau Server | Projects with inherited permissions | Data sources, plus row-level filters in published data sources | User filters and entitlement tables |
| Power BI | Microsoft Entra ID groups | Workspaces and apps | Datasets, semantic models | DAX-based static and dynamic RLS |
| Looker | SSO + LookML user attributes | Folders and groups | LookML models and explores | Access filters and access grants in LookML |
| Metabase | SSO in paid plans, groups | Collections | Database and table permissions per group | Sandboxing (paid) for column and row filters |
| Sigma | SSO + SCIM | Folders and workbooks | Datasets and data models | User attributes and security rules |
| Basedash | SSO + SCIM, IdP groups | Workspaces and folders | Connections, semantic models, saved queries | Database-level RLS plus per-user attributes for embedded dashboards |
| Mode | SSO + groups | Spaces | Connections and datasets | Parameter-based filters; relies on warehouse RLS for strict isolation |
There is no universal “best” model here. The right pick depends on whether your team primarily writes SQL (where Looker, Mode, and Basedash give you fine-grained dataset control), whether you live in the Microsoft stack (Power BI’s RLS is mature and tightly coupled to Entra ID), and whether you need to embed dashboards in your own product (Sigma, Basedash, and tools designed for embedding tend to have stronger per-user attribute models).
The four-layer model is the structure. Roles are how you instantiate it. For a SaaS team between 10 and 300 people, a small role set tends to work better than a large one. Five roles cover almost every case:
Owns identity, billing, and the permission model itself. Can create groups, change role definitions, and connect new data sources. Should be a small group (one or two people, plus a backup) and should not be the same people who build day-to-day dashboards.
Can connect to approved datasets, write SQL, build dashboards, and define new metrics. This is the role for the data team and analytics engineers. Builders can publish to shared workspaces but cannot grant new dataset access; that is the admin’s job.
Can build personal dashboards, save queries, and edit dashboards in workspaces they have been added to. Cannot publish to top-level shared workspaces. This is the right role for operators and PMs who want to do their own analysis without becoming a data engineer.
Can open dashboards in workspaces they have access to and ask follow-up questions through the tool’s AI or filter UI, but cannot write SQL or change definitions. Most of the company should sit here.
Customers, contractors, partners, or auditors. Should always have a dedicated role, not just be added to an existing one. External users see only the workspaces and rows that have been explicitly opened to them, and their access has an expiration date.
A few principles for assigning these roles:
When a teammate asks for access to something, it helps to have a small set of rules to apply rather than deciding case by case.
A simple rubric:
Most BI tools will not enforce all of this for you. The rubric is a habit, not a feature. The point is to have a default of “no, plus the smallest yes that solves the problem” instead of “sure, I’ll add you to the all-access group.”
Two years ago, dataset permissions were mostly about who could write SQL. Now an AI assistant inside the BI tool can write SQL on behalf of any user with a chat input, often against any table the underlying connection can reach.
This breaks two assumptions that older permission models depend on.
First, the set of possible queries is no longer bounded by the dashboards the data team has built. A viewer who can ask “show me last month’s revenue” can also ask “show me employee compensation” if the AI has access to that table. Hiding columns in the BI UI does not help; the AI sees the schema.
Second, audit trails get harder. A SQL query has a clear author. An AI-generated query has a prompt, a model, and a user, and the relationship between them is not always obvious in logs.
The implication is that AI features push more of the permission model into the dataset and row layers. If your AI assistant can only query semantic models that already hide sensitive columns and apply RLS predicates, it stays useful and stays safe. If it can query the raw warehouse on behalf of any logged-in user, you have effectively given everyone in the company a SQL editor regardless of their role.
Concrete checks for AI-enabled BI:
The data governance guide for AI-powered BI goes deeper on the AI-specific governance patterns.
A short list of the failure modes that show up in almost every BI permission audit:
If you are setting up or rebuilding a permission model in a SaaS BI tool, the work is roughly:
finance, engineering, customer-success, executives, external-contractors).This is roughly a week of focused work for a single person at a 50-person SaaS, plus ongoing maintenance. The cost of skipping it shows up later as either a security incident or a panic during the next SOC 2 audit.
Not every team needs all four layers from day one. A pre-seed startup with five engineers and a shared Postgres replica can usually get away with workspace permissions and one shared dataset for a while. The point at which the four-layer model starts paying off is roughly:
Any of those is a good signal to stop using a single shared role and start treating permissions as a product. The teams that do this early have an easier time scaling self-serve analytics later, because the governance scaffolding is already in place when adoption picks up.
Basedash applies the four-layer model directly. Identity comes from your IdP via SSO and SCIM. Workspaces and folders organize dashboards by team. Dataset permissions are scoped through connections and the Basedash semantic layer, so non-technical users query governed models with metric definitions baked in instead of raw tables. Row-level security is enforced at the database level, which means PostgreSQL or Snowflake RLS policies apply automatically to AI-generated queries, embedded dashboards, and SQL written by hand.
For most SaaS teams between 10 and 300 people, the right starting point is to federate identity, set up the five roles above, define a small set of governed semantic models, and turn on warehouse-side RLS for any tenant-scoped data. Whether the BI tool is Basedash, Looker, Power BI, or something else, the model that holds up over time is the same: four layers, default deny, and a small habit of reviewing the audit log every quarter.
Written by
Founder and CEO of Basedash
Max Musing is the founder and CEO of Basedash, an AI-native business intelligence platform designed to help teams explore analytics and build dashboards without writing SQL. His work focuses on applying large language models to structured data systems, improving query reliability, and building governed analytics workflows for production environments.
Basedash lets you build charts, dashboards, and reports in seconds using all your data.