Skip to main content
Data Governance

RBAC vs ABAC: Access Control for a Governed Lakehouse (with RLS and CLS)

RBAC asks what role you have; ABAC asks what attributes apply. They are not rivals — in a mature enterprise lakehouse you use both, enforced through row- and column-level security close to the data.

Amit Kumar Singh - Technology Consulting Partner at MyData Insights

Technology Consulting Partner · MyData Insights

14+ years in industrial data · Former Accenture & EY · India, GCC, SEA

29 September 2026 · 9 min read

The bottom line

RBAC (role-based access control) grants access by role or group — Finance Analysts can SELECT finance data. ABAC (attribute-based access control) decides access from attributes of the user, resource and context — a user sees only records where the data’s country matches theirs. RBAC is simpler and fits standard organisational access; ABAC is more flexible for dynamic, fine-grained policies. They are access-control models, not alternatives to your platform, and they work together: role for the broad grant, attributes for the conditional filter. Row-level and column-level security are the enforcement mechanisms that make both real in a governed lakehouse — don’t confuse the models (RBAC/ABAC) with the mechanisms (RLS/CLS).

RBAC — Role-Based Access Control

RBAC assigns permissions based on a user’s role. The question it answers is simple: what role do you have, and therefore what can you access? You define roles or groups — Finance Analysts, Sales Analysts, Data Engineers, Data Scientists — grant each the appropriate privileges, and assign users to groups rather than granting them individually.

So a Finance Analyst group gets SELECT on finance data; Data Engineers get SELECT, MODIFY and CREATE; a Data Scientist gets SELECT on curated data. When someone joins or moves, you change their group membership, not a pile of individual grants. That is what makes RBAC manageable at scale — you administer roles, not people.

RBAC is the right model for standard organisational access patterns, and it is where most governance should start. It is simple, auditable and easy to reason about. Its limit is that it cannot express conditional rules that depend on the data itself.

RBAC: role → permission. Grant to groups, assign people to groups, administer roles not individuals. Simple, auditable, and the right place for governance to start.

ABAC — Attribute-Based Access Control

ABAC decides access from attributes rather than roles alone. It can consider attributes of the user (department, country, clearance), of the resource (classification, owning department, country), and of the context (network, time). A policy then combines them: allow access when the user’s department matches the data’s department and the user has the required clearance.

A concrete example: a Finance Manager in the UAE with confidential clearance can see finance data classified confidential for the UAE — but the same role in another country would not see the UAE records. The role is the same; the attributes decide the outcome. That conditional, data-dependent control is exactly what RBAC alone cannot express.

ABAC is more powerful and more complex. It shines where access must be dynamic and fine-grained — country-based data residency, hospital-based patient access, project-based visibility. The trade-off is administration: attributes and policies to maintain rather than a handful of roles.

RBAC vs ABAC Compared

The one-line distinction: RBAC is role → permission; ABAC is attributes → policy → permission. RBAC asks "what role do you have?"; ABAC asks "what attributes apply?" RBAC is simpler, lower flexibility, best for standard access; ABAC is more complex, higher flexibility, best for dynamic and conditional access.

A common mistake is to describe them as "RBAC is table security and ABAC is row security." That is wrong. Both are access-control models — ways of deciding who gets access. Row-level and column-level security are enforcement mechanisms — ways of applying that decision to the data. The two ideas operate at different layers and combine.

The other mistake is treating them as alternatives to your governance platform. In Unity Catalog (or any governed lakehouse), RBAC and ABAC are how you express policy; the platform is what enforces it, with lineage and audit over the top.

RBAC = role → permission. ABAC = attributes → policy → permission. Both are access-control models; RLS and CLS are enforcement mechanisms. Don’t say "RBAC is table security, ABAC is row security" — that conflates the two.

Using Them Together

In a mature enterprise, you combine them. RBAC handles the broad grant; ABAC adds the conditional filter. A Finance Analyst (role) can SELECT the Finance Gold tables (RBAC) — and an attribute policy then restricts them to rows where the record’s country matches the user’s country (ABAC). The final access decision is role plus attributes: Finance Analyst + country = UAE → Finance Gold, UAE rows only.

A healthcare example makes it concrete. RBAC gives Doctors access to clinical data, Finance to finance data, Operations to operations data. ABAC then adds: a doctor sees only patients belonging to their assigned hospital, by matching the user’s hospital attribute to the patient’s. A Dubai Hospital doctor does not see an Abu Dhabi patient’s record, even though both are "Doctors."

This layering is the norm for regulated, multi-region or multi-entity enterprises. Roles keep the model simple where access is uniform; attributes handle the cases where it must depend on who, what and where.

RLS and CLS: the Enforcement Layer

