3a0be7261e
Verkstaden har redan sina avtal: Volvo-verkstaden har VIDA, VAG-verkstaden har erWin, den fria verkstaden har en fordonsdataleverantör. Kopplingarna konfigureras därför av kunden själv under Inställningar, med sina egna uppgifter — vi tillhandahåller ramen, inte kontot. Uppgifterna når aldrig webbläsaren. De krypteras med AES-256-GCM (INTEGRATION_NYCKEL) innan de skrivs till tabellen integrationer, och API:t returnerar hemliga fält maskerade. Alla uppslag görs av servern. Saknas krypteringsnyckeln sparas ingenting alls — 503 och en förklaring i gränssnittet i stället för klartext i databasen. Endast systemadministratören hanterar uppgifterna; kopplingarna är organisationsknutna som all annan ärendedata. Leverantörer är data, inte kod: URL-mall, autentiseringstyp (bearer/header/basic/query) och svarsmappning beskrivs i services/plattform/integrationer.json, utbytbar via ConfigMap (INTEGRATIONER_FIL). Nya märken läggs till utan att appen byggs om. Varje uppslag skriver senast_testad och senaste_status på kopplingen, så ett utgånget abonnemang syns i inställningarna i stället för att ge tysta tomma svar. Två latenta krascher hittade av klicktestet och åtgärdade: TextFalt och UNDANTAGSORSAKER användes utan import. vite build typkontrollerar inte, så de passerade bygget — därav nya npm-skriptet typkontroll, nu del av verifieringen. Verifierat: 80 vitest-tester, typkontroll, eslint, OpenAPI-validering, integrationstest mot riktig Postgres (rollstyrning, kryptering i vila, maskering, organisationsisolering, fail closed, borttagning) och klickgenomgång mot en körande plattform. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
25 lines
1001 B
YAML
25 lines
1001 B
YAML
# EXEMPEL — checka aldrig in riktiga värden. Skapa hellre direkt:
|
|
#
|
|
# kubectl -n guidad-felsokning create secret generic felsokning-hemligheter \
|
|
# --from-literal=anthropic-api-key='sk-ant-…' \
|
|
# --from-literal=jwt-secret="$(openssl rand -base64 48)" \
|
|
# --from-literal=postgres-losenord="$(openssl rand -base64 24)" \
|
|
# --from-literal=integration-nyckel="$(openssl rand -hex 32)"
|
|
#
|
|
# I produktion: använd extern secrets-hantering (External Secrets Operator,
|
|
# Sealed Secrets eller molnleverantörens secret manager).
|
|
apiVersion: v1
|
|
kind: Secret
|
|
metadata:
|
|
name: felsokning-hemligheter
|
|
namespace: guidad-felsokning
|
|
type: Opaque
|
|
stringData:
|
|
anthropic-api-key: ERSATT-MIG
|
|
jwt-secret: ERSATT-MIG
|
|
postgres-losenord: ERSATT-MIG
|
|
# 32 byte hex (openssl rand -hex 32) — krypterar kundernas
|
|
# märkesspecifika credentials i vila. Byts nyckeln måste kopplingarna
|
|
# sparas om; tjänsten visar då inga värden i stället för att gissa.
|
|
integration-nyckel: ERSATT-MIG
|