You are on page 1of 2

/* CREATE DATABASE AND SCHEMA*/

USE DATABASE LA_DB;


USE SCHEMA LA_SCHEMA;

/* Use acccountadmin role and WH */

USE ROLE ACCOUNTADMIN;

USE WAREHOUSE COMPUTE_WH;

-- Assume new role

USE ROLE SYSADMIN;

-- Provision the new DB ans schema

CREATE OR REPLACE DATABASE DUMMY;


USE DATABASE DUMMY;
CREATE OR REPLACE SCHEMA DUMMY_SC;

-- Create table

CREATE OR REPLACE TABLE DUMMY.DUMMY_SC.cust_det (


id INT,
name VARCHAR(255)

);

-- Insert sample record

USE ROLE ACCOUNTADMIN;

INSERT INTO DUMMY.DUMMY_SC.cust_det (id, name)


VALUES (1, 'John Doe'),
(2, 'Alex Doe');

-- Create User using SECURITY ADMIN

USE ROLE USERADMIN;

CREATE USER USER1 PASSWORD='abc123' MUST_CHANGE_PASSWORD = TRUE;

-- Set to Security Admin to create ROLE

USE ROLE SECURITYADMIN;

CREATE ROLE DUMMY_ROLE;

-- Grant ROLE To new user

GRANT ROLE DUMMY_ROLE TO USER USER1;

-- Grant SELECT on TABLE

GRANT SELECT ON TABLE DUMMY.DUMMY_SC.cust_det TO ROLE DUMMY_ROLE;


-- USAGE on DB and SCHEMA Needed in order to access TABLE

GRANT USAGE ON DATABASE DUMMY TO ROLE DUMMY_ROLE;


GRANT USAGE ON SCHEMA DUMMY.DUMMY_SC TO ROLE DUMMY_ROLE;

-- Also WH

GRANT USAGE ON WAREHOUSE COMPUTE_WH TO DUMMY_ROLE;

--Grant on future tables as well

GRANT SELECT ON FUTURE TABLES IN SCHEMA LA_DB.LA_SCHEMA TO ROLE DUMMY_ROLE;

-- Dont leave the role orphan

GRANT ROLE DUMMY_ROLE TO ROLE SYSADMIN;

-- Check grants on the role

SHOW GRANTS TO ROLE DUMMY_ROLE;

-- Revoke SELECT Grants

REVOKE SELECT ON ALL TABLES IN SCHEMA DUMMY.DUMMY_SC from ROLE DUMMY_ROLE;

-- Grant ownership to new role

GRANT OWNERSHIP ON SCHEMA DUMMY.DUMMY_SC TO ROLE DUMMY_ROLE;

-- Need to revoke USAGE As well

REVOKE USAGE ON SCHEMA DUMMY.DUMMY_SC from ROLE DUMMY_ROLE;

-- Drop Role and User

DROP ROLE DUMMY_ROLE;


DROP USER USER1;

You might also like