Step 1 : Create Warehouse
CREATE WAREHOUSE WH_TESTING WITH WAREHOUSE_SIZE = 'XSMALL' WAREHOUSE_TYPE = 'STANDARD' AUTO_SUSPEND = 600 AUTO_RESUME = TRUE MIN_CLUSTER_COUNT = 1 MAX_CLUSTER_COUNT = 2 SCALING_POLICY = 'STANDARD';
Step 2 : Create Database
USE ROLE SYSADMIN;
CREATE DATABASE IF NOT EXISTS DB_TESTING;
Step 3 : Create Database Roles
USE ROLE SECURITYADMIN;
CREATE DATABASE ROLE IF NOT EXISTS ROLE_DB_TESTING_READ;
CREATE DATABASE ROLE IF NOT EXISTS ROLE_DB_TESTING_WRITE;
Step 4 : Create Account Level Roles
USE ROLE SECURITYADMIN;
CREATE ROLE DEV_APP;
CREATE ROLE DEV_APP_DEVELOPER;
CREATE ROLE DEV_READ_ALL;
Step 5 : Grant Roles to SYSADMIN
GRANT ROLE ROLE_DB_TESTING_READ TO ROLE SYSADMIN;
GRANT ROLE ROLE_DB_TESTING_WRITE TO ROLE SYSADMIN;
Step 6 : Grant to DB Roles
USE ROLE SYSADMIN;
GRANT USAGE ON DATABASE DB_TESTING TO ROLE ROLE_DB_TESTING_READ;
GRANT USAGE ON DATABASE DB_TESTING TO ROLE ROLE_DB_TESTING_WRITE;
USE DATABASE DB_TESTING;
GRANT USAGE ON SCHEMA PUBLIC TO ROLE ROLE_DB_TESTING_READ;
GRANT USAGE ON SCHEMA PUBLIC TO ROLE ROLE_DB_TESTING_WRITE;
GRANT CREATE TABLE ON SCHEMA PUBLIC TO ROLE ROLE_DB_TESTING_WRITE;
GRANT CREATE FILE FORMAT, CREATE PIPE, CREATE STAGE, CREATE SEQUENCE, MODIFY, MONITOR, USAGE ON SCHEMA PUBLIC TO ROLE ROLE_DB_TESTING_WRITE;
GRANT USAGE ON FUTURE PROCEDURES IN DATABASE DB_TESTING TO ROLE ROLE_DB_TESTING_WRITE;
GRANT USAGE ON FUTURE PROCEDURES IN DATABASE DB_TESTING TO ROLE ROLE_DB_TESTING_READ;
Step 7 : Create Schema and provide Grants
USE ROLE SYSADMIN;
USE DATABASE DB_TESTING;
CREATE SCHEMA IF NOT EXISTS SCHEMA_DEV;
GRANT USAGE ON SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT CREATE FILE FORMAT, CREATE PIPE, CREATE STAGE, CREATE SEQUENCE, MODIFY, MONITOR, USAGE ON SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
GRANT CREATE TABLE, CREATE FUNCTION, CREATE TEMPORARY TABLE, CREATE VIEW, MODIFY, USAGE ON SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
USE ROLE SYSADMIN;
GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT SELECT ON ALL VIEWS IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT SELECT ON ALL MATERIALIZED VIEWS IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT DELETE, INSERT, REFERENCES, SELECT, TRUNCATE, UPDATE ON ALL TABLES IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
GRANT DELETE, INSERT, REFERENCES, SELECT, TRUNCATE, UPDATE ON ALL VIEWS IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
GRANT DELETE, INSERT, REFERENCES, SELECT, TRUNCATE, UPDATE ON ALL MATERIALIZED VIEWS IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
USE ROLE SECURITYADMIN;
GRANT SELECT ON FUTURE TABLES IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON FUTURE TABLES IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
GRANT SELECT ON FUTURE VIEWS IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT SELECT, REFERENCES ON FUTURE VIEWS IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
GRANT SELECT ON FUTURE MATERIALIZED VIEWS IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT SELECT, REFERENCES ON FUTURE MATERIALIZED VIEWS IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
USE ROLE SYSADMIN;
GRANT CREATE FILE FORMAT, CREATE STAGE, CREATE SEQUENCE, MONITOR, USAGE ON SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
USE SCHEMA DB_TESTING.SCHEMA_DEV;
CREATE TABLE IF NOT EXISTS INCR_TABLES (TABLE_NAME VARCHAR(1000) NOT NULL,PRIMARY_KEY VARCHAR(1000),SQL_SELECT VARCHAR,SQL_WHERE VARCHAR,SRC_DB_SCHEMA VARCHAR(100),LAST_MODIFIED_FIELD VARCHAR(1000),LAST_MODIFIED_FIELD_VALUE TIMESTAMP);
CREATE TABLE IF NOT EXISTS RELOAD_TABLES (TABLE_NAME VARCHAR(1000),PRIMARY_KEY VARCHAR(1000),SQL_SELECT VARCHAR,SQL_WHERE VARCHAR,SRC_DB_SCHEMA VARCHAR(100),REFRESH_RATE NUMBER(5,0), NEXT_REFRESH_DATE TIMESTAMP);
USE ROLE SECURITYADMIN;
GRANT ROLE ROLE_DB_TESTING_WRITE TO ROLE DEV_APP;
GRANT ROLE ROLE_DB_TESTING_READ TO ROLE DEV_APP_DEVELOPER;
GRANT ROLE ROLE_DB_TESTING_READ TO ROLE DEV_READ_ALL;
No comments:
Post a Comment