Snowflake Resources
Rime manages your Snowflake account infrastructure through a visual interface. You configure databases, schemas, warehouses, roles, and grants in the UI, and Rime provisions them using Terraform internally. You never write or see HCL — Rime handles the full lifecycle from creation through modification to teardown.
All Snowflake resource changes go through the plan/apply workflow, so you can review what will change before anything is applied.
Connecting your Snowflake account
Before creating resources, connect Rime to your Snowflake account. Navigate to Project Settings > Snowflake Connection and provide:
- Account identifier — your Snowflake account locator (e.g.,
xy12345.ap-southeast-2) - Authentication method — password or key pair. Key pair authentication is recommended for production use
- Username — the Snowflake user Rime will authenticate as. This user must have the
ACCOUNTADMINrole or a custom role with equivalent privileges for resource provisioning
Rime encrypts all credentials at rest using AES-256-GCM. Credentials are never stored in plaintext.
Creating resources
To create a Snowflake resource, navigate to Infrastructure > Resources and select Add Resource. Choose a resource type from the list:
- Database
- Schema
- Warehouse
- Role
- Grant
Each resource type has its own configuration form. After filling in the required fields, select Save. The resource is added to your desired state but is not yet provisioned. To apply the change, go to Infrastructure > Changes and run a plan/apply cycle.
Databases
A database is the top-level container for your data in Snowflake. When creating a database, configure:
- Name — must be unique within your Snowflake account. Rime enforces uppercase naming to match Snowflake conventions
- Comment — an optional description that appears in Snowflake’s
SHOW DATABASESoutput - Data retention (days) — the Time Travel retention period, from 0 to 90 days. Defaults to 1. Higher values consume more storage but allow longer recovery windows
- Transient — if enabled, the database does not have a Fail-safe period, reducing storage costs at the expense of disaster recovery. Suitable for staging or ephemeral data
Recommended database layout
Most organisations start with three databases:
| Database | Purpose |
|---|---|
RAW | Landing zone for extracted data. Snowpipe loads data here. |
TRANSFORM | Staging, dimension, fact, and mart tables produced by dbt. |
ANALYTICS | Read-only views or clones exposed to analysts and BI tools. |
You can create additional databases for development or testing environments.
Schemas
A schema organises tables within a database. When creating a schema, configure:
- Database — the parent database (selected from your existing databases)
- Name — must be unique within the parent database
- Comment — optional description
- Managed access — if enabled, only the schema owner (and
ACCOUNTADMIN) can grant privileges on objects within the schema. This is recommended for production schemas that hold sensitive data
Rime automatically creates schemas for connectors and dbt models when you configure extraction sources and transformation projects.
Warehouses
A warehouse is a compute cluster that runs queries. Warehouse configuration has the most significant cost impact of any Snowflake resource.
Configuration options
| Option | Description | Default |
|---|---|---|
| Name | Warehouse identifier | Required |
| Size | Compute capacity: X-Small through 6X-Large. Each step up doubles compute and cost | X-Small |
| Auto-suspend (seconds) | Idle time before the warehouse suspends. Lower values reduce cost; higher values avoid cold-start latency | 300 |
| Auto-resume | Whether the warehouse starts automatically when a query arrives. Nearly always enabled | Yes |
| Min clusters | Minimum number of clusters for multi-cluster warehouses | 1 |
| Max clusters | Maximum number of clusters. Set higher than min to enable auto-scaling | 1 |
| Scaling policy | How quickly clusters scale. Standard adds clusters when queries queue. Economy waits longer to reduce cost | Standard |
| Comment | Optional description | — |
Sizing guidance
Start with X-Small for development and Small or Medium for production workloads. Monitor query performance in Rime’s monitoring dashboard and resize as needed. Increasing warehouse size is a non-disruptive change — Rime applies it through the normal change management workflow without downtime.
For workloads with variable concurrency (e.g., end-of-month reporting spikes), set max clusters higher than min clusters and use the Standard scaling policy. The Economy policy is better suited for cost-sensitive workloads that can tolerate longer queue times.
Recommended warehouse layout
| Warehouse | Purpose | Typical size |
|---|---|---|
LOADING_WH | Snowpipe ingestion and connector loads | X-Small |
TRANSFORM_WH | dbt model execution | Small to Medium |
ANALYTICS_WH | Analyst queries and BI tool connections | Medium |
ADMIN_WH | Rime administration tasks | X-Small |
Separating workloads into distinct warehouses prevents a heavy transformation job from blocking analyst queries, and allows independent sizing and cost attribution.
Roles
Rime manages Snowflake roles and their hierarchy. When creating a role, configure:
- Name — the role identifier
- Comment — optional description
- Parent role — the role that this new role is granted to. This establishes the role hierarchy: a parent role inherits all privileges of its children
Role hierarchy
Snowflake uses a hierarchical role model. A typical hierarchy managed through Rime looks like:
ACCOUNTADMIN└── SYSADMIN ├── LOADER_ROLE (used by connectors and Snowpipe) ├── TRANSFORMER_ROLE (used by dbt) └── ANALYST_ROLE (used by BI tools and analysts)Each child role has only the privileges it needs. The parent inherits those privileges, so SYSADMIN can access everything its children can, but ANALYST_ROLE cannot access LOADER_ROLE objects.
Rime enforces this hierarchy when you configure grants. You cannot grant privileges that would violate the hierarchy or create circular role references.
Grants
Grants control which roles can access which resources. Rather than running GRANT statements manually in Snowflake, you configure grants through the Rime UI.
To add a grant, navigate to the role detail page and select Add Grant. Choose:
- Privilege — the permission to grant (e.g.,
USAGE,SELECT,CREATE TABLE,ALL) - Resource type — what the privilege applies to (database, schema, warehouse, or table)
- Resource — the specific resource to grant access to
Common grant patterns:
| Role | Privilege | On | Resource |
|---|---|---|---|
LOADER_ROLE | USAGE | Database | RAW |
LOADER_ROLE | CREATE TABLE | Schema | RAW.PUBLIC |
TRANSFORMER_ROLE | SELECT | Database | RAW |
TRANSFORMER_ROLE | ALL | Database | TRANSFORM |
ANALYST_ROLE | USAGE | Warehouse | ANALYTICS_WH |
ANALYST_ROLE | SELECT | Database | ANALYTICS |
Rime tracks grants as part of your desired state. Adding or removing a grant produces a change that goes through the plan/apply workflow like any other infrastructure modification.
How Rime provisions resources
When you configure a resource in the UI, Rime stores it as desired state in your project. When you apply changes:
- Rime generates Terraform configuration from your desired state
- Terraform compares the generated configuration against its state file (the actual state of your Snowflake account)
- Rime presents a change preview showing what will be created, modified, or destroyed
- On approval, Terraform applies the changes to your Snowflake account
- Rime updates the actual state to reflect what was provisioned
This two-phase workflow ensures you always review changes before they take effect. If something goes wrong, you can view the operation history and roll back. See Change Management for the full workflow.
Drift detection
Rime periodically compares the actual state of your Snowflake resources against the desired state you configured. If someone modifies a resource directly in Snowflake (outside Rime), the platform detects the drift and alerts you. See Drift Detection for details on how reconciliation works and your options for resolving discrepancies.
Next steps
- Set up AWS Resources for S3 buckets and Snowpipe integration
- Review the Change Management workflow before applying your first changes
- Configure Drift Detection alerts to catch out-of-band modifications