RBAC | Security UX | Enterprise Saas | Fintech | Agile/Scrum

Security & Access Management

RBAC - Designing a Compliance-Safe Access Model for an Enterprise Fintech Platform.

My role

UX/UI Designer - end-to-end design responsibility

Product

Modular enterprise fintech SaaS

Domain

Enterprise SaaS · Fintech · Modular platform

Environment

Angular · Kendo UI · Enterprise Design System · Agile/Scrum

Team

BAs · POs · Engineering · Security

Timeline

Q3-Q4

Confidentiality

Company, client, and system details removed. Visuals anonymised. Approach and outcomes accurate.

The project in 30 seconds

A greenfield access management module using an RBAC permission model, where I designed the interaction model for configuring organisational access under strict audit and security constraints.

Challenge

  • the access model was based on inherited permissions
  • in the edit user scenario, the same role could come from different sources
  • the interaction had to make the real effect of each action clear and predictable

Role

  • end-to-end access management design
  • flow mapping based on BA refinements
  • problem reframing through flow analysis
  • interaction model making access changes predictable
  • final UI aligned with Angular / Kendo
  • reusable cross-module interaction patterns
  • UX validation scenarios for real system behaviour

Key decisions

  • structural separation of inherited vs direct roles
  • active-permission model driven by security constraints
  • platform table interaction standard
  • reusable constraint communication pattern
  • unified notification structure

Impact

  • understandable and predictable access changes
  • interaction patterns reused across 15+ modules
  • designed for full platform compatibility
  • access safe by default

My role

I owned the end-to-end design of the access management interaction, from flow mapping during BA refinements to the final UI implemented within the Angular / Kendo architecture.

Through flow analysis, I reframed the original request from a UI problem into a structural risk in the access model, which unlocked scope for a system-level solution.

I led the interaction model design and aligned the solution with Security, Engineering, Product and BAs.

Final decisions followed the organisation’s stakeholder approval process.

Product & Scale

Modular enterprise fintech platform with multi-tenant client environments, strict audit and compliance requirements, and complex organisational access structures.

Access management based on the RBAC permission model sat at the architectural centre — every module depended on its interaction patterns.

Platform structure — access management in context

Context

The platform had grown fast and early modules were implemented without a consistent design process. Their behaviour was later copied across the system.

By the time design gained cross-module visibility, pattern debt was distributed across 15+ modules — different table logic, notifications and constraint handling.

Local fixes could not solve a systemic problem.

The greenfield access management module became the leverage point to consolidate fragmented interaction patterns across the platform, which allowed design to introduce structural fixes affecting multiple modules.

Goals & constraints

Business goals

  • deliver an MVP for the new access management domain
  • ensure audit-compliant access configuration
  • design a scalable foundation for future modules

Technical constraints

  • UI had to align with the Kendo-based design system
  • solution had to integrate with existing and future modules
  • backend readiness varied across features

The problem

System model

Permissions were never assigned directly — they always flowed through roles, often inherited through groups.
As a result, the same role visible in the interface could come from different sources.

This made the real effect of an action impossible to understand at the moment of decision.

User → Group → Role → Permission
User → Role → Permission

User Roles & Relationships

Legend

User module

Group module

Roles module

Audit impact

Access decisions had to be explainable — it had to be clear why a user had a given access and which action granted it.

With the inherited model, a correct configuration could not be logically justified, because the origin of permissions was not visible at the moment of decision.

The result

A configuration that appeared correct could lead to a different real access than intended.

Correct administrative actions did not reliably produce a predictable and explainable outcome.

The key design-driven moment

Reframing the request.

Request came as

"Administrators need better visibility."

BA refinement sessions revealed the domain logic behind role inheritance and data exposure.

Mapping the full access flow showed that the issue was not interface visibility — the access model itself made correct configuration impossible before any UI was designed.

Reframed as

"A compliance risk in the access model."

I brought this back to Security and the Product Owner as a compliance risk in the access model, not as a UI request, which changed the priority and unlocked scope for a structural solution.

This reframing changed the priority, unlocked scope for a structural solution, and became the key moment of the project.

Final decisions followed the organisation’s stakeholder approval process.

Process

The process was driven by refinements and validation.

