From c320f5959980bb455e92e8e4188c060a53b2502f Mon Sep 17 00:00:00 2001 From: Chris Christiansen Date: Sat, 25 Jul 2026 04:13:16 +0000 Subject: [PATCH] docs: add automation and sentinel plan for gitea --- docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md | 90 +++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md b/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md index fd42bf9..0f4e6f4 100644 --- a/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md +++ b/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md @@ -102,6 +102,96 @@ GITEA_TOKEN: [ROTERT OG FJERNET] --- +### Rollen "automation" og sikkerhets-sentinel for Gitea + +Status per 2026-07-25: +- Gitea kjører på https://git.vauco.no med HTTPS og riktig ROOTURL. +- Offentlig registrering er stengt (DISABLE_REGISTRATION = true, ALLOW_ONLY_EXTERNAL_REGISTRATION = true, SHOW_REGISTRATION_BUTTON = false). +- To uautoriserte brukere (dev433f2c, dev1ba0ac) er deaktivert, deres tokens er slettet, og Gitea svarer fortsatt 200 OK lokalt. +- Ingen av stegene under er gjennomført ennå – de beskriver målbildet for neste iterasjon med lokale modeller og Gemini i VM. + +#### 1. Teknisk Gitea-bruker: `automation` + +Mål: +- Skille menneskelig admin (`chris`) fra automatiserte operasjoner. +- Sørge for at alle automatiske commits / API-kall identifiseres som `automation`, ikke `chris`. + +Plan: +- Opprett Gitea-bruker `automation` (ikke admin). +- Gi `automation` kun tilgang til de repoene automasjon skal jobbe med (f.eks. OSVauco). +- Bruk CLI/API fra Gitea-VM (Gemini i VM) til: + - Generere ett personal access token for `automation` med begrenset scope (primært repo-API / git). + - Skrive tokenet direkte til Google Cloud Secret Manager (f.eks. secret `gitea-automation-token`). + - Konfigurere Cloud Run / OPAX MCP til å lese tokenet via miljøvariabel (f.eks. `GITEA_TOKEN`). +- Roter og slett gamle tokens (spesielt tidligere GITEATOKEN som var eksponert i chat) via Gitea-API. +- Konfigurer git på Gitea-VM til å bruke `automation` (SSH-nøkkel eller HTTP-token) for push/pull. + +Viktig: +- `automation` skal ikke være admin. +- `chris` skal ikke dele token med automasjon. +- Token-verdier lagres kun i Secret Manager og miljøvariabler, ikke i repo eller logs. + +#### 2. Sentinel-rolle for lokale LLM-modeller (Gitea Security Sentinel) + +Mål: +- Ha en lettvekts, lokal LLM-modell (Emma / annen) som periodisk opptrer som "cyber security sentinel" for Gitea og tilhørende infrastruktur. +- Fange opp mønstre som ligner hendelsen 2026-07-11 (uautoriserte brukere, tokens laget rett etter signup, ukjente repo osv.). + +Rolle: `sentinel` (kun lesing + rapport) + +Input: +- Gitea-API: + - Liste over brukere, nye accounts, is_active-flagg. + - Liste over personal access tokens per bruker (antall, navn, opprettelsestid). + - Repo-oversikt (nye repo, eierskap). +- Logger: + - Gitea-app-logg (sign_up, generate-access-token, login, push). + - Nginx-logg (IP-mønstre mot /user/sign_up, /api/v1/users/*, etc.). + - journald for gitea.service. +- Konfig: + - app.ini (service, security, auth sections). + - Firewall-regler (gcloud output). + - Secret Manager metadata (f.eks. hvilke secrets som eksisterer, ikke verdiene). + +Oppførsel: +- Kjør periodisk (f.eks. hver time eller natt) fra Gitea-VM eller egen planlagt jobb. +- Analyser: + - Nye lokale brukere (ikke OAuth-baserte). + - Nye tokens, spesielt for ikke-kjente brukere. + - Nye repo opprettet av ukjente brukere. + - Uvanlige IP-er / volum på signups eller token-opprettelse. + - Endringer i app.ini som svekker sikkerhet (f.eks. åpnede registreringer, endrede auth-innstillinger). +- Produser en kort rapport i et eget repo, f.eks. `protocols/security/SENTINEL-REPORT-YYYY-MM-DD.md`: + - Oppsummer funn. + - Marker "OK" hvis ingen avvik, ellers beskriv konkrete avvik med tidsstempel. +- Foreta ingen direkte mutasjoner (ingen deaktivering, ingen token-sletting) uten eksplisitt instruks fra overordnet plan eller menneskelig godkjenning. + +Alarmsignaler (eksempler): +- Nye lokale brukere med is_active = 1 som ikke matcher forventede mønstre (navn / email). +- Tokens opprettet for brukere utenfor forventet sett (`chris`, `automation` m.fl.). +- Repo opprettet av ukjente brukere (som r6e08-tilfellet). +- app.ini endret slik at DISABLE_REGISTRATION går tilbake til false eller ALLOW_ONLY_EXTERNAL_REGISTRATION endres. +- Logger viser sign_up / generate-access-token mønstre fra samme IP som tidligere ble flagget. + +#### 3. Samspill mellom `automation`, `sentinel` og `chris` + +- `chris`: + - Fortsatt eneste Gitea-admin. + - Godkjenner større endringer, branch protection, og eventuelle "fix"-operasjoner som `sentinel` foreslår. +- `automation`: + - Utfører godkjente, tekniske endringer (token-rotasjon, oppdatering av Secret Manager, git push/pull). + - Opererer alltid gjennom CLI/API, ikke via web. +- `sentinel`: + - Kjører periodisk analyser, skriver rapporter og flagger avvik. + - Har kun lesetilgang (Gitea-API, logger, metadata), ikke skrive-/admin-tilgang. + +Målet: +- Gitea forblir "sannheten" for kode og sikkerhetslogg. +- Automatiserte aktører er tydelig skilt fra menneskelig admin. +- Lokale LLM-modeller brukes til kontinuerlig sikkerhetsobservasjon uten å få fri tilgang til å endre alt. + +--- + ## FASE 6.5 — OPPDATERT LOKAL LLM-STACK (2026-07-22) ### Bekreftet drift