PracHub
QuestionsPremiumCoachesLearningGuidesInterview Prep
|Home/System Design/Verkada

Design camera access-control service

Last updated: Mar 29, 2026

Quick Overview

This question evaluates a candidate's competency in large-scale system design, data modeling for access control, distributed consistency, and API and caching strategies required for low-latency authorization checks.

  • hard
  • Verkada
  • System Design
  • Software Engineer

Design camera access-control service

Company: Verkada

Role: Software Engineer

Category: System Design

Difficulty: hard

Interview Round: Technical Screen

Design an access-control service for users, cameras, and nested groups that can answer queries like: Does user U have access to camera C? and Which users have access to all cameras? Cover data model choices (relational vs. graph), APIs, indexing and caching strategies, consistency and authorization change propagation, cycle prevention in group hierarchies, scaling and sharding, precomputing transitive memberships versus on-demand traversal (e.g., BFS), and approaches for incremental updates and auditing.

Quick Answer: This question evaluates a candidate's competency in large-scale system design, data modeling for access control, distributed consistency, and API and caching strategies required for low-latency authorization checks.

Related Interview Questions

  • Design Camera Health Monitoring - Verkada (medium)
  • Design access control and heartbeat systems - Verkada (medium)
  • Design real-time per-status device counts - Verkada (medium)
Verkada logo
Verkada
Aug 8, 2025, 12:00 AM
Software Engineer
Technical Screen
System Design
14
0

Design an Access-Control Service (Users, Cameras, Nested Groups)

Context

You are building a multi-tenant access-control service for a physical-security platform. Tenants (organizations) have:

  • Users (people)
  • Cameras (devices)
  • Nested groups for organization, user, and camera management

Access is inherited via group memberships. A user has access to a camera if they are connected via grants between user groups and camera groups, considering transitive membership (nested groups).

Assume permissions are allow-only (no explicit denies), with at least one role such as "view"; feel free to mention how to extend to additional roles.

Functional Requirements

  1. Check access:
    • Does user U have access to camera C? (low-latency, high-QPS)
  2. Set operations:
    • Which users have access to all cameras in their tenant?
  3. Manage entities:
    • Create/update/delete users, cameras, and groups
    • Add/remove users to/from user groups (nested)
    • Add/remove cameras to/from camera groups (nested)
    • Grant/revoke permissions from user groups to camera groups
  4. Multi-tenancy isolation by org_id.

Non-Functional Goals (assume reasonable scale)

  • Latency: p99 < 10 ms for the access check
  • Throughput: access-check QPS >> write QPS
  • Scale: up to millions of users/cameras across many tenants; group depth up to ~5–10
  • Strong correctness for enforcement; reasonable staleness tolerance for list queries

What to Cover

  • Data model choices: relational vs. graph (pros/cons) and your chosen design
  • API design (CRUD, grants, access-check endpoints)
  • Indexing and caching strategies for the two core queries
  • Consistency model and authorization change propagation
  • Cycle prevention in nested group hierarchies
  • Scaling and sharding strategy
  • Precomputing transitive memberships vs. on-demand traversal (e.g., BFS)
  • Incremental update approaches for derived data and auditing

Solution

Show

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...

Browse More Questions

More System Design•More Verkada•More Software Engineer•Verkada Software Engineer•Verkada System Design•Software Engineer System Design
PracHub

Master your tech interviews with 8,000+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.