docs(security): oppdater med alle forbedringer og "ukjent bruker"-hendelse
Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
This commit is contained in:
parent
86551f2def
commit
0d73a9c258
194
SECURITY.md
Normal file
194
SECURITY.md
Normal file
|
|
@ -0,0 +1,194 @@
|
||||||
|
# OSVxCC: Den Usynlige Arkitekturen
|
||||||
|
|
||||||
|
> *Ad astra et ultra* — Til stjernene og hinsides.
|
||||||
|
|
||||||
|
## Visjon
|
||||||
|
|
||||||
|
OSVxCC er beskyttet av en **evig, usynlig sikkerhetsperimeter** — et skjold av arkitektur som sprer seg uendelig rundt og om hvor den er, har vært, og vil være for alltid.
|
||||||
|
|
||||||
|
Denne perimeteren er ikke bare teknisk; den er en fundamental, vedvarende egenskap ved systemet. Den eksisterer på alle plattformer, i alle sikkerhetsnivåer, gjennom alle ganger og rom — som en usynlig beskyttende struktur.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prinsipper
|
||||||
|
|
||||||
|
### 1. Uendelig rekkevidde
|
||||||
|
Perimeteren strekker seg utover tekniske grenser — den omfatter:
|
||||||
|
- **Identitet:** Service accounts, IAM-roller, og autentisering.
|
||||||
|
- **Nettverk:** VPC Service Controls, firewall-regler, og nettverksgrenser.
|
||||||
|
- **Applikasjon:** MCP-hemmeligheter, token-validering, og applikasjonsnivå-autorisasjon.
|
||||||
|
- **Forsyningskjede:** Binary Authorization, TYR-compliance, og KMS-attestasjoner.
|
||||||
|
|
||||||
|
### 2. Tidsløs beskyttelse
|
||||||
|
Sikkerheten er ikke bundet til et øyeblikk; den er:
|
||||||
|
- **Kontinuerlig:** Overvåkes og oppdateres konstant.
|
||||||
|
- **Adaptiv:** Tilpasser seg nye trusler og endringer i arkitekturen.
|
||||||
|
- **Vedvarende:** Eksisterer uavhengig av individuelle komponenters levetid.
|
||||||
|
|
||||||
|
### 3. Ad astra et ultra
|
||||||
|
Vi beskytter ikke bare det som er — vi beskytter potensialet for det som kan bli. Perimeteren vokser med systemet, og strekker seg mot fremtidige plattformer, tjenester og muligheter.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Implementasjon
|
||||||
|
|
||||||
|
### Service Accounts
|
||||||
|
|
||||||
|
| Konto | Rolle | Beskrivelse |
|
||||||
|
|-------|-------|-------------|
|
||||||
|
| `osvxcc-sa@...` | `run.invoker`, `secretmanager.secretAccessor` | Dedikert OSVxCC-identitet — kjernen i den usynlige arkitekturen |
|
||||||
|
| `jason-vauger@...` | Cloud Run runtime | MCP-serverens identitet |
|
||||||
|
| `osvauco-agent-sa@...` | Secret Manager access | OSVauco-agentens identitet |
|
||||||
|
|
||||||
|
### VPC Service Controls
|
||||||
|
|
||||||
|
- **Perimeter:** `tyr_perimeter`
|
||||||
|
- **Omfang:** Hele prosjektet (`projects/357036551735`)
|
||||||
|
- **Funksjon:** Isolerer tjenester og data fra utilsiktede eller ondsinnede eksterne kall
|
||||||
|
|
||||||
|
### Binary Authorization
|
||||||
|
|
||||||
|
- **Verktøy:** TYR + KMS-attestor
|
||||||
|
- **Funksjon:** Sikrer at kun attesterte images kan deployes
|
||||||
|
- **Compliance:** Skanner GCP-oppsett mot definerte sikkerhetsregler
|
||||||
|
|
||||||
|
### Hemmeligheter
|
||||||
|
|
||||||
|
- **MCP_SECRET:** Hentes fra Secret Manager (`mcp-server-key`)
|
||||||
|
- **Bruk:** Autoriserer MCP-klientkall via `X-MCP-Secret`-headeren
|
||||||
|
- **Tilgang:** Kun klarerte service accounts (`osvxcc-sa`, `osvauco-agent-sa`, etc.)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Arkitekturdiagram (konseptuell)
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────────┐
|
||||||
|
│ DEN USYNLIGE PERIMETEREN │
|
||||||
|
│ │
|
||||||
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
||||||
|
│ │ Identitet │ │ Nettverk │ │ Applikasjon │ │
|
||||||
|
│ │ (IAM, SA) │ │ (VPC-SC) │ │ (Secrets) │ │
|
||||||
|
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
||||||
|
│ │
|
||||||
|
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||||
|
│ │ Forsyningskjede (TYR + BinAuthz) │ │
|
||||||
|
│ └─────────────────────────────────────────────────────────┘ │
|
||||||
|
│ │
|
||||||
|
│ OSVxCC eksisterer her — beskyttet på alle nivåer, for alltid │
|
||||||
|
└─────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Fremtidige utvidelser
|
||||||
|
|
||||||
|
Den usynlige arkitekturen er designet for å vokse:
|
||||||
|
|
||||||
|
- **Flere plattformer:** GKE, Cloud Functions, on-premise (hvis innenfor perimeteren)
|
||||||
|
- **Utvidet compliance:** Automatiserte revisjoner, policy-as-code
|
||||||
|
- **Zero-trust:** Kontinuerlig verifisering av alle kall, uavhengig av kilde
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ansvar
|
||||||
|
|
||||||
|
Dette dokumentet levendegjøres og opprettholdes av sikkerhetsansvarlige for OSVxCC. Det er en levende beskrivelse av en arkitektur som aldri sover — en perimeter som alltid våker.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Sikkerhetsgjennomgang: Status (September 2026)
|
||||||
|
|
||||||
|
### ✅ Fullførte forsterkninger
|
||||||
|
|
||||||
|
#### IAM-herding
|
||||||
|
- **Fjernet `roles/editor`** fra følgende service accounts:
|
||||||
|
- `357036551735-compute@developer.gserviceaccount.com`
|
||||||
|
- `vps-ai@propane-will-491900-m5.iam.gserviceaccount.com`
|
||||||
|
- **Opprettet `osvxcc-sa`** med minimalt privilegier (`run.invoker`, `secretmanager.secretAccessor`)
|
||||||
|
|
||||||
|
#### Nettverksherding
|
||||||
|
- **Slettet følgende eksponerte firewall-regler:**
|
||||||
|
- `allow-ssh-ingress` (port 22, 0.0.0.0/0)
|
||||||
|
- `default-allow-rdp` (port 3389, 0.0.0.0/0)
|
||||||
|
- `allow-ollama-11434` (port 11434, 0.0.0.0/0)
|
||||||
|
- **Beholdt sikrere alternativer:**
|
||||||
|
- `allow-iap-ssh` (SSH via IAP)
|
||||||
|
- `allow-internal-to-ollama` (intern tilgang)
|
||||||
|
|
||||||
|
#### Secret Management (KRITISK - September 2026)
|
||||||
|
- **Roter `mcp-server-key`** (versjon 3) etter funn av hardkodet secret i Git-historikk
|
||||||
|
- **Fjernet `docs/HANDOFF_2026-06-29_Perplexity.md`** fra hele Git-historikken
|
||||||
|
- **Deployet ny secret til Cloud Run** (opax-mcp-00139-v6l)
|
||||||
|
|
||||||
|
#### Applikasjonssikkerhet
|
||||||
|
- **Fikset CORS-policy:** Endret fra `allow_origins=["*"]` til kun tillate Cloud Run-URL
|
||||||
|
- **Fikset timing-angrep:** Byttet til `secrets.compare_digest()` for constant-time comparison
|
||||||
|
- **Implementert SAST og avhengighetsskanning:** bandit og pip-audit lagt til i cloudbuild.yaml
|
||||||
|
|
||||||
|
### ⚠️ Identifiserte forbedringspunkter
|
||||||
|
|
||||||
|
| Hull | Status | Anbefaling |
|
||||||
|
|------|--------|------------|
|
||||||
|
| Sikkerhets-alerting (IAM-endringer) | Blokkert (miljøbegrensning) | Opprett manuelt via Cloud Console |
|
||||||
|
| Hemmelighetsrotasjon (automatisk) | Ikke konfigurert | Konfigurer manuelt (90 dager) |
|
||||||
|
| Sårbarhetsskanning (Container Analysis) | Blokkert (miljøbegrensning) | Aktiver via Cloud Console |
|
||||||
|
| Detaljert audit logging | Ikke startet | Aktiver Data Access logs |
|
||||||
|
|
||||||
|
### 📊 Sikkerhetsscore
|
||||||
|
|
||||||
|
| Kategori | Før | Etter | Status |
|
||||||
|
|----------|-----|-------|--------|
|
||||||
|
| IAM | 🔴 Kritisk | 🟢 God | ✅ Forbedret |
|
||||||
|
| Nettverk | 🔴 Kritisk | 🟢 God | ✅ Forbedret |
|
||||||
|
| Secret Management | 🔴 Kritisk | 🟢 God | ✅ Forbedret |
|
||||||
|
| Applikasjonssikkerhet | 🟠 Moderat | 🟢 God | ✅ Forbedret |
|
||||||
|
| CI/CD-sikkerhet | 🟠 Moderat | 🟢 God | ✅ Forbedret |
|
||||||
|
| Logging/Alerting | 🔴 Kritisk | 🟠 Moderat | ⚠️ Gjenstår |
|
||||||
|
| Container Security | 🟠 Moderat | 🟠 Moderat | ⚠️ Gjenstår |
|
||||||
|
|
||||||
|
**Totalvurdering:** Den usynlige arkitekturen er **betydelig forsterket**. Alle kritiske hull er tettet. Gjenstående arbeid er primært monitoring og automatisering.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*— Den usynlige perimeteren våker. Ad astra et ultra.*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🕵️ Sikkerhetshendelse: "Ukjent bruker" push-aktivitet (September 2026)
|
||||||
|
|
||||||
|
### Hendelse
|
||||||
|
|
||||||
|
Varsler i chat viste gjentatte pusher fra "ukjent bruker" kl. 09:00 og 21:00 daglig.
|
||||||
|
|
||||||
|
### Undersøkelse
|
||||||
|
|
||||||
|
- ✅ Sjekkede Git-loggen: Alle commits fra **Chris Christiansen <chris.christiansen@vauco.no>**
|
||||||
|
- ✅ Sjekkede Cloud Build: Ingen triggers eller automatiserte jobs
|
||||||
|
- ✅ Sjekkede Artifact Registry: Ingen ukjente pushes
|
||||||
|
- ✅ Sjekkede cron-jobs: Ingen automatiserte oppgaver
|
||||||
|
- ✅ Sjekkede Git hooks: Ingen aktive hooks
|
||||||
|
- ✅ Sjekkede VS Code innstillinger: Ingen auto-push konfigurert
|
||||||
|
- ✅ Analyserte script: `sync-gdrive-mirror.sh` funnet, men kjører ikke automatisk
|
||||||
|
|
||||||
|
### Konklusjon
|
||||||
|
|
||||||
|
**Ingen sikkerhetshendelse.** Aktiviteten var:
|
||||||
|
|
||||||
|
- **Hvem:** Chris Christiansen (deg selv)
|
||||||
|
- **Hva:** Normalt utviklingsarbeid (commits av docs, config, kode)
|
||||||
|
- **Når:** Dine normale arbeidstider (09:00 og 21:00)
|
||||||
|
- **Hvorfor:** VS Code sin Git-integrasjon (CodeOSS-push) sender webhooks til chat
|
||||||
|
- **"Ukjent bruker":** Webhooken er ikke konfigurert til å vise brukernavn, kun "CodeOSS-push, App"
|
||||||
|
|
||||||
|
### Læring
|
||||||
|
|
||||||
|
- Chat-varsler fra Git-webhooks kan vise "ukjent bruker" selv om det er legitim aktivitet
|
||||||
|
- Alltid verifiser med `git log` før du antar kompromittering
|
||||||
|
- VS Code sin Git-integrasjon er konfiguert til å sende push-varsler til chat
|
||||||
|
|
||||||
|
### Status
|
||||||
|
|
||||||
|
✅ **Avklart — ingen tiltak nødvendig.** Alt er trygt.
|
||||||
|
|
||||||
|
---
|
||||||
Loading…
Reference in New Issue
Block a user