Add steam headless apps with security docs and verification guide
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# Security Model
|
||||
|
||||
Detta dokument beskriver säkerhetsmodellen för `steam-moonlight` och hur risker begränsas mellan default- och Moonlight-profil.
|
||||
|
||||
## Mål
|
||||
|
||||
- Hålla default-profilen (`steam`) så nära least-privilege som möjligt.
|
||||
- Göra Moonlight-profil (`steam-moonlight`) explicit opt-in med tydlig riskaccept.
|
||||
- Hålla state/data begränsad till `/DATA/AppData/$AppID/...`.
|
||||
|
||||
## Tillitsgränser
|
||||
|
||||
- Host OS och Docker daemon är högsta trust-zon.
|
||||
- Containern är lägre trust-zon.
|
||||
- Moonlight-klienter och LAN-trafik är extern yta.
|
||||
|
||||
## Threat Model
|
||||
|
||||
Primära hot:
|
||||
|
||||
- Kontoövertagande via svagt `SUNSHINE_PASS`.
|
||||
- Lateral movement via `network_mode: host` (Moonlight-profil).
|
||||
- Ökad impact vid containerkompromiss p.g.a. extra capabilities och device passthrough.
|
||||
- Dataförlust vid felaktig mount-path.
|
||||
|
||||
## Säkerhetskontroller
|
||||
|
||||
Gemensamt:
|
||||
|
||||
- Immutable image pin (`tag + digest`).
|
||||
- Ingen docker socket mount.
|
||||
- Ingen `privileged: true`.
|
||||
- Data paths begränsade till `/DATA/AppData/$AppID/...`.
|
||||
|
||||
Defaultprofil (`steam`):
|
||||
|
||||
- `cap_drop: ["ALL"]`
|
||||
- `no-new-privileges:true`
|
||||
- Ingen `host` network
|
||||
- Inga device mounts
|
||||
- Sunshine avstängd som default (`ENABLE_SUNSHINE=false`)
|
||||
|
||||
Moonlightprofil (`steam-moonlight`):
|
||||
|
||||
- Högriskkontroller isolerade till `profiles: ["moonlight"]`
|
||||
- `cap_drop: ["ALL"]` + minsta kända `cap_add`
|
||||
- Explicit device lista (`/dev/fuse`, `/dev/uinput`, `/dev/dri/*`)
|
||||
- `seccomp:unconfined` och `apparmor:unconfined` endast i Moonlight-profilen
|
||||
|
||||
## Fail-Closed Regler
|
||||
|
||||
- Moonlight ska inte startas om `SUNSHINE_PASS` är default eller tomt.
|
||||
- Moonlight ska inte startas om GPU-device mapping saknas eller är fel.
|
||||
- Vid osäkerhet, kör endast defaultprofilen (`steam`).
|
||||
|
||||
## Operativa krav
|
||||
|
||||
- Exponera inte Sunshine admin/UI mot internet.
|
||||
- Begränsa åtkomst till LAN/VPN och pålitliga klienter.
|
||||
- Rota image-pins kontrollerat och verifiera digest före uppdatering.
|
||||
- Följ checklistan i `MOONLIGHT-RUNTIME-CHECKLIST.md` före varje aktivering.
|
||||
|
||||
## Incidentrespons (minimum)
|
||||
|
||||
Vid misstänkt kompromiss:
|
||||
|
||||
1. Stoppa Moonlight-profilen direkt.
|
||||
2. Roterar `SUNSHINE_PASS` och övriga credentials.
|
||||
3. Granska hostens nätverksexponering och Docker logs.
|
||||
4. Byt image till känd god pin och starta om endast defaultprofil.
|
||||
Reference in New Issue
Block a user