The GRANT command assigns object or role privileges to users or roles in Snowflake.
GRANT hands specific privileges on databases, schemas, tables, or roles to users or roles so they can perform actions such as SELECT, INSERT, or OWNERSHIP.
Run GRANT with a privilege list, the object type TABLE, and the target table name. Assign the privileges to a role or user.
GRANT SELECT, INSERT ON TABLE Orders TO ROLE analyst;
Yes. Use the FUTURE keyword so every table created later inherits the privileges.
GRANT SELECT ON FUTURE TABLES IN SCHEMA sales TO ROLE reporting_role;
Add WITH GRANT OPTION so the grantee can re-grant the same privileges.
GRANT SELECT ON TABLE Products TO ROLE lead_dev WITH GRANT OPTION;
Use REVOKE with the same privilege list and object to remove access.
REVOKE INSERT ON TABLE Orders FROM ROLE intern;
Create functional roles (analyst, app_reader) and grant privileges to roles, then assign roles to users.
Grant only the privileges required (principle of least privilege) to reduce security risk.
Log every GRANT and REVOKE in version control or a change-management table for audits.
• BI teams need SELECT on reporting views.
• ETL jobs require INSERT on staging tables.
• Developers need TEMPORARY TABLE privilege in sandboxes.
Privilege errors often come from forgotten schema-level grants. Grant usage at both database and schema levels when needed.
Query SHOW GRANTS or SHOW GRANTS ON TABLE Orders to view current privilege assignments.
Yes. Use SHOW GRANTS ON TABLE source_tbl, then dynamically build GRANT statements for the target.
New privileges apply immediately. Active sessions may need to refresh their role with USE ROLE or reconnect.