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_engineer
python 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_engineer
python 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_engineer
Grant 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_engineer
Verify Results:
SHOW GRANTS ON ROLE devops_engineer;SHOW GRANTS TO USER amruth;