RBAC & Discretionary Access Control in Snowflake
Design a secure, scalable permission model using roles and grants.
Snowflake implements Role-Based Access Control (RBAC) combined with elements of Discretionary Access Control (DAC): privileges are granted to roles, roles are granted to users (or other roles), and object owners retain discretion to grant further access on objects they own. Users never receive privileges directly — everything flows through roles, which is central to designing a maintainable permission model.
Roles are like keyrings: instead of cutting a new key for every employee for every door (users to objects directly), you hand employees a keyring (role) that already opens the doors relevant to their job, and promoting someone just means handing them an additional keyring.