Row-level security (RLS) controls which rows a user sees — the mechanism behind "only your country" or "only your hospital." Column-level security (CLS) and masking control which columns they see or in what form — full Emirates ID for compliance, masked for analysts. Dynamic views can implement these rules where appropriate. These are how the RBAC and ABAC decisions actually take effect on the data.

The principle that matters: enforce as close to the governed data layer as possible. If RLS and CLS live in the platform, every downstream consumer — BI, a natural-language tool, an application — inherits the same controls. Push security into each report instead and you get inconsistency and gaps, and every new consumer re-implements it, usually differently.

So the stack reads: identity and groups (RBAC) plus attribute policies (ABAC) decide access; RLS, CLS and masking enforce it at the data; lineage and audit prove it. That is the shape of governed access in an enterprise lakehouse.

Enforce security as close to the governed data as possible. Put RLS and CLS in the platform and every consumer inherits them; push them into each report and every new consumer re-implements security, usually differently.

So What — the Architect’s Answer

If asked to explain the difference: RBAC controls access based on predefined roles or groups; ABAC decides access based on attributes of the user, resource or context. RBAC is simpler and works for standard organisational permissions; ABAC provides dynamic, fine-grained policy control. In an enterprise lakehouse you use the platform’s governance together with groups, privileges and attribute-based policies, enforced through row- and column-level security, according to the organisation’s requirements.

The practical guidance: start with RBAC and groups for the bulk of access, add ABAC where the business genuinely needs conditional rules (residency, multi-entity, clearance), and enforce everything at the data layer with RLS and CLS. Do not over-engineer ABAC where a role would do; do not stretch RBAC to express conditions it cannot.

Whatever the platform, the model is the same. We apply this on Microsoft Fabric and Power BI and on Databricks Unity Catalog alike — the access-control models and enforcement mechanisms are universal; only the syntax differs.

Start with RBAC and groups, add ABAC where the business needs conditional rules, enforce at the data layer with RLS and CLS. Don’t over-engineer ABAC where a role would do.

If your access model is a tangle of individual grants and per-report security, the fix is a clean RBAC-plus-ABAC design enforced at the data layer. 30 minutes with Amit on your governance model — groups, attribute policies, and row- and column-level security done once, close to the data. No slides. No pitch deck. No obligation to proceed.

Free Assessment

Where does your operation sit on the data maturity curve?

8 questions. 3 minutes. You get a scored breakdown across data infrastructure, analytics readiness, and automation potential — with a specific next step for your industry.

Data GovernanceSecurityRBACABACUnity CatalogData Platform

Your Data · Our Technology · Our Automation

Get practical insights every fortnight

Amit writes about Microsoft Fabric, Power BI, AI in operations, and digital transformation for manufacturing and supply chain leaders. Practitioner perspective - no fluff, no vendor spin.

No spam. Unsubscribe any time. Also on Substack.

FAQ

Common questions

What is the difference between RBAC and ABAC?

RBAC (role-based access control) grants access by role or group — for example, Finance Analysts can SELECT finance data. ABAC (attribute-based access control) decides access from attributes of the user, resource and context — for example, a user only sees records where the data’s country matches their own. RBAC asks "what role do you have?"; ABAC asks "what attributes apply?" RBAC is simpler and suits standard access; ABAC is more flexible for dynamic, fine-grained policies.

Are RBAC and ABAC alternatives?

No — they combine. In a mature enterprise, RBAC handles the broad grant and ABAC adds the conditional filter. A Finance Analyst (role) can access Finance Gold tables (RBAC), and an attribute policy restricts them to their own country’s rows (ABAC). Roles keep the model simple where access is uniform; attributes handle cases where it must depend on who, what and where.

Is RBAC the same as table security and ABAC the same as row security?

No, that conflates two different things. RBAC and ABAC are access-control models — ways of deciding who gets access. Row-level and column-level security are enforcement mechanisms — ways of applying that decision to the data. Both models can be enforced through row- and column-level security; they operate at different layers and work together.

How are RBAC and ABAC enforced in a lakehouse?

Through the platform’s governance plus row-level security (which rows a user sees), column-level security and masking (which columns, and in what form), and dynamic views where appropriate. The key principle is to enforce as close to the governed data layer as possible, so every downstream consumer — BI, natural-language tools, applications — inherits the same controls instead of each re-implementing security.

When should you use ABAC instead of RBAC?

Use ABAC when access must be dynamic and depend on the data or context — data residency by country, patient access by hospital, visibility by project or clearance. Use RBAC for standard, uniform access patterns, and start there because it is simpler and auditable. Most enterprises combine both: RBAC for the broad grant, ABAC for the conditional cases, enforced at the data layer.

Related FAQs

Questions operations leaders ask

Is this the challenge you're facing?

Book a 30-minute call. We'll look at your specific operation and tell you what's achievable - plainly and without slides.