← Atlassian Interview Insights
I started with the data model which felt safe, users, roles, permissions, resources, the join tables.
Start by clarifying requirements: define roles, resources, actions, and the scale (billions of checks per day). Then propose a data model with RBAC and resource-level permissions, and describe an evaluation engine that combines both, with caching and sharding for scalability. Finally, discuss trade-offs and optimizations.
Pro tip: Emphasize that authorization decisions should be fast and consistent; consider using a policy decision point (PDP) with a policy engine like OPA or a custom one, and cache decisions with short TTLs to handle scale while maintaining freshness.
Ask about the types of resources, actions, roles, and the expected number of checks per day. Confirm latency requirements and consistency needs.
Define entities: users, roles, permissions, resources, and resource-level ACLs. Consider a graph model or relational tables with efficient indexing.
Describe how to combine RBAC and resource-level permissions: e.g., check role permissions first, then resource-specific overrides. Use a policy evaluation engine.
Cache decisions at multiple levels (client, service, distributed cache) with appropriate TTLs. Shard the authorization service and use read replicas for the data store.
Address consistency vs. latency, cache invalidation strategies, and how to handle billions of checks with horizontal scaling and efficient data structures.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.