Snowflake RBAC secures data by granting privileges to roles, then assigning roles to users.
Role-based access control (RBAC) assigns privileges to roles instead of users. Users inherit permissions through a hierarchy of roles, enabling least-privilege security and simplified audits.
Switch to SECURITYADMIN and run CREATE ROLE.This separates security duties from data-loading roles.
CREATE ROLE analyst;
GRANT SELECT, INSERT, UPDATE, DELETE, or ALL on tables, schemas, or databases to a role.
GRANT SELECT ON TABLE ecommerce.Orders TO ROLE analyst;
GRANT ROLE lets a parent role inherit child role privileges, reducing duplicate grants.
GRANT ROLE analyst TO ROLE reporting_team;
ACCOUNTADMIN or SECURITYADMIN attaches roles to users so they inherit all lower-level rights.
GRANT ROLE reporting_team TO USER jane_doe;
REVOKE removes a privilege or inherited role immediately, closing gaps in your security posture.
REVOKE SELECT ON TABLE ecommerce.Orders FROM ROLE analyst;
SHOW GRANTS and ACCOUNT_USAGE.GRANTS_TO_ROLES expose every current grant, letting you trace privilege lineage for compliance.
.
Yes. Schema-level grants like GRANT SELECT ON ALL TABLES IN SCHEMA ecommerce TO ROLE analyst cascade to new tables if you also enable the FUTURE keyword.
Run SHOW GRANTS TO ROLE <role_name> or query ACCOUNT_USAGE.GRANTS_TO_ROLES to list all inherited and direct privileges.
SECURITYADMIN is recommended. It owns role management but lacks object-level privileges, keeping duties separated.