Encryption
Rime encrypts all data both in transit and at rest. This page covers each layer of encryption, from browser connections through to data stored in Snowflake and S3.
In transit
All network connections to, from, and within Rime use TLS 1.3. There are no unencrypted communication paths.
| Connection | Protocol | Details |
|---|---|---|
| Browser to Rime | TLS 1.3 | All HTTP traffic is encrypted. HTTP requests are redirected to HTTPS. HSTS headers are set to prevent downgrade attacks |
| Rime to Snowflake | TLS 1.3 | Rime connects to Snowflake’s SQL API over HTTPS. Snowflake enforces TLS on all connections |
| Rime to S3 | TLS 1.3 | All S3 API calls (upload, download, list) use HTTPS endpoints |
| Rime to identity providers | TLS 1.3 | SAML and OIDC flows communicate with IdPs over HTTPS |
| Internal service communication | TLS 1.3 | Communication between Rime’s internal services (API, scheduler, connector runner) is encrypted |
TLS 1.2 and earlier versions are not accepted. Clients that do not support TLS 1.3 will not be able to connect.
At rest — Rime-managed data
Rime stores sensitive configuration data in its own PostgreSQL databases. Credentials and secrets are encrypted before storage using AES-256-GCM (Galois/Counter Mode).
What is encrypted
| Data | Storage | Encryption |
|---|---|---|
| Snowflake credentials (passwords, private keys) | PostgreSQL BYTEA column | AES-256-GCM |
| Connector credentials (database passwords, API keys) | PostgreSQL BYTEA column | AES-256-GCM |
| SSO client secrets | PostgreSQL BYTEA column | AES-256-GCM |
| Webhook secrets | PostgreSQL BYTEA column | AES-256-GCM |
Non-sensitive configuration (resource names, schedules, pipeline definitions) is stored as plaintext in PostgreSQL. This data does not contain secrets and does not require field-level encryption.
AES-256-GCM
Rime uses AES-256-GCM for symmetric encryption of stored credentials. AES-256-GCM provides both confidentiality and integrity:
- AES-256 — 256-bit key, considered secure against all known attacks including theoretical quantum computing attacks at current key sizes
- GCM (Galois/Counter Mode) — an authenticated encryption mode that produces a ciphertext and an authentication tag. Any tampering with the ciphertext is detected on decryption
- Nonce — a unique 96-bit nonce is generated for each encryption operation and prepended to the ciphertext. This ensures that encrypting the same value twice produces different ciphertext
Key management
Encryption keys are derived from a master secret configured during Rime deployment. The key derivation process:
- A master secret is set in the Rime deployment configuration (environment variable or secret store)
- The master secret is processed through a key derivation function to produce the 256-bit AES key
- The derived key is held in memory during the application’s lifetime and is never written to disk
Key rotation is supported by deploying a new master secret. When the key changes:
- Deploy the new master secret alongside the old one
- Rime re-encrypts all stored credentials using the new key
- Once re-encryption completes, the old master secret can be removed
Key rotation does not cause downtime. During the rotation window, Rime can decrypt with either key.
PostgreSQL encryption
In addition to field-level encryption of credentials, the PostgreSQL database itself should be configured with encryption at rest at the storage layer. When running on AWS, this means enabling encryption on the RDS instance or EBS volumes. Rime’s deployment configuration enables this by default.
At rest — Snowflake data
Data stored in your Snowflake account is encrypted by Snowflake’s built-in encryption:
- Standard Edition — AES-256 encryption with automatic key rotation
- Enterprise Edition — adds support for customer-managed keys (Tri-Secret Secure) and periodic re-encryption
- Business Critical Edition — adds support for AWS PrivateLink and Azure Private Link for private network connectivity
Rime does not manage Snowflake’s encryption keys. Snowflake handles key management, rotation, and re-encryption automatically. If your organisation requires customer-managed keys, configure Tri-Secret Secure directly in Snowflake.
At rest — S3 staged files
Parquet files staged in S3 during the extraction process are encrypted using S3 server-side encryption:
- SSE-S3 (default) — Amazon manages the encryption keys. Files are encrypted with AES-256 before being written to disk
- SSE-KMS — available if you configure a customer-managed KMS key in your AWS infrastructure settings. Provides audit trail of key usage through AWS CloudTrail
Staged Parquet files are temporary. After Snowpipe has loaded the data into Snowflake, the files are either archived or deleted according to your retention configuration. Even before deletion, the files are encrypted at rest.
To configure SSE-KMS:
- Navigate to Infrastructure > AWS Resources
- Select the S3 bucket used for staging
- Under Encryption, select SSE-KMS and provide the KMS key ARN
- Select Save and apply the infrastructure change
Certificate management
TLS certificates for the Rime web interface ({tenant}.rimedata.io) are managed automatically. Certificates are provisioned and renewed through automated certificate management (ACME/Let’s Encrypt or equivalent) with no manual intervention required.
If your organisation requires a custom domain (e.g., data.yourcompany.co.nz), provide the domain and a valid TLS certificate during onboarding. Rime will configure the custom domain with your certificate and notify you before the certificate expires.
Verifying encryption
To verify that encryption is active:
- In transit — check the browser’s address bar for the lock icon and TLS 1.3 in the certificate details. API responses include
Strict-Transport-Securityheaders - At rest (Rime) — credential fields are stored as encrypted BYTEA values in PostgreSQL. The audit log records all credential access events
- At rest (Snowflake) — run
SELECT SYSTEM$SHOW_ENCRYPTION()in Snowflake to verify encryption status - At rest (S3) — check the bucket’s default encryption configuration in the AWS console or through Rime’s infrastructure view
Next steps
- Review Network Security for the full network architecture
- Understand Tenant Isolation to see how encryption works alongside database separation
- Check Compliance for regulatory encryption requirements
- Set up Audit Logging to track credential access events