Add User and Roles in Snowflake#
Note
Use the ACCOUNTADMIN role to run the steps in the following sections.
Using Shell Script#
Execute a shell script to automatically create Snowflake users and roles. Follow the steps below:
-
Start the PM docker shell to setup Snowflake.
cd ~/privacera/privacera-manager ./privacera-manager.sh shell
-
Download the Snowflake setup for policysync process.
cd ../downloads curl https://privacera.s3.amazonaws.com/public/pm-demo-data/snowflake/snowflake_setup.sh --output snowflake_setup.sh chmod +x snowflake_setup.sh
-
Run downloaded script. e.g ./snowflake_setup.sh testsnowflake.prod.us-west-2.aws testadmin AdminPassword PolicySyncPassword false
./snowflake_setup.sh ${SNOWFLAKE_ACCOUNT} ${ADMIN_USERNAME} ${ADMIN_PASSWORD} ${POLICYSYNC_USER_PASSWORD} ${ENABLE_ADVANCE_AUDIT}
Where: set ${ENABLE_ADVANCE_AUDIT} to true only if you have private auditing feature enabled from Snowflake.
Using Snowflake CLI#
Follow the steps below to create Snowflake users and roles by manually executing SQL queries:
-
Start the PM docker shell to setup Snowflake.
cd ~/privacera/privacera-manager ./privacera-manager.sh shell
-
Log into your Snowflake account using your account name and user name. This will start SnowSQL. For more information about the account name and user name, click here.
snowsql -a <account_name> -u <user_name>
-
Create a warehouse for PolicySync. Change the Warehouse size according to deployment.
CREATE WAREHOUSE IF NOT EXISTS PRIVACERA_POLICYSYNC_WH WITH WAREHOUSE_SIZE='XSMALL' WAREHOUSE_TYPE='STANDARD' AUTO_SUSPEND=600 AUTO_RESUME= TRUE MIN_CLUSTER_COUNT=1 MAX_CLUSTER_COUNT=1 SCALING_POLICY='ECONOMY';
-
Role used by the Policy Sync.
CREATE ROLE IF NOT EXISTS PRIVACERA_SYNC_ROLE;
-
Role should have permissions to grant/revoke and also to create users and roles.
GRANT ROLE SECURITYADMIN TO ROLE PRIVACERA_SYNC_ROLE; GRANT ROLE ACCOUNTADMIN TO ROLE PRIVACERA_SYNC_ROLE;
-
This is the default owner for all user-created resources. By switching the roles to the default role helps in managing the grants/revokes.
CREATE ROLE IF NOT EXISTS PRIVACERA_DEFAULT_OWNER;
-
The database user used by the Policy Sync process. Replace
${POLICYSYNC_USER_PASSWORD}
with the appropriaate password.CREATE USER IF NOT EXISTS PRIVACERA_SYNC PASSWORD='${POLICYSYNC_USER_PASSWORD}' MUST_CHANGE_PASSWORD=FALSE DEFAULT_WAREHOUSE='PRIVACERA_POLICYSYNC_WH' DEFAULT_ROLE='PRIVACERA_SYNC_ROLE';
-
Allow the user to assume the PolicySync role.
GRANT ROLE PRIVACERA_SYNC_ROLE TO USER PRIVACERA_SYNC;
-
Create the database to store masking policies.
CREATE DATABASE IF NOT EXISTS privacera_db;