-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SNOW-200] Create analyst database roles #107
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
---- SYNAPSE_DATA_WAREHOUSE ---- | ||
-- SYNAPSE | ||
GRANT SELECT, REFERENCES | ||
ON FUTURE TABLES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_TABLE_READ; | ||
GRANT SELECT, MONITOR | ||
ON FUTURE DYNAMIC TABLES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_TABLE_READ; | ||
GRANT USAGE, READ | ||
ON FUTURE STAGES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_STAGE_READ; | ||
GRANT SELECT, REFERENCES | ||
ON FUTURE VIEWS | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_VIEW_READ; | ||
GRANT MONITOR | ||
ON FUTURE TASKS | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_TASK_READ; | ||
|
||
-- SYNAPSE_RAW | ||
GRANT SELECT, REFERENCES | ||
ON FUTURE TABLES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_TABLE_READ; | ||
GRANT USAGE, READ | ||
ON FUTURE STAGES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_STAGE_READ; | ||
GRANT SELECT | ||
ON FUTURE STREAMS | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_STREAM_READ; | ||
GRANT MONITOR | ||
ON FUTURE TASKS | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SYNAPSE_RAW_TASK_READ; | ||
|
||
-- SCHEMACHANGE | ||
GRANT SELECT, REFERENCES | ||
ON FUTURE TABLES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE.SCHEMACHANGE_TABLE_READ; | ||
|
||
---- SYNAPSE_DATA_WAREHOUSE_DEV ---- | ||
-- SYNAPSE | ||
GRANT SELECT, REFERENCES | ||
ON FUTURE TABLES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_TABLE_READ; | ||
GRANT SELECT, MONITOR | ||
ON FUTURE DYNAMIC TABLES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_TABLE_READ; | ||
GRANT USAGE, READ | ||
ON FUTURE STAGES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_STAGE_READ; | ||
GRANT SELECT, REFERENCES | ||
ON FUTURE VIEWS | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_VIEW_READ; | ||
GRANT MONITOR | ||
ON FUTURE TASKS | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_TASK_READ; | ||
|
||
-- SYNAPSE_RAW | ||
GRANT SELECT, REFERENCES | ||
ON FUTURE TABLES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_TABLE_READ; | ||
GRANT USAGE, READ | ||
ON FUTURE STAGES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_STAGE_READ; | ||
GRANT SELECT | ||
ON FUTURE STREAMS | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_STREAM_READ; | ||
GRANT MONITOR | ||
ON FUTURE TASKS | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SYNAPSE_RAW_TASK_READ; | ||
|
||
-- SCHEMACHANGE | ||
GRANT SELECT, REFERENCES | ||
ON FUTURE TABLES | ||
IN SCHEMA SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE | ||
TO DATABASE ROLE SYNAPSE_DATA_WAREHOUSE_DEV.SCHEMACHANGE_TABLE_READ; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
USE DATABASE {{ database_name }}; --noqa: JJ01,PRS,TMP | ||
|
||
-- Create roles which will aggregate the object-type-specific roles | ||
CREATE OR REPLACE DATABASE ROLE SYNAPSE_ALL_ANALYST; | ||
CREATE OR REPLACE DATABASE ROLE SYNAPSE_RAW_ALL_ANALYST; | ||
CREATE OR REPLACE DATABASE ROLE SCHEMACHANGE_ALL_ANALYST; | ||
|
||
-- Grant ownership of the analyst aggregate roles to their | ||
-- respective admin aggregate role | ||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SYNAPSE_ALL_ANALYST | ||
TO ROLE SYNAPSE_ALL_ADMIN; --noqa: JJ01,PRS,TMP | ||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SYNAPSE_RAW_ALL_ANALYST | ||
TO ROLE SYNAPSE_RAW_ALL_ADMIN; --noqa: JJ01,PRS,TMP | ||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SCHEMACHANGE_ALL_ANALYST | ||
TO ROLE SCHEMACHANGE_ALL_ADMIN; --noqa: JJ01,PRS,TMP | ||
|
||
-- Grant analyst aggregate roles to the database analyst account role | ||
GRANT DATABASE ROLE SYNAPSE_ALL_ANALYST | ||
TO ROLE {{ database_name }}_ANALYST; --noqa: JJ01,PRS,TMP | ||
GRANT DATABASE ROLE SYNAPSE_RAW_ALL_ANALYST | ||
TO ROLE {{ database_name }}_ANALYST; --noqa: JJ01,PRS,TMP | ||
GRANT DATABASE ROLE SCHEMACHANGE_ALL_ANALYST | ||
TO ROLE {{ database_name }}_ANALYST; --noqa: JJ01,PRS,TMP | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
|
||
-- Create object-type-specific roles, grant ownership of each to | ||
-- their respective admin aggregate role, and grant each to the | ||
-- respective analyst aggregate role | ||
-- SYNAPSE | ||
CREATE OR REPLACE DATABASE ROLE SYNAPSE_TABLE_READ; | ||
CREATE OR REPLACE DATABASE ROLE SYNAPSE_STAGE_READ; | ||
CREATE OR REPLACE DATABASE ROLE SYNAPSE_VIEW_READ; | ||
CREATE OR REPLACE DATABASE ROLE SYNAPSE_TASK_READ; | ||
|
||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SYNAPSE_TABLE_READ | ||
TO DATABASE ROLE SYNAPSE_ALL_ADMIN; | ||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SYNAPSE_STAGE_READ | ||
TO DATABASE ROLE SYNAPSE_ALL_ADMIN; | ||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SYNAPSE_VIEW_READ | ||
TO DATABASE ROLE SYNAPSE_ALL_ADMIN; | ||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SYNAPSE_TASK_READ | ||
TO DATABASE ROLE SYNAPSE_ALL_ADMIN; | ||
|
||
GRANT DATABASE ROLE SYNAPSE_TABLE_READ | ||
TO DATABASE ROLE SYNAPSE_ALL_ANALYST; | ||
GRANT DATABASE ROLE SYNAPSE_STAGE_READ | ||
TO DATABASE ROLE SYNAPSE_ALL_ANALYST; | ||
GRANT DATABASE ROLE SYNAPSE_VIEW_READ | ||
TO DATABASE ROLE SYNAPSE_ALL_ANALYST; | ||
GRANT DATABASE ROLE SYNAPSE_TASK_READ | ||
TO DATABASE ROLE SYNAPSE_ALL_ANALYST; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
-- SYNAPSE_RAW | ||
CREATE OR REPLACE DATABASE ROLE SYNAPSE_RAW_TABLE_READ; | ||
CREATE OR REPLACE DATABASE ROLE SYNAPSE_RAW_STAGE_READ; | ||
CREATE OR REPLACE DATABASE ROLE SYNAPSE_RAW_STREAM_READ; | ||
CREATE OR REPLACE DATABASE ROLE SYNAPSE_RAW_TASK_READ; | ||
|
||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SYNAPSE_RAW_TABLE_READ | ||
TO DATABASE ROLE SYNAPSE_RAW_ALL_ADMIN; | ||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SYNAPSE_RAW_STAGE_READ | ||
TO DATABASE ROLE SYNAPSE_RAW_ALL_ADMIN; | ||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SYNAPSE_RAW_STREAM_READ | ||
TO DATABASE ROLE SYNAPSE_RAW_ALL_ADMIN; | ||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SYNAPSE_RAW_TASK_READ | ||
TO DATABASE ROLE SYNAPSE_RAW_ALL_ADMIN; | ||
|
||
GRANT DATABASE ROLE SYNAPSE_RAW_TABLE_READ | ||
TO DATABASE ROLE SYNAPSE_RAW_ALL_ANALYST; | ||
GRANT DATABASE ROLE SYNAPSE_RAW_STAGE_READ | ||
TO DATABASE ROLE SYNAPSE_RAW_ALL_ANALYST; | ||
GRANT DATABASE ROLE SYNAPSE_RAW_STREAM_READ | ||
TO DATABASE ROLE SYNAPSE_RAW_ALL_ANALYST; | ||
GRANT DATABASE ROLE SYNAPSE_RAW_TASK_READ | ||
TO DATABASE ROLE SYNAPSE_RAW_ALL_ANALYST; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
-- SCHEMACHANGE | ||
CREATE OR REPLACE DATABASE ROLE SCHEMACHANGE_TABLE_READ; | ||
|
||
GRANT OWNERSHIP | ||
ON DATABASE ROLE SCHEMACHANGE_TABLE_READ | ||
TO DATABASE ROLE SCHEMACHANGE_ALL_ADMIN; | ||
|
||
GRANT DATABASE ROLE SCHEMACHANGE_TABLE_READ | ||
TO DATABASE ROLE SCHEMACHANGE_ALL_ANALYST; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The diagrams showing the transitions are super helpful and I think the final state should be included in documentation (once final review) so that people have an easier time when onboarding and learning about this. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I added the diagram here. Turns out I already had some verbiage which said that all objects, including database roles, ought to be owned by the appropriate |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Our initial state after #104 is merged. The diagrams are database-agnostic (dev/prod).
