Comprehensive guide for using the Snowflake Role-Based Access Control (RBAC) CLI to manage roles, privileges, and users.
The CLI supports the following actions:
python rbac_setup.py --action create_role --role <role_name>To create a role data_engineer:
python rbac_setup.py --action create_role --role data_engineerpython rbac_setup.py --action grant_privileges --role <role_name> --privileges "<privilege_1>" "<privilege_2>" ...To grant privileges to the data_engineer role:
python rbac_setup.py --action grant_privileges --role data_engineer --privileges "GRANT USAGE ON DATABASE TEST TO ROLE data_engineer;" "GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC TO ROLE data_engineer;"python rbac_setup.py --action create_user --user <username> --assign_role <role_name>To create a user amruth and assign the data_engineer role:
python rbac_setup.py --action create_user --user amruth --assign_role data_engineerpython rbac_setup.py --action execute_query --query "<sql_query>"To create the database TEST:
python rbac_setup.py --action execute_query --query "CREATE DATABASE IF NOT EXISTS TEST;"After executing CLI commands, verify the results in the Snowflake Web UI as follows:
data_engineer, devops_engineer) are listed.data_engineer) and view its Granted Privileges tab.SHOW GRANTS ON ROLE data_engineer;amruth, krish) are listed.Here’s a step-by-step workflow to create roles, assign privileges, and add users:
Create Roles:
python rbac_setup.py --action create_role --role devops_engineerpython rbac_setup.py --action create_role --role database_administratorpython rbac_setup.py --action create_role --role data_engineerGrant Privileges:
python rbac_setup.py --action grant_privileges --role devops_engineer --privileges "GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE devops_engineer;" "GRANT CREATE SCHEMA ON DATABASE TEST TO ROLE devops_engineer;"python rbac_setup.py --action grant_privileges --role data_engineer --privileges "GRANT USAGE ON DATABASE TEST TO ROLE data_engineer;" "GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC TO ROLE data_engineer;"Create Users:
python rbac_setup.py --action create_user --user amruth --assign_role data_engineerpython rbac_setup.py --action create_user --user hrishav --assign_role devops_engineerVerify Results:
SHOW GRANTS ON ROLE devops_engineer;SHOW GRANTS TO USER amruth;