2.2 KiB
2.2 KiB
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
hostnetwork - 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ändacap_add- Explicit device lista (
/dev/fuse,/dev/uinput,/dev/dri/*) seccomp:unconfinedochapparmor:unconfinedendast 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.mdföre varje aktivering.
Incidentrespons (minimum)
Vid misstänkt kompromiss:
- Stoppa Moonlight-profilen direkt.
- Roterar
SUNSHINE_PASSoch övriga credentials. - Granska hostens nätverksexponering och Docker logs.
- Byt image till känd god pin och starta om endast defaultprofil.