Security & Compliance
The questions a security review tends to ask, with concrete answers. For anything not covered here — or for responsible disclosure — email root@semilayer.dev.
ℹ️
This page is the public-facing reference. SemiLayer is happy to provide a more detailed security questionnaire (CAIQ-style), a signed DPA, and a SOC 2 readiness statement on request as part of an enterprise evaluation.
Where your data lives
| Data class | What we store | Where |
|---|---|---|
| Your database rows | Nothing. Read on demand from your database via a bridge or runner; results are returned in the HTTP response and discarded. SemiLayer never persists customer data rows. | Your database — never copied into ours. |
| Vector embeddings + non-PII metadata | Embeddings derived from the fields you mark searchable, plus the metadata you choose to project into a lens. Logically isolated per environment. | Encrypted vector store in our US East region. Multi-region available on enterprise contract. |
| Source connection credentials | When you choose managed mode, SemiLayer stores your connection string encrypted with AES-256-GCM (envelope encryption — a per-record DEK wrapped by a master key). When you choose runner-local mode, SemiLayer stores nothing — credentials never cross your network boundary. | US East, encrypted at rest. |
| API keys | Hashed (SHA-256). The plaintext is shown exactly once on creation and is not recoverable from our side. | US East. |
| End-user identity (email, name) | Sourced from your IdP at first sign-in. No password storage on our side — authentication is delegated to OIDC. | US East. |
| Session state | Stateless platform JWTs in HttpOnly + Secure + SameSite cookies. No server-side session table. | Your browser. |
| Audit log | Every privileged operation across the platform — actor, source IP, target, outcome, timestamp. | US East. |
| Application logs | Identifiers and correlation IDs only. PII-free by policy — we do not log user-supplied query content. | Managed log aggregation, default 30-day retention. |
| Backups | Daily automated backups + 7-day point-in-time recovery for the platform database. | US East. |
Cryptography
| Layer | Primitive | Standard |
|---|---|---|
| Customer source credentials at rest | AES-256-GCM with envelope encryption (per-record DEK, randomly generated 96-bit IV per encryption, 128-bit auth tag) | NIST SP 800-38D |
| Platform database at rest | Provider-managed AES-256 (customer-managed keys / HSM-backed keys available on enterprise contract) | FIPS 140-2 Level 1 module |
| Object storage at rest | Provider-managed AES-256 | FIPS 140-2 Level 1 module |
| Secrets management | Provider-managed AES-256-GCM, IAM-gated, version-bound | NIST SP 800-38D |
| All public TLS endpoints | TLS 1.3 (TLS 1.2 minimum), provider-managed certificates, HSTS-eligible | RFC 8446 |
| Internal service traffic | TLS 1.3 over a private cloud backbone. Database connections happen on private IPs only — no public database endpoint exists. | RFC 1918 |
| Runner ↔ gateway WebSocket | TLS 1.3 + bearer token; runner validates the gateway certificate before sending the token | RFC 8446, RFC 6455 |
| API key hashing | SHA-256 with a per-token-class pepper for runner tokens | FIPS 180-4 |
Identity and access
- Authentication. Single sign-on via OIDC (RFC 6749, RFC 8414 discovery, RFC 7519 JWTs). The SaaS plan uses a SOC 2 Type 2 audited IdP; enterprise tenants point at any compliant OIDC provider — Okta, Azure AD, Keycloak, Cognito, Ping, etc. There is no provider-specific SDK in the frontends; swapping IdPs is a configuration change. The SaaS IdP name is disclosed in the DPA on request.
- End-user identity flow-through. When an application embeds SemiLayer queries on behalf of a logged-in end user, the end-user JWT is forwarded to SemiLayer over an
X-User-Tokenheader (REST) oruserTokenparameter (WebSocket) and validated against the application's own JWKS (RFC 7517). Lens-level access rules then evaluate against those validated claims server-side. - Authorization. Role-based access control across an Organization → Project → Environment hierarchy. Roles: Owner, Admin, Developer, Viewer. Lens-level access is gated by declarative rules per operation (
query,search,similar,stream). - API key types. Four key prefixes, all SHA-256 hashed at rest:
sk_…— service key, server-to-server, full read of the environment.pk_…— public key, browser-safe, requires lens-level rules to permit the operation.ik_…— ingest key, write-only via the ingest webhook.rk_…— runner key, used only by the runner-to-gateway WebSocket.
- Tenant isolation. Strict environment-scoped queries on every read path. Vector indexes are isolated per environment at the storage layer, so isolation is enforced below the application — not by query-time filtering.
Network posture
- No inbound to your infrastructure. SemiLayer never opens a connection toward your database. There are exactly two read paths:
- Direct (managed-source path). SemiLayer connects outbound to your database from a small set of static egress IPs that we publish at semilayer.dev/ips. You allowlist those IPs in your firewall.
- Runner (airgap path). A small process you run inside your network maintains an outbound
wss://connection torunner.semilayer.com. SemiLayer dispatches jobs over the open socket; the runner does the local database connection. Zero inbound to your network. In runner-local credentials mode, SemiLayer never even sees the URL.
- No public database endpoint. The platform database has a private IP only (RFC 1918 range) reachable through private VPC peering. There is no public path into the platform DB — even from our own laptops.
- WebSocket gateway authentication. The runner gateway requires a valid
rk_runner token before completing the WebSocket handshake; internal dispatch from the SemiLayer service is gated by a separate shared bearer rotated at the platform level.
Email security
- SPF, DKIM, and DMARC records are published on
semilayer.comandsemilayer.dev. - DMARC policy is
p=quarantinewith aggregate reports collected. - DKIM keys follow RFC 6376, including the multi-segment TXT encoding for keys longer than 255 characters.
- No SMTP AUTH endpoint is exposed to the public internet. SaaS outbound mail is API-gated through a SOC 2 Type 2 certified provider; enterprise deployments support BYO SMTP via configuration.
Audit and observability
- Audit log. Every privileged platform-admin action is recorded with actor user, source IP, target, outcome, and timestamp. The same surface is queryable for support investigations and exportable on request.
- Operational logs. Identifiers + correlation IDs only — no user-supplied query content is logged. Default retention is 30 days; configurable for enterprise.
- Health and uptime. Operational status is shared on request during enterprise evaluations and during active incidents. A self-serve public status page is on the roadmap.
Token and credential lifecycle
| Credential | TTL | Revocation |
|---|---|---|
| Platform JWT (access) | 15 minutes | Logout clears the cookie; the refresh token is the source of truth for re-issue. |
| Platform JWT (refresh) | 7 days, single-use rotation | Logout, leaving an org, or a role change re-issues. |
sk_ / pk_ / ik_ API keys | None | Instant via Console or CLI delete. |
rk_ runner key | None | Effective at the next runner heartbeat (~25 seconds). |
| Internal service-to-service tokens | None (operational rotation) | Rotated via the platform secret store. |
| Source-credential encryption master key | None (operational rotation) | Rotation requires re-encrypting stored source configurations — managed via internal tooling on enterprise contracts. |
Backups, durability, and disaster recovery
- Recovery point objective (RPO): ≤ 5 minutes (point-in-time recovery against the platform database).
- Recovery time objective (RTO): ≤ 1 hour for the SaaS multi-tenant deployment.
- Backup retention: 7 days for automated daily backups + PITR. Longer retention available on enterprise contracts.
- Region: Active deployment lives in our US East region. Data residency and active-active multi-region are available on enterprise contracts.
Compliance posture
- SOC 2 Type 2 audit trajectory in Year 1; readiness assessment available on request.
- GDPR compliant by design: data residency selectable in enterprise contracts; data-subject deletion cascades through projects, environments, lenses, sources, keys, and embeddings within the request and out of backups within the PITR retention window.
- Customer data export is available in declarative form via
semilayer export config. Vector-data portability is on the Year-1 roadmap.
Subprocessors
| Subprocessor | Purpose | Compliance |
|---|---|---|
| Google Cloud Platform | Compute, storage, database, KMS, networking | SOC 1/2/3, ISO 27001/27017/27018, HIPAA, GDPR |
| OIDC identity provider | Single sign-on for SaaS users. SOC 2 Type 2 audited. Replaceable with any compliant OIDC provider on enterprise. The provider name is disclosed in the DPA on request. | Disclosed under DPA |
| Stripe | Billing and payment processing | PCI DSS Level 1, SOC 1/2 Type 2 |
| Transactional email provider | SaaS-plan service email delivery via a SOC 2 Type 2 audited provider; BYO SMTP available on enterprise. The provider name is disclosed in the DPA on request. | Disclosed under DPA |
| Embedding provider | A third-party text-embedding API generates vector representations for searchable fields on the SaaS plan. The provider is SOC 2 Type 2 audited, and per their policy API requests are not used to train their models. Embedding text is the only customer data sent to this subprocessor — no IDs, no rows beyond the configured fields. Replaceable with self-hosted alternatives (e.g. Ollama) or any compatible provider on enterprise. The full provider name is disclosed in the DPA on request. | Disclosed under DPA |
| GitHub | Source control, container registry, continuous integration | SOC 1/2 Type 2 |
Vulnerability disclosure
- Email: root@semilayer.dev. PGP key on request.
- Acknowledgement: within 2 business days.
- Resolution targets: 30 days for high severity, 90 days for medium.
- In scope: the SemiLayer platform, the public runner image, and any first-party package on npm.
- Out of scope: denial-of-service against shared infrastructure, social engineering, or third-party services (please report directly to the relevant subprocessor for those).
Working with us on a security review
The fastest path is usually:
- Email root@semilayer.dev and tell us what stage your evaluation is at — RFP, vendor onboarding, internal architecture review, etc.
- We send a CAIQ-style questionnaire pre-filled, the latest SOC 2 readiness statement, and a draft DPA.
- If your review needs anything not covered above, we schedule a 30-minute call with engineering to walk through it.
We aim to never be the long pole in a customer's procurement timeline.