Security
What DataEgress never has access to
- Your production database. DataEgress only calls the HTTP endpoint you
expose via
defineDataset(...).handler()— it never holds database credentials, never opens a DB connection, never sees your schema. - Raw destination credentials at rest.
secretAccessKeyvalues are encrypted (AES-256-GCM) before being stored, and are never returned by any API response —GET/POST /api/destinationsalways mask them.
What DataEgress does have access to, and for how long
- Row data, transiently, while generating an export file. Rows pass through DataEgress's process to be written to CSV/Parquet and uploaded; they are not retained beyond the local temp file, which is deleted after a successful upload.
- The generated export file itself, briefly, for
signed_urldestinations (stored in DataEgress's own storage — local disk in dev, R2 in production if configured) or as a preview mirror alongsides3deliveries. There is no long-term retention policy implemented yet — see limitations.md.
Encryption
- Destination credentials: AES-256-GCM, key derived from
DATARELAY_ENCRYPTION_KEY. - Local signed download URLs: HMAC-SHA256 tokens (
DATARELAY_SIGNING_SECRET), time-limited (1 hour). - In transit: all destination uploads use HTTPS (AWS SDK default); the
fetchPageHTTP call to your dataset endpoint should be HTTPS in production (the SDK doesn't enforce this in V1 — see limitations.md).
Change both DATARELAY_ENCRYPTION_KEY and DATARELAY_SIGNING_SECRET to
real random values before deploying anywhere beyond local dev. The
defaults are intentionally insecure placeholders.
GDPR / data retention
Not yet implemented as product features:
- No automatic deletion of generated export files after N days.
- No per-destination data residency controls.
- No formal DPA/subprocessor documentation (this is a codebase, not a company with a legal entity yet).
If you're evaluating DataEgress for a compliance-sensitive use case today, treat V1 as infrastructure you operate yourself, not a vetted subprocessor.
SOC 2
Not pursued yet, deliberately — see the "why" in the product's own research: a SOC 2 Type II engagement costs real money and takes a 6–12 month observation period, and the customer-callback architecture (DataEgress never touches your database) meaningfully lowers what a security reviewer needs to approve without it. Revisit once a real deal is blocked on it.
Reporting a security issue
This is an early-stage internal project without a public disclosure program yet. File an issue in this repo, or contact the maintainer directly.