Security & deployment

Trust boundaries you can point at.

Security reviews stall on hand-waving. This page states exactly where Clarté's boundaries sit, which layer actually enforces access, and what stays under your control — so your security, identity, and infrastructure owners can verify rather than trust.

CREDENTIALS
Per-session, path-scoped, 15-minute maximum lifetime
POLICY FAILURE
New governed sessions fail closed — no silent fallback
DATA PATH
Your cluster, your object storage, no vendor in between

Deployment shape

Everything runs where you decide.

Clarté deploys as software into a Kubernetes environment you approve, with customer-controlled and European-cloud deployment paths. There is no vendor-hosted control plane: the operator, control plane, and query surface all run inside your cluster, next to your data.

Every component runs inside infrastructure you control. Identity comes from your OIDC issuer, data stays in your object storage, and the control plane brokers short-lived, path-scoped credentials for each session.
ANALYSTS · BI TOOLS · SERVICESpg-wire :5432 · http :8080 · flight :8815YOUR OIDCISSUERKeycloak · EntraOkta · Dex …YOUR OBJECT STORAGES3-compatibleParquet · DuckLake layoutobject-store IAMenforces the scopeYOUR KUBERNETES CLUSTEREUROPEAN CLOUD OR SELF-HOSTEDOPERATORreconciles Platform CRCLARTÉ UI · GATEWAYSQL · Catalog · Queries · Audit · AdminCONTROL PLANEpolicy compilercredential brokeraudit aggregatorQUERY SURFACEDuckDB + DuckLakeOPA policy sidecarone pod · vertical scalePOSTGRESQL CATALOGDuckLake metadata · audit · platform stateIDENTITYSCOPED CREDENTIALGOVERNED READSdenied prefix → 403METADATAAUDIT · STATE

Two layers of governance

Only one layer is the real boundary — and we say which.

Many stacks claim enforcement in the SQL layer while the storage layer quietly trusts everyone. Clarté is explicit about which layer holds.

LAYER 1 · THE REAL BOUNDARY

Scoped storage credentials

For every session, the credential broker mints a short-lived object-storage credential — 15-minute maximum lifetime — whose scope covers only the prefixes the session's roles permit. The engine holds nothing broader.

Enforcement happens in your object store's own access control: a read outside scope is refused by storage itself, not by a rewrite rule. Every enforcement claim is backed by a credential boundary, not a string check.

LAYER 2 · DEFENSE IN DEPTH

Governed views and a narrow SQL gate

Session-scoped views encode row filters, column masks, and dataset denials, so queries are shaped by policy before planning. A deliberately narrow safety gate rejects mutation, external reads, and rebinding attempts before the engine prepares the statement.

This layer improves precision and ergonomics — it is not the load-bearing wall, and we do not pretend otherwise.

FAIL-CLOSEDIf the policy engine is unavailable or a policy bundle fails verification, new governed sessions are refused. There is no fallback to an ungoverned mode.

Trust boundaries

Who is allowed to talk to what.

Four boundaries carry the platform. Each one is enforced with its own identity — nothing rides on ambient trust.

USER → PLATFORM

Every session authenticates with a token from your OIDC issuer. Roles come from claims you control.

QUERY SURFACE → CONTROL PLANE

The query surface authenticates with its own service identity and forwards the user's token — which the control plane independently revalidates before minting any credential.

PLATFORM → CATALOG

User sessions never touch PostgreSQL directly. Only the platform's service identity reads and writes catalog state.

PLATFORM → OBJECT STORE

Only the control plane can mint scoped credentials. Query pods hold no long-lived storage credentials at all.

04 / What you control directly

Your infrastructure, your keys, your rules.

Clarté is opinionated about the governed path and deliberately unopinionated about whose infrastructure it runs on.

Kubernetes environment
Any conformant cluster you approve — European cloud or self-hosted.
Object storage
Your S3-compatible provider and buckets. Analytical data never leaves them.
PostgreSQL
Run the bundled operator-managed path or bring a managed instance.
Identity
Your OIDC issuer, your claim-to-role mapping, your session lifetimes.
Policy
Row, column, and dataset rules authored in YAML, versioned like code.
Audit retention
Durable records with a 365-day default retention you can adjust.

Operational discipline

Recovery is rehearsed, not assumed.

The catalog is the most operationally important state in the platform, and it is treated that way from the first deployment.

Catalog HA

Primary plus synchronous replica — a committed transaction is never traded for write speed.

Point-in-time recovery

Continuous backup with WAL archiving to a separate bucket with separate credentials.

Weekly restore drill

An automated drill restores the catalog and validates it against object-store state. Failures page someone — recovery is rehearsed, not assumed.

Orphan sweeper

A scheduled job reconciles storage against the catalog so failed writes cannot accumulate silently.

Soft-delete window

Deleted data files are quarantined for 14 days (configurable) before hard deletion.

Audit records

Every execution attempt is recorded with identity, policy version, and credential ID — 365-day default retention.

In transit, external endpoints use TLS. At rest, data uses your object store's native encryption, with Parquet-level encryption available where per-file keys are required.

Next step

Put the architecture in front of your reviewers.

Bring your security, identity, and infrastructure owners. The evaluation walks the exact boundaries on this page against a workload you actually run.