Snowflake
Steps
1. Service account and permissions setup
-- =============================================================
-- Setup variables - update these values for your environment
-- =============================================================
SET mics_username = 'MICS_USER';
SET mics_default_warehouse = 'MICS_WAREHOUSE';
SET mics_database = '<database>';
SET mics_default_namespace = '<database.schema>';
SET mics_default_role = 'MICS_USER_ROLE';
-- =============================================================
-- Switch to admin role
-- =============================================================
USE ROLE ACCOUNTADMIN;
-- =============================================================
-- Provision resources: warehouse, role and service user
-- =============================================================
CREATE WAREHOUSE IF NOT EXISTS identifier($mics_default_warehouse);
CREATE ROLE IF NOT EXISTS identifier($mics_default_role);
CREATE USER IF NOT EXISTS identifier($mics_username)
TYPE = SERVICE
DEFAULT_WAREHOUSE = $mics_default_warehouse
DEFAULT_NAMESPACE = $mics_default_namespace
DEFAULT_ROLE = $mics_default_role;
-- =============================================================
-- Role assignments
-- =============================================================
GRANT ROLE identifier($mics_default_role) TO ROLE SYSADMIN;
GRANT ROLE identifier($mics_default_role) TO USER identifier($mics_username);
-- =============================================================
-- Warehouse access
-- =============================================================
GRANT USAGE ON WAREHOUSE identifier($mics_default_warehouse) TO ROLE identifier($mics_default_role);
-- =============================================================
-- Read-only access on the database, schemas, tables and views
-- (includes future objects to cover tables/views created later)
-- =============================================================
GRANT USAGE ON DATABASE identifier($mics_database) TO ROLE identifier($mics_default_role);
GRANT USAGE ON ALL SCHEMAS IN DATABASE identifier($mics_database) TO ROLE identifier($mics_default_role);
GRANT SELECT ON ALL TABLES IN DATABASE identifier($mics_database) TO ROLE identifier($mics_default_role);
GRANT SELECT ON ALL VIEWS IN DATABASE identifier($mics_database) TO ROLE identifier($mics_default_role);
GRANT SELECT ON FUTURE TABLES IN DATABASE identifier($mics_database) TO ROLE identifier($mics_default_role);
GRANT SELECT ON FUTURE VIEWS IN DATABASE identifier($mics_database) TO ROLE identifier($mics_default_role);2. Create dedicated schemas
3. Configure key-pair authentication
4. Edit a credentials file
Last updated
Was this helpful?