Role Management at Slack
May 24, 2021

Summary
Introduced a new Role-Based Access Control (RBAC) system to provide granular permissions beyond existing broad roles. Designed a data model including Permissions, Roles, and Entities. Developed a separate, containerized Go service for managing roles and permissions, communicating with the webapp monolith via gRPC and Protocol Buffers. Persisted role information in Vitess, sharded by user_id. Implemented three new system roles: Channels Admin, Users Admin, and Roles Admin. Modified client architecture to fetch and display UI components based on user permissions, with real-time updates. Planned and executed a phased rollout strategy including dark mode and light mode validation.