Skip to content

Commit

Permalink
Merge pull request #116 from Sage-Bionetworks/snow-221-move-ownership…
Browse files Browse the repository at this point in the history
…-grants

[SNOW-221] Move ownership grants to versioned scripts
  • Loading branch information
philerooski authored Jan 29, 2025
2 parents cf61737 + f031f39 commit c1de320
Show file tree
Hide file tree
Showing 5 changed files with 179 additions and 164 deletions.
11 changes: 11 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,17 @@ jobs:
-w compute_xsmall \
-d METADATA
- name: ownership grants
shell: bash
run: |
schemachange \
-f admin/ownership_grants \
-a $SNOWFLAKE_ACCOUNT \
-u $SNOWFLAKE_USER \
-r SECURITYADMIN \
-w compute_xsmall \
-d METADATA
- name: future grants
shell: bash
run: |
Expand Down
165 changes: 1 addition & 164 deletions admin/grants.sql
Original file line number Diff line number Diff line change
Expand Up @@ -508,167 +508,4 @@ GRANT USAGE
TO ROLE SECURITYADMIN;
GRANT SELECT, INSERT
ON TABLE METADATA.SCHEMACHANGE.CHANGE_HISTORY
TO ROLE SECURITYADMIN;

---- RBAC reconfiguration of data warehouse ----
-- The following grants transfer ownership of current and future
-- data warehouse objects from SYSADMIN to each namespace's respective
-- `*_ALL_ADMIN` database role.

---- SYNAPSE_DATA_WAREHOUSE ----
GRANT OWNERSHIP
ON DATABASE SYNAPSE_DATA_WAREHOUSE
TO ROLE SYNAPSE_DATA_WAREHOUSE_ADMIN
COPY CURRENT GRANTS;

-- SYNAPSE
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
-- GRANT OWNERSHIP
-- ON ALL DYNAMIC TABLES
-- IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
-- TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
-- COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL DYNAMIC TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO ROLE SYSADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL STAGES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL VIEWS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
-- GRANT OWNERSHIP
-- ON ALL TASKS
-- IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
-- TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
-- COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TASKS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO ROLE SYSADMIN
COPY CURRENT GRANTS;

-- SYNAPSE_RAW
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL STAGES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL STREAMS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
-- GRANT OWNERSHIP
-- ON ALL TASKS
-- IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
-- TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
-- COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TASKS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO ROLE SYSADMIN
COPY CURRENT GRANTS;

-- SCHEMACHANGE
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE_ALL_ADMIN
COPY CURRENT GRANTS;

---- SYNAPSE_DATA_WAREHOUSE_DEV ----
GRANT OWNERSHIP
ON DATABASE SYNAPSE_DATA_WAREHOUSE_DEV
TO ROLE SYNAPSE_DATA_WAREHOUSE_DEV_ADMIN
COPY CURRENT GRANTS;

-- SYNAPSE
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
-- GRANT OWNERSHIP
-- ON ALL DYNAMIC TABLES
-- IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE
-- TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_ALL_ADMIN
-- COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL DYNAMIC TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE
TO ROLE SYSADMIN
COPY CURRENT GRANTS;

-- SYNAPSE_RAW
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL STAGES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL STREAMS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
-- GRANT OWNERSHIP
-- ON ALL TASKS
-- IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
-- TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
-- COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TASKS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO ROLE SYSADMIN
COPY CURRENT GRANTS;

-- SCHEMACHANGE
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE_ALL_ADMIN
COPY CURRENT GRANTS;
TO ROLE SECURITYADMIN;
1 change: 1 addition & 0 deletions admin/ownership_grants/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Sometimes granting ownership can have side-effects. For example, granting ownership on a task auto-suspends the task, even if we are transferring ownership to the current owner. This is why we only want to execute ownership grants once and separate them from other types of grants contained in `admin/grants.sql`.
73 changes: 73 additions & 0 deletions admin/ownership_grants/V1.3.0__synapse_data_warehouse_dev.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---- RBAC reconfiguration of data warehouse ----
-- The following grants transfer ownership of current and future
-- data warehouse objects from SYSADMIN to each namespace's respective
-- `*ALL_ADMIN` database role.

---- SYNAPSE_DATA_WAREHOUSE_DEV ----
GRANT OWNERSHIP
ON DATABASE SYNAPSE_DATA_WAREHOUSE_DEV
TO ROLE SYNAPSE_DATA_WAREHOUSE_DEV_ADMIN
COPY CURRENT GRANTS;

-- SYNAPSE
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
-- GRANT OWNERSHIP
-- ON ALL DYNAMIC TABLES
-- IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE
-- TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_ALL_ADMIN
-- COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL DYNAMIC TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE
TO ROLE SYSADMIN
COPY CURRENT GRANTS;

-- SYNAPSE_RAW
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL STAGES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL STREAMS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
-- GRANT OWNERSHIP
-- ON ALL TASKS
-- IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
-- TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
-- COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TASKS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO ROLE SYSADMIN
COPY CURRENT GRANTS;

-- SCHEMACHANGE
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE_ALL_ADMIN
COPY CURRENT GRANTS;
93 changes: 93 additions & 0 deletions admin/ownership_grants/V1.3.1__synapse_data_warehouse_prod.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---- RBAC reconfiguration of data warehouse ----
-- The following grants transfer ownership of current and future
-- data warehouse objects from SYSADMIN to each namespace's respective
-- `*ALL_ADMIN` database role.

---- SYNAPSE_DATA_WAREHOUSE ----
GRANT OWNERSHIP
ON DATABASE SYNAPSE_DATA_WAREHOUSE
TO ROLE SYNAPSE_DATA_WAREHOUSE_ADMIN
COPY CURRENT GRANTS;

-- SYNAPSE
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
-- GRANT OWNERSHIP
-- ON ALL DYNAMIC TABLES
-- IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
-- TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
-- COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL DYNAMIC TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO ROLE SYSADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL STAGES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL VIEWS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
COPY CURRENT GRANTS;
-- GRANT OWNERSHIP
-- ON ALL TASKS
-- IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
-- TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
-- COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TASKS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO ROLE SYSADMIN
COPY CURRENT GRANTS;

-- SYNAPSE_RAW
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL STAGES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL STREAMS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
COPY CURRENT GRANTS;
-- GRANT OWNERSHIP
-- ON ALL TASKS
-- IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
-- TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
-- COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TASKS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO ROLE SYSADMIN
COPY CURRENT GRANTS;

-- SCHEMACHANGE
GRANT OWNERSHIP
ON SCHEMA SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE_ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON ALL TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE_ALL_ADMIN
COPY CURRENT GRANTS;

0 comments on commit c1de320

Please sign in to comment.