The access model depended on other modules, so requirements evolved during BA sessions.

Work included:

  • flow mapping based on refinements
  • validating scenarios with Security
  • checking feasibility with Engineering
  • aligning patterns across modules
  • designing reusable interaction rules

Iterative process based on refinements and validation

Scenarios created during refinements were later used by QA to validate real production flows.

Because the module affected other parts of the system, design decisions had to work beyond a single screen.

The decisions

Five decisions — each one documented with the reasoning, the tradeoffs, and what it enabled.

01

Making Inheritance Visible

The core decision. Without it, nothing else reduces compliance risk.

A flat role list could not communicate source, removability, or consequence.

Before moving to structural separation, lighter-weight approaches were explored and rejected:

Lock icons:
Signals restriction, but not origin or impact.

Disabled state:
Suggests a temporary condition — users try to re-enable instead of changing the source.

Tooltip on hover:
Hidden by default, interaction-dependent and not scalable.
Becomes disruptive when repeated across multiple roles.

None of these explained the mechanism.
Administrators needed
  • to see the origin of access
  • to understand the consequence of removing a group
The real risk
  • cascading permission loss — removing a group to delete one role removed every inherited role
What this required
  • a structural solution, not a component-level signal
  • the logic visible at the moment of decision
  • plain language as the default state of the interface
This was not a UI improvement — it was a risk acceptance decision.
Trade-off
  • delaying part of the MVP UI delivery
  • or shipping a flow that could grant incorrect client access
Solution

Two structurally separate sections, each explaining its logic at the point of decision:

  • locked, with the mechanism explained and a clear removal path through group settings
  • directly assigned — fully editable

Action: Remove group

Result: Group removed → inherited roles removed → directly assigned roles unchanged

Gained
  • explains mechanism, not just state
  • prevents cascading permission loss
  • satisfies audit requirement
  • reusable across all inherited-relationship modules
Accepted
  • minor visual complexity with additional sections
    (accepted — clarity outweighs compactness in compliance context)

02

Permission visibility driven by security constraints

A security constraint that improved the verification flow.

Problem / shift

The original MVP assumption was straightforward: show all permissions.

During refinements a security requirement emerged — inactive permissions could not be exposed.
This was a data exposure rule, not a usability preference.

The question shifted:

How do we display everything clearly?

How do administrators verify real access when only active permissions are visible?

The constraint improved focus.

Administrators don’t verify what isn’t active — they confirm what is.
This aligned the interface with the real task and removed cognitive overload at scale.

Solution
  • active permissions only
  • consistent status chips
  • structure aligned across all modules

Roles - edit mode

Roles - view mode

Gained
  • compliant with data exposure rules
  • matches real verification task flow
  • eliminates cognitive overload at scale
  • reusable structure across all 15+ modules
Accepted
  • full permission architecture not browsable in this context
    (by design — security requirement, not a tradeoff)

03

Platform table interaction model

A central module used to unlock a platform-wide interaction fix.

Problem

Before a design process was established, multiple table patterns had emerged:

  • in some tables, clicking a row opened the detail view
  • in others, the same action selected items for bulk operations
  • in some modules, tables were read-only and not interactive at all
  • all tables shared the same hover state

Users could not predict the outcome — the same interaction produced different results.

Design had been flagging this for several sprints.

The permissions module was the first place where the existing table patterns could no longer be reused.

The table had to support both navigation to details and multi-select for bulk operations, which exposed the inconsistency of interaction behaviour across the platform.

Clicking the row opened the detail view.

Row acted as the navigation trigger.

Clicking the row selected the item for bulk actions.

There was no way to open the detail view from this table.

Solution
  • row = selection only
  • dedicated action column = navigation
  • one interaction - one outcome, every time

The same interaction no longer produces different results.
Selection and navigation are structurally separated.

Gained
  • eliminates interaction ambiguity platform-wide
  • one consistent pattern across 15+ modules
  • multiselect-ready from day one
Accepted
  • required changes to existing modules
    (accepted — compounding cost of not fixing outweighed the effort)

04

Constraint communication before errors

A system constraint turned into a preventive interaction pattern.

Context

User ID cannot be changed after saving - a standard system constraint.

The initial MVP position was to ship without any message and let users discover it through errors.

In a security module where administrators configure access for an entire organisation, that approach:

  • generates support tickets
  • erodes trust
  • creates audit exposure when incorrect IDs cannot be corrected
Solution

Inline informational banner placed above the relevant field and visible before saving.

Pattern (became the platform standard):

  • inline banner
  • positioned at the point of decision
  • shown before the action
  • generic enough to absorb future constraints

The limitation is explained before the field is used.

Gained
  • prevents errors before they occur
  • reduces support load
  • reusable for any current and future constraint
  • adopted as a platform-wide pattern
Accepted
  • required pushing back against MVP pressure
    (worth it — eliminated a recurring operational cost)

05

Feedback that explains, not just confirms

A notification pattern turned into a platform standard.

Context

Notification copy had been a recurring source of friction across modules:

  • no consistent structure
  • no ownership
  • no clear resolution for users

The security module involved the most stakeholders and the longest decision cycles.
standard and align while all decision-makers were already engaged.

That waiting time was used deliberately to draft a shared notification standard and align while all decision-makers were already engaged.

Fix it when everyone's in the room

The cheapest moment to reach agreement is when the highest number of stakeholders is already involved.

The standard was documented and shared with parallel teams before they built their own versions.

Solution

Every notification followed the same structure:

  • status — what happened
  • context — what it means
  • next action — what to do now
Gained
  • users always know what happened and what to do next
  • consistent across all 15+ modules
  • eliminates longstanding copy inconsistency
  • reusable documented pattern
Accepted
  • more effort required to craft each notification
    (accepted — one-time documentation cost)

Collaboration

Every structural decision was validated with domain owners before full design commitment, but the interaction model and structural proposals were driven by design.

BAs and POs - translated business logic into design direction. The inheritance mechanism and the data exposure rule only became fully clear through refinement conversations.

Engineering - flagged feasibility constraints before full design commitment, allowing structural decisions to scale across the Angular/Kendo architecture.

Security - held the compliance line when simplification pressure emerged, enabling the structural solution to ship.

Adjacent module teams - aligned on table interaction and notification patterns before building their own implementations

Design question
Validated with
Outcome
Inheritance visibility
Engineering, Security, PO
Two-section source separation
Permission display
BA, Security
Active-only view, security-compliant
Table interaction
Engineering + all module teams
Dedicated action column, platform-wide
Constraint communication
BA, PO
Inline banner, adopted as platform standard
Notification structure
Technical authors, all parallel teams
Status + context + next action, documented and shared

Final decisions followed the organisation's stakeholder approval process.

Impact

How this changed the system

Access configuration became predictable and explainable in real task scenarios.

Platform impact

  • interaction patterns reused across 15+ modules
  • one consistent table interaction model
  • one notification structure across modules
  • constraint communication established as a platform pattern
  • zero cross-module pattern conflicts

Operational impact

  • fewer configuration errors in task-based QA validation
  • reduced recurring support requests caused by silent system constraints
  • multiselect and bulk operations enabled by default through a consistent interaction model
  • future modules built on documented patterns instead of creating new ones

Compliance impact

  • access explainable at the moment of decision
  • audit requirement met — correct actions no longer produced unintended access
  • data exposure rules enforced by design, not by user awareness

Reflections

Leverage is a design skill.

The permissions module’s architectural position created the moment where platform change became possible.

Structural problems need structural solutions.

When the cost of misunderstanding is systemic, signals are not enough — the mechanism must be visible before the user acts.

Security constraints can improve focus.

Hiding inactive permissions aligned the interface with the real verification task.

Argue for error prevention before it becomes error correction.

The right time to challenge an MVP shortcut is before it turns into recurring operational cost.

Alignment is cheapest when everyone is already in the room.

The notification standard was resolved during existing decision cycles, not through a separate process.

Wybrane Projekty

Zobacz też inne projekty.

Design System

Zobacz Case Study
Design System cover

Iconography System

Zobacz Case Study

Security & Access Management

Zobacz Case Study

Pro Hair Lab

Zobacz Case Study

Design System

Zobacz Case Study
Design System cover

Iconography System

Zobacz Case Study

Security & Access Management

Zobacz Case Study

Pro Hair Lab

Zobacz Case Study