Skip to content

Commit

Permalink
[SNOW-218] Create proxy admin database role (#131)
Browse files Browse the repository at this point in the history
* Create proxy admin database role

* Grant proxy admin role ownership of *ALL_ADMIN roles

* Transfer ownership of current and future internamespace objects

* address PR comments

* bump version to avoid conflict

* grant execute managed task privilege to proxy admin
  • Loading branch information
philerooski committed Feb 13, 2025
1 parent 890f1ac commit caeb547
Show file tree
Hide file tree
Showing 8 changed files with 119 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
-- Grant future ownership of object types which potentially need
-- internamespace privileges to proxy admin database role.
-- SYNAPSE
GRANT OWNERSHIP
ON FUTURE DYNAMIC TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN;

-- SYNAPSE_RAW
GRANT OWNERSHIP
ON FUTURE TASKS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN;
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
-- Grant future ownership of object types which potentially need
-- internamespace privileges to proxy admin database role.
-- SYNAPSE
GRANT OWNERSHIP
ON FUTURE DYNAMIC TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN;

-- SYNAPSE_RAW
GRANT OWNERSHIP
ON FUTURE TASKS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN;
10 changes: 10 additions & 0 deletions admin/grants.sql
Original file line number Diff line number Diff line change
Expand Up @@ -633,3 +633,13 @@ GRANT USAGE
GRANT SELECT, INSERT
ON TABLE METADATA.SCHEMACHANGE.CHANGE_HISTORY
TO ROLE SECURITYADMIN;

-- Allow the proxy admins to run serverless tasks
USE ROLE ACCOUNTADMIN;
GRANT EXECUTE MANAGED TASK
ON ACCOUNT
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN;
GRANT EXECUTE MANAGED TASK
ON ACCOUNT
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN;
USE ROLE SECURITYADMIN;
21 changes: 21 additions & 0 deletions admin/ownership_grants/V1.6.0__proxy_admin_role_dev.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
-- Grant the proxy admin database role ownership and usage
-- of the `*ALL_ADMIN` database roles.
GRANT OWNERSHIP
ON DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_ALL_ADMIN
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE_ALL_ADMIN
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN
COPY CURRENT GRANTS;

GRANT DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_ALL_ADMIN
TO ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN;
GRANT DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_ALL_ADMIN
TO ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN;
GRANT DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE_ALL_ADMIN
TO ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN;
21 changes: 21 additions & 0 deletions admin/ownership_grants/V1.6.1__proxy_admin_role_prod.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
-- Grant the proxy admin database role ownership and usage
-- of the `*ALL_ADMIN` database roles.
GRANT OWNERSHIP
ON DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN
COPY CURRENT GRANTS;
GRANT OWNERSHIP
ON DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE_ALL_ADMIN
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN
COPY CURRENT GRANTS;

GRANT DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_ALL_ADMIN
TO ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN;
GRANT DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_ALL_ADMIN
TO ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN;
GRANT DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE_ALL_ADMIN
TO ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN;
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-- Grant ownership of internamespace objects to proxy admin database role
-- SYNAPSE
GRANT OWNERSHIP
ON ALL DYNAMIC TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN
COPY CURRENT GRANTS;

-- SYNAPSE_RAW
GRANT OWNERSHIP
ON ALL TASKS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.ALL_ADMIN
COPY CURRENT GRANTS;
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-- Grant ownership of internamespace objects to proxy admin database role
-- SYNAPSE
GRANT OWNERSHIP
ON ALL DYNAMIC TABLES
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN
COPY CURRENT GRANTS;

-- SYNAPSE_RAW
GRANT OWNERSHIP
ON ALL TASKS
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.ALL_ADMIN
COPY CURRENT GRANTS;
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
USE DATABASE {{ database_name }}; --noqa: JJ01,PRS,TMP

-- Create proxy admin database role which will own the `*ALL_ADMIN` roles
CREATE OR REPLACE DATABASE ROLE ALL_ADMIN;

-- Grant ownership of the proxy admin database role to the database admin
GRANT OWNERSHIP
ON DATABASE ROLE ALL_ADMIN
TO ROLE {{ database_name }}_ADMIN; --noqa: JJ01,PRS,TMP

-- Grant proxy admin role to the database admin account role
GRANT DATABASE ROLE ALL_ADMIN
TO ROLE {{ database_name }}_ADMIN; --noqa: JJ01,PRS,TMP

0 comments on commit caeb547

Please sign in to comment.