As a super user, execute the following SQL script:
-- Create Sidecar user and groupCREATE USER sidecar_user PASSWORD 'changehere' SYSLOG ACCESS UNRESTRICTED;ALTER USER sidecar_user SYSLOG ACCESS UNRESTRICTED;CREATE GROUP sidecar_group;ALTER GROUP sidecar_group ADD USER sidecar_user;-- Grant select to system tableGRANT SELECT ON svv_table_info TO GROUP sidecar_group;
SYSLOG permissions allow Sidecar to read query logs from all users.
SELECT permissions on SVV_TABLE_INFO allow Sidecar to read metadata about tables in your warehouse.
GRANT USAGE ON SCHEMA "schema" TO GROUP sidecar_group;GRANT SELECT ON ALL TABLES IN SCHEMA "schema" TO GROUP sidecar_group;ALTER DEFAULT PRIVILEGES IN SCHEMA "schema" GRANT SELECT ON TABLES TO GROUP sidecar_group;
Helper: generate grant statements for all schemas
SELECT 'GRANT USAGE ON SCHEMA "' || schema_name || '" TO GROUP sidecar_group;' || E'\n' || 'GRANT SELECT ON ALL TABLES IN SCHEMA "' || schema_name || '" TO GROUP sidecar_group;' || E'\n' || 'ALTER DEFAULT PRIVILEGES IN SCHEMA "' || schema_name || '" GRANT SELECT ON TABLES TO GROUP sidecar_group;' AS single_schema_statementFROM svv_all_schemasWHERE schema_name NOT IN ('information_schema', 'pg_catalog', 'pg_internal');
Default privileges set for ETL users ensure Sidecar maintains access to tables as ETL jobs run and create/update tables.
-- Create Sidecar user and groupCREATE USER sidecar_user PASSWORD 'Sidecar_redshift123' SYSLOG ACCESS UNRESTRICTED;ALTER USER sidecar_user SYSLOG ACCESS UNRESTRICTED;CREATE GROUP sidecar_group;ALTER GROUP sidecar_group ADD USER sidecar_user;-- Grant select to system tableGRANT SELECT ON svv_table_info TO GROUP sidecar_group;-- Create schema for SidecarCREATE SCHEMA IF NOT EXISTS sidecar AUTHORIZATION sidecar_user;GRANT USAGE, CREATE ON SCHEMA sidecar TO GROUP sidecar_group;-- Generate grant statements for all user schemasSELECT 'GRANT USAGE ON SCHEMA "' || schema_name || '" TO GROUP sidecar_group;' || E'\n' || 'GRANT SELECT ON ALL TABLES IN SCHEMA "' || schema_name || '" TO GROUP sidecar_group;' || E'\n' || 'ALTER DEFAULT PRIVILEGES IN SCHEMA "' || schema_name || '" GRANT SELECT ON TABLES TO GROUP sidecar_group;' AS single_schema_statementFROM svv_all_schemasWHERE schema_name NOT IN ('information_schema', 'pg_catalog', 'pg_internal');