Atlassian commonly features a system design interview question on designing Role-Based Access Control (RBAC) systems, often targeted at data engineering, backend, web infrastructure, security, and system design roles.
Design a scalable RBAC system for a multi-tenant SaaS platform (like Atlassian's products such as Jira or Confluence). The system must assign roles to users within organizations, link roles to permissions, and enforce access controls on resources (e.g., projects, documents, databases). Support hierarchical roles, dynamic role assignment, auditing, and high availability. Key requirements include the principle of least privilege, multi-tenancy isolation, and handling millions of users/resources with low-latency authorization checks.[2][3]
Input: { "org_id": 123, "user_id": 456, "role": "editor", "resource_scope": "project:ABC" }
Output: { "success": true, "assignment_id": "assign_789" }[2]
Input: { "user_id": 456, "action": "write", "resource": "project:ABC/doc:XYZ" }
Output: { "allowed": true, "role": "editor", "reason": "role_permission_match" } (or false with deny reason).[1]
Input: { "user_id": 456, "org_id": 123 }
Output:
[ { "role": "editor", "permissions": ["read:project:*", "write:project:ABC"] }, { "role": "viewer", "permissions": ["read:project:*"] } ]