Security
Security is built into every layer. As a module author you inherit guardrails — and there are a few you must uphold.
Authentication #
The core issues short-lived access JWTs and opaque refresh tokens in an HttpOnly cookie. Passwords are hashed with Argon2id. The module only sees the identity injected by the proxy (see lifecycle).
Seccomp sandbox #
The kubuno-seccomp crate forbids the execve call in modules (limited exceptions: files & media). Never reintroduce process spawning.
Data isolation #
- One PostgreSQL schema per module; no tables outside its scope.
- Never connect to the shared DB without explicit agreement; don't go hunting for credentials in config files.
Secrets & headers #
- Refresh tokens live in an
HttpOnlycookie; never put secrets in logs/JSON. - Security headers (HSTS, X-Frame-Options…);
/internal/*protected byX-Internal-Secret. - AES-256-GCM encryption for sensitive data.
Tip
All the code is free software (AGPLv3) and auditable. Transparency is part of the security model.