security: public Deploy härten (Reverse-Proxy, GoTrue-Rate-Limit, RLS-Revoke)
Für die öffentlich erreichbare Instanz (dev.openbureau.ch): 1. Reverse-Proxy nur /auth/* durchreichen — /rest, /storage, /realtime raus. PostgREST /rest/v1/ gab die komplette DB-Schema-Beschreibung (OpenAPI) preis; der Browser nutzt Supabase nur fürs Login, Daten laufen über /api/*. (Caddy-Block in create-openbureau-lxc.sh + proxmox/README.md angepasst.) 2. GoTrue GOTRUE_RATE_LIMIT_TOKEN_REFRESH=100 — bremst Brute-Force aufs /token, das public direkt gegen GoTrue läuft (nicht übers Node-Rate-Limit). 3. db/schema.sql: revoke all from anon/authenticated auf posts/comments/forums/ threads; grants nur noch service_role. RLS bleibt so auch bei künftigen Policies dicht (Defense-in-Depth statt "RLS ohne Policy"). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -161,6 +161,14 @@ Eingebaute Schutzmaßnahmen (Stand: Härtungs-Pass):
|
||||
- **Non-root**: der CMS-Container läuft als `node` (uid 1000).
|
||||
- **Port-Binding** über `BIND_ADDR` (Standard `127.0.0.1`), DB nur auf localhost.
|
||||
- **CORS** am Kong-Gateway auf die eigene `SITE_URL`-Origin beschränkt (kein `*`).
|
||||
- **Reverse-Proxy nur `/auth/*`**: bei einem Domain-Deploy gehört nur das Login
|
||||
(GoTrue) public — `/rest`, `/storage`, `/realtime` nicht durchreichen (PostgREST
|
||||
`/rest/v1/` würde sonst die DB-Schema-Beschreibung preisgeben). Siehe Caddy-Block
|
||||
in [`../proxmox/README.md`](../proxmox/README.md).
|
||||
- **Login-Rate-Limit** an GoTrue (`GOTRUE_RATE_LIMIT_TOKEN_REFRESH`), weil das
|
||||
öffentliche Login direkt aufs `/token` geht (nicht übers Node-Limit).
|
||||
- **Keine Tabellenrechte für `anon`/`authenticated`** (`revoke` in `db/schema.sql`):
|
||||
RLS bleibt so auch bei künftigen Policies dicht; nur `service_role` (Node) liest.
|
||||
|
||||
### Migration eines bestehenden Containers
|
||||
|
||||
|
||||
Reference in New Issue
Block a user