Files
boc/intelligence/2026-06-15-infra-nedtaktning-rapport.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

287 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Infrastruktur-rapport — Nedtaktning 2026-06-14/15
**Utförd av:** Bernt (AI-agent)
**Datum:** 2026-06-14 00:00 2026-06-15 03:50 UTC
**Beslut av:** Erik Svensson
**Syfte:** Maximera ekonomisk återhållsamhet. Behåll endast quiXzoom-kritisk infrastruktur.
---
## FÖRE — Maj 2026
### Månadskostnad (maj, faktisk)
| Post | USD/mån |
|---|---|
| Savings Plans (Compute, 1år No Upfront) | 2 461 |
| EC2 Compute (utöver SP) | 922 |
| EC2 Other | 502 |
| ECS | 305 |
| MSK Kafka (3 brokers) | 340 |
| VPC/NAT Gateway | 228 |
| RDS (2 instanser) | 156 |
| CloudWatch | 138 |
| ELB (4 st) | 39 |
| ElastiCache | 63 |
| EKS | 74 |
| Bedrock | 63 |
| Kinesis | 23 |
| GuardDuty | 105 |
| Övrigt (Route53/S3/KMS/ECR/etc) | 60 |
| **TOTALT (exkl. skatt)** | **~5 420 USD/mån** |
### EC2-instanser (maj)
| Instans | Typ | Status | Funktion |
|---|---|---|---|
| server-2 (i-09b2204a52c2f33c9) | r8g.4xlarge | running | quiXzoom + AAMOS — ALLT |
| server-1 (i-0f5b6425bc415ce20) | r8g.4xlarge | stopped | Dubblett, amos + nginx + ollama |
| server-3-redundancy (i-0fc20ddba6bb17ead) | r6g.xlarge | running→stopped | Standby utan syfte |
| graviton-worker ×2 | r6g.2xlarge | running | ECS/K8s workers |
| karpenter-graviton ×2 | r7g.4xlarge | running | EKS Spot nodes |
| ci-runner (i-0638c0beae4ce4a1c) | t3.medium | stopped | CI |
| gpu-training ×2 | g5.2xlarge | stopped | ML-träning |
### Databaser (maj)
| DB | Klass | Multi-AZ | Kostnad |
|---|---|---|---|
| platform-identity-core | db.r6g.large | JA | ~83 USD/mån |
| platform-plane | db.t4g.micro | nej | ~12 USD/mån |
### Övrig infrastruktur (maj)
- **EKS cluster "wavult"** — Kong gateway, buildkit, k8s platform
- **MSK Kafka** — 3 brokers, ej använd av quiXzoom
- **ElastiCache** — Redis, okänt syfte
- **NAT Gateway** — privata subnets
- **4× Load Balancers** — 3 k8s-relaterade, 1 quiXzoom (aamos-prod-alb)
- **7× Elastic IPs** — 4 orphaned
- **Kinesis** — vyra-shot-events, 0 aktivitet
- **Tor-proxy** (tor-argus.service) — installerad 2026-06-08 som root, Kina-kringgång
- **GuardDuty** — alla features aktiverade inkl. Malware/EKS/RDS
---
## ÅTGÄRDER UTFÖRDA 2026-06-14/15
### Säkerhet
| Åtgärd | Detalj |
|---|---|
| **Tor raderat** | tor-argus.service stoppad/disabled, /usr/local/bin/tor, /etc/tor, /var/lib/tor borttagna |
| **GuardDuty bantad** | Disabled: EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_AUDIT_LOGS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS, RUNTIME_MONITORING. Kvar: CLOUD_TRAIL, DNS_LOGS, FLOW_LOGS, S3_DATA_EVENTS |
### AWS-resurser borttagna
| Resurs | Besparing |
|---|---|
| ALB aamos-prod-alb (+ listeners + target group) | 21 USD/mån |
| RDS platform-identity-core | 12 USD/mån |
| RDS platform-plane | 12 USD/mån |
| Kinesis vyra-shot-events | 23 USD/mån |
| server-1 terminerad (EIP releasad) | 4 USD/mån |
| 3× orphaned EIPs (försvann med ALB) | 11 USD/mån |
| GuardDuty features bantade | 90 USD/mån |
*Tidigare nedtaktat (före denna session): EKS, MSK, ECS, ElastiCache, NAT Gateway, graviton-workers, server-3*
### Databasmigrering RDS → Lokal Postgres
| Steg | Detalj |
|---|---|
| Postgres 16 installerad | `dnf install postgresql16-server`, initierad, systemd-enable |
| Databaser skapade | `amos` (714 tabeller), `wavult_identity` (734 tabeller) |
| Dump från RDS | pg_dump med SSL: amos 258 MB, wavult_identity 598 MB |
| Restore lokalt | pg_restore -j 4, warnings normala (extensions/sequences) |
| pg_hba konfigurerad | scram-sha-256 på localhost |
| pgbouncer switchad | Pekar nu mot 127.0.0.1:5432 istället för RDS |
| .env uppdaterad | DATABASE_URL, AMOS_DB_URL, SUPABASE_DB_URL → 127.0.0.1 |
| .env backup | /opt/amos/.env.bak-rds-20260614-* |
| RDS deletion protection av | `modify-db-instance --no-deletion-protection` |
| RDS raderade | `delete-db-instance --skip-final-snapshot` |
---
## EFTER — Juni 2026
### Kvarvarande infrastruktur
| Resurs | Detalj |
|---|---|
| **server-2** (i-09b2204a52c2f33c9) | r8g.4xlarge, running, 16.170.83.169 |
| **Postgres 16 (lokal)** | /var/lib/pgsql/data, databaser: amos + wavult_identity |
| **pgbouncer** | 127.0.0.1:6432 → lokal Postgres |
| **NATS JetStream** | Lokal message bus |
| **nginx** | Reverse proxy, Let's Encrypt SSL |
| **aamos-prod-tg / ALB** | BORTTAGEN — DNS pekar direkt på 16.170.83.169 |
| **GuardDuty** | Aktiv, bantad kärna (CloudTrail + DNS + FlowLogs) |
| **Route53** | aamos.systems zon, alla A-records → 16.170.83.169 |
| **S3** | quiXzoom-buckets + platform-backups |
| **ECR** | Container images |
| **Savings Plans** | 3.418 USD/tim, löper t.o.m. 2027-04-30 |
### Stoppade instanser (kostar ingenting)
| Instans | Typ | Syfte |
|---|---|---|
| server-3-redundancy | r6g.xlarge | Standby (definieras senare) |
| ci-runner | t3.medium | CI/CD |
| gpu-training | g5.2xlarge | ML-träning (ALETHEIA/HEPHAISTOS) |
| ouroboros-gpu-training | g5.2xlarge | ML-träning backup |
### Tjänster på server-2 (aktiva)
```
amos-core.service active (port 3100)
quixzoom-api.service active (port 3209)
aamos-quixzoom-engine.service active (Rust)
aamos-ledger.service active
aamos-billing-engine.service active
aamos-api-gateway.service active
postgresql.service active (port 5432, lokal)
pgbouncer.service active (port 6432)
nats-server.service active
nginx.service active
openclaw-gateway.service active
clickhouse.service active (Docker)
```
### Ny månadskostnad (estimerad)
| Post | USD/mån |
|---|---|
| Savings Plans (fast, ej påverkbar) | 2 461 |
| GuardDuty (kärna) | ~10 |
| Route53 | ~5 |
| S3 | ~5 |
| CloudWatch | ~5 |
| ECR | ~2 |
| Secrets Manager | ~2 |
| KMS | ~2 |
| **TOTALT** | **~2 492 USD/mån** |
**Besparing vs maj: 2 928 USD/mån (54%)**
---
## ÅTERSKAPNINGSGUIDE — Framtida behov
### När quiXzoom växer och behöver mer compute
**SP täcker 3.418 USD/tim.** r8g.4xlarge = ~1.00 USD/tim.
Du har headroom för **ytterligare ~2.4 USD/tim** compute täckt av SP utan extra kostnad.
Det motsvarar: 2× r8g.2xlarge (0.50/tim styck) ELLER 1× r8g.8xlarge (2.01/tim).
```bash
# Starta server-3 (r6g.xlarge, stopped, redo direkt)
aws ec2 start-instances --instance-ids i-0fc20ddba6bb17ead
# Starta ci-runner (t3.medium, för CI/CD-behov)
aws ec2 start-instances --instance-ids i-0638c0beae4ce4a1c
```
### När ML-träning behövs (ALETHEIA/HEPHAISTOS)
```bash
# Starta gpu-training (g5.2xlarge, stopped — startar på sekunder)
aws ec2 start-instances --instance-ids i-04239ef03d26b218b
# eller ouroboros-gpu-training
aws ec2 start-instances --instance-ids i-0b96090f76c603b23
# VIKTIGT: Stoppa igen efter körning — g5.2xlarge kostar ~1.21 USD/tim
aws ec2 stop-instances --instance-ids i-04239ef03d26b218b
```
### När RDS-liknande managed DB behövs igen
```bash
# Skapa ny RDS t4g.micro (billigaste, ~12 USD/mån)
aws rds create-db-instance \
--db-instance-identifier <namn> \
--db-instance-class db.t4g.micro \
--engine postgres \
--engine-version 16 \
--master-username wavult_admin \
--master-user-password <lösen> \
--allocated-storage 20 \
--no-multi-az \
--no-publicly-accessible \
--region eu-north-1
# Dump från lokal Postgres till ny RDS:
pg_dump -h 127.0.0.1 -U wavult_admin -d amos -Fc -f /tmp/amos.pgc
pg_restore -h <rds-endpoint> -U wavult_admin -d amos /tmp/amos.pgc
```
### När Load Balancer behövs igen (multi-server setup)
```bash
# Skapa ny ALB
aws elbv2 create-load-balancer \
--name aamos-prod-alb \
--subnets subnet-XXXX subnet-YYYY \
--security-groups sg-XXXX \
--scheme internet-facing \
--type application
# Skapa target group mot server-2
aws elbv2 create-target-group \
--name aamos-prod-tg \
--protocol HTTPS \
--port 443 \
--vpc-id vpc-XXXX \
--target-type instance \
--health-check-path /health
# OBS: Utan ALB går trafik direkt via nginx på server-2.
# ALB behövs bara vid horisontell skalning (flera instanser).
```
### När MSK Kafka behövs (event streaming i skala)
```bash
# NATS JetStream räcker för quiXzoom-volymer.
# MSK motiveras när: >100k events/sek ELLER multi-region ELLER extern integration.
# Kostnad: ~340 USD/mån (3 brokers). Starta först när det är motiverat.
aws kafka create-cluster-v2 \
--cluster-name aamos-events \
--provisioned BrokerNodeGroupInfo={InstanceType=kafka.t3.small,...},NumberOfBrokerNodes=3
```
### Savings Plan — vad händer april 2027
SP löper ut **2027-04-30**. Från maj 2027:
- Kostnad för server-2 tillkommer: ~722 USD/mån
- Total kostnad utan SP: ~750800 USD/mån (server-2 + övrigt)
- **Beslut att ta mars 2027:** Köp ny SP (om compute-footprint motiverar) eller kör on-demand
```
Påminnelse att sätta: mars 2027 — utvärdera ny Savings Plan
Nuvarande SP-id: 77610c74-2f99-4ae5-a3c3-4019c08302b4
```
---
## SÄKERHETSNOTERINGAR
### GuardDuty findings kvar (ej åtgärdade)
- **S3 public anonymous access** på quiXzoom-buckets (quixzoom.de, .fr, .eu, etc) — HIGH 8.0
- Dessa är troligen avsiktliga static-site buckets. Verifiera att de inte exponerar känslig data.
- **CompromisedInstanceGroup** (9.0) — härstammar från Tor-trafiken som nu är borttagen.
- Archivera dessa findings i GuardDuty efter att du bekräftat att Tor är borttaget.
### Kvarstående secrets i .env
- .env på server-2 innehåller klartext-credentials för många tjänster
- Rekommendation: migrera till AWS Secrets Manager successivt
- Backup av .env finns i /opt/amos/.env.bak-rds-*
---
## TIDSLINJE
| Tid (UTC) | Åtgärd |
|---|---|
| 2026-06-14 00:52 | Erik beslutar om absolut ekonomisk återhållsamhet |
| 2026-06-14 05:30 | Tor-analys, GuardDuty CRITICAL 9.0 identifierat |
| 2026-06-14 05:45 | Tor raderat från server-2 |
| 2026-06-14 05:47 | GuardDuty bantad (90 USD/mån) |
| 2026-06-14 05:48 | Kinesis borttagen (23 USD/mån) |
| 2026-06-14 05:50 | ALB borttagen (21 USD/mån) |
| 2026-06-14 05:52 | server-1 terminerad, EIP releasad (4 USD/mån) |
| 2026-06-14 05:54 | Postgres 16 installerad på server-2 |
| 2026-06-14 05:59 | RDS-dump klar (amos 258 MB, identity 598 MB) |
| 2026-06-14 06:03 | Restore till lokal Postgres (714+734 tabeller) |
| 2026-06-14 06:05 | .env + pgbouncer switchad till localhost |
| 2026-06-14 06:06 | RDS deletion protection av, båda RDS raderade |
| 2026-06-15 03:50 | Verifiering — allt rent, rapport klar |