Säkerhet och datahantering

Hur vi skyddar din och dina användares data — i klartext, utan marknadsföringspuffning. Denna sida är avsedd för kommunala IT-säkerhetsansvariga och upphandlare.

Senast uppdaterad: 2026-06-12

Datacenter och kryptering

Plats

Skolkolls Cloud Functions, Hosting, Cloud Storage och Firestore är konfigurerade i Google Clouds region europe-west1 (Belgien, EU). Firebase Authentication omfattas av Google Cloud DPA/SCC/DPF. Region-status i prod verifieras före varje release med gcloud firestore databases describe och gcloud storage buckets describe.

Vissa underbiträden (Stripe, Anthropic, OpenAI, Google Analytics 4 och sociala inloggningsleverantörer) är USA-baserade och kan behandla data där. För dessa tillämpas EU:s standardavtalsklausuler (SCC) och respektive leverantörs DPA. Zoho PageSense laddas via EU-scriptet cdn-eu.pagesense.io och omfattas av Zoho DPA/SCC vid eventuell tredjelandsöverföring. Zoho Desk används för betalande kunders supportärenden via Zohos EU-hosting (zohohost.eu). Sentry körs i EU-regionen (Tyskland). Se tabellen Subprocessors nedan för fullständig översikt, och Dataskydd och underbiträden för operativa detaljer.

Kryptering i vila (encryption-at-rest)

Firestore och Cloud Storage krypterar all data i vila med Google-hanterade nycklar (AES-256) som standard. Vi använder inte kundhanterade krypteringsnycklar (CMEK) i dagsläget — det är en funktion vi utvärderar inför framtida Pro-tier-åtaganden.

Kryptering under transport (in-transit)

All trafik till och från Skolkoll sker via TLS 1.2 eller senare. Firebase Hosting aktiverar HSTS (HTTP Strict Transport Security) automatiskt, vilket förhindrar nedgradering till okrypterad HTTP. Certifikat hanteras automatiskt av Google och förnyas utan manuell åtgärd.

Secrets och autentisering

Secrets Management

Alla hemligheter — inklusive ADMIN_TOKEN, STRIPE_SECRET_KEY och STRIPE_WEBHOOK_SECRET — deklareras som Firebase Secret Manager-bindningar i Cloud Functions-koden (via secrets: […] i functions-options och defineSecret()). Inga hemligheter finns hårdkodade i källkod eller miljöfiler. Cloud Functions v2 läser värdena från Google Cloud Secret Manager vid runtime. Att aktiva secret-versioner finns för varje deklarerad hemlighet i prod verifieras med gcloud secrets versions list före release.

ID-token revocation

Firebase Authentication-token verifieras med checkRevoked: true på alla skyddade admin-endpoints. Det innebär att inloggning på en annan enhet, lösenordsbyte eller manuell token-revokering omedelbart ogiltigförklarar befintliga sessioner, utan att vänta på token-expiry (standardlivslängd: 1 timme).

Admin-åtkomst

Admin-token roteras manuellt och lagras aldrig i klientkod. Admin-endpoints kräver HTTP-headern X-Admin-Token med korrekt värde, kontrollerat server-side. Inga admin-operationer är tillgängliga från webbläsaren utan explicit autentisering.

Kommunlicens SSO

Kommunlicens använder Firebase Authentication som kontolager. Standardflödet är e-postbaserad inloggning och organisationsinbjudningar. För kommuner som kräver central identitetshantering kan SAML 2.0 eller OIDC aktiveras som Enterprise SSO-tillägg.

Se även SSO-status i upphandlingspaketet.

Audit logging

Känsliga administratörsoperationer loggas i Firestore-kollektionen auditLog. Kollektionen har deny-all Firestore Security Rules — ingen klient kan läsa eller skriva till den. Åtkomst sker uteslutande via Firebase Admin SDK (server-side), vilket eliminerar risken för manipulation via klientkod.

Varje audit-loggpost innehåller: tidsstämpel, operation, utförande identitet och påverkat objekt. Nya poster taggas med expiresAt för 2 års retention och raderas asynkront av Firestores TTL-mekanism när TTL-policyn är aktiv.

AI-chatbottens anrop loggas separat med pseudonymiserade poster (SHA-256-hash av IP, längd på fråga/svar, inte innehåll). Pseudonymisering sker vid skrivning; raderings­rutinen för dessa poster dokumenteras i Dataskydd och underbiträden.

Backup och återställning

Firestore-databasen är konfigurerad för Point-in-Time Recovery (PITR) via Google Cloud. PITR möjliggör tidpunkts­återställning inom det fönster som Firestore PITR tillhandahåller (upp till 7 dagar), vilket täcker oavsiktliga dataändringar och korruption under en incidentperiod. Faktiskt PITR-status och retention-fönster i prod verifieras med gcloud firestore databases describe före varje release. Återställning har inte testats i ett kontrollerat disaster-recovery-tillfälle — vi avser att genomföra en sådan test inför första kommunlicens-produktionsdriftsättning.

Subprocessors (underbiträden)

Nedanstående tjänster behandlar data på Skolkolls uppdrag. Alla underbiträden är bundna av antingen EU:s standardavtalsklausuler (SCC) eller befinner sig inom EU/EES. En fullständig GDPR-beskrivning finns i vår integritetspolicy.

Tjänst Roll / funktion Plats GDPR-grund
Firebase / Google Cloud Hosting, databas (Firestore), Cloud Functions, Secret Manager, Cloud Storage Cloud Functions, Hosting, Cloud Storage och Firestore: EU (europe-west1, Belgien). Firebase Authentication omfattas av Google Cloud DPA/SCC/DPF. Avtal (art. 6.1.b); DPA med Google ingår i Firebase-villkoren
Stripe Betalningshantering för Pro-tjänster; kortuppgifter hanteras aldrig av Skolkoll Irland (EU) primärt; vissa fraud-detection-funktioner kan involvera Stripe US under SCC Avtal (art. 6.1.b); Stripes DPA; SCC där det behövs
Google Analytics 4 (GA4) Anonym besöksstatistik; laddas bara efter samtycke USA Samtycke (art. 6.1.a); SCC; IP-anonymisering aktiverad
Zoho PageSense Webbanalys, A/B-testning och heatmaps/session recording på publika sidor; laddas bara efter samtycke EU-script via cdn-eu.pagesense.io; DPA/SCC vid eventuell tredjelandsöverföring Samtycke (art. 6.1.a); Zohos DPA/SCC
Zoho Desk Supportärenden för betalande kunder via support@skolkoll.se och supportportalen EU (support.skolkoll.se via Zohos EU-hosting, zohohost.eu); DPA/SCC vid eventuell tredjelandsöverföring Avtal (art. 6.1.b) och berättigat intresse (art. 6.1.f); Zohos DPA/SCC
Sentry Felövervakning; samlar in stacktraces, webbläsarinfo och IP-adress (anonymiseras kort efter mottagandet) EU (Tyskland, ingest.de.sentry.io) Berättigat intresse (art. 6.1.f); SCC vid support från USA-team
Anthropic (Claude API) AI-assistenten Kollen; bearbetar chatmeddelanden i realtid USA Samtycke (art. 6.1.a); SCC; Anthropics DPA; data bevaras max 30 dagar hos Anthropic
Resend E-postleverans för skolbevakning och transaktionsmail USA Berättigat intresse / samtycke (art. 6.1.f/a); SCC
Nominatim (OpenStreetMap) Geokodning för "Nära mig"-funktionen; ingen persondata lagras EU/EES Berättigat intresse (art. 6.1.f); ingen DPIA krävs
ResRobot (Trafiklab) Kollektivtrafikdata för pendlingsflik; koordinater proxas via Skolkolls server Sverige (EU) Berättigat intresse (art. 6.1.f)
JobTech (JobEd Connect) Yrkesmatchning för karriärfliken; utbildningstext skickas, ingen persondata Sverige (EU) Berättigat intresse (art. 6.1.f)
Skolverkets API Skoldata (öppen data); behandlar inte personuppgifter Sverige (EU) Ej tillämpligt (offentlig data)

Incidentrespons

Vi är ett litet team och vill vara ärliga om vår process: vi har inte ett formellt Security Operations Center (SOC) eller 24/7-beredskap. Vad vi har är en definierad process som vi följer konsekvent.

  1. Övervakning och detektion: Sentry fångar applikationsfel i realtid. Google Cloud-konsolen har alerting på ovanliga CPU-toppar, quota-överskridanden och auth-fel. Vi granskar Sentry-dashboard dagligen.
  2. Triage (inom 24 timmar): När en möjlig säkerhetsincident detekteras gör ansvarig utvecklare en initial klassificering: påverkar incidenten personuppgifter? Är tjänsten otillgänglig? Finns tecken på obehörig åtkomst?
  3. Inneslutning och mitigering: Beroende på incidenttyp vidtas omedelbara åtgärder — revokering av komprometterade tokens, spärr av misstänkta IP-adresser, eller tillfällig nedstängning av berörd funktion.
  4. Notifiering: Om incidenten bedöms innebära en personuppgiftsincident enligt GDPR art. 33 notifierar vi Integritetsskyddsmyndigheten (IMY) inom 72 timmar. Drabbade registrerade kontaktas om incidenten sannolikt medför hög risk för dem (GDPR art. 34). Notifiering sker via markus@skolkoll.se.
  5. Återställning: Vid databaspåverkan används Firestores PITR-funktion (upp till 7 dagars historik) för att rulla tillbaka berörda dokument. Statiska sidor byggs om från källdata.
  6. Post-incident review: Efter varje allvarlig incident dokumenterar vi rotorsak, åtgärder och förebyggande ändringar internt. Väsentliga säkerhetsförbättringar kommuniceras i releaseloggen.

Driftstatus och planerat underhåll publiceras på driftsstatussidan.

Compliance och certifieringar

Standard / krav Status Kommentar
GDPR Uppfyllt Fullständig integritetspolicy, samtyckesbanner, DPA tillgängligt på begäran, rätt att radera data
SOC 2 Type II Ej certifierat Vi följer SOC 2-principerna (säkerhet, tillgänglighet, konfidentialitet) men har inte genomgått en formell Type II-revision. Certifiering utvärderas inför storskalig kommunlansering.
ISO 27001 Ej certifierat ISO 27001-certifiering är inte genomförd. Vi arbetar strukturerat med informationssäkerhet men utan formell ISMS-implementation.
Extern penetrationstest Ej genomförd Ingen extern säkerhetsrevision av applikationen har genomförts under 2026. En extern pentest är planerad inför produktionslansering av public free-tier API.
PCI DSS Via Stripe Skolkoll hanterar inga kortuppgifter direkt. Stripe, som är PCI DSS Level 1-certifierat, hanterar all kortdata.

Responsible disclosure

Om du upptäcker en säkerhetsbrist i Skolkoll uppskattar vi att du rapporterar den till oss innan du publicerar den offentligt. Vi åtar oss att:

Vi erbjuder ingen ekonomisk belöning (bug bounty) i dagsläget, men vi tar alla rapporter på allvar och kommunicerar öppet om utredningens resultat.

Disclosure-policy: Vi tillämpar en 90-dagars koordinerad disclosure-period. Om en brist inte åtgärdats inom 90 dagar från din rapport förbehåller du dig rätten att publicera detaljerna. Vi kommunicerar proaktivt om vi behöver mer tid.

Kontakt: Skicka din rapport till security@skolkoll.se med ämnesraden "Security disclosure". Inkludera reproduktionssteg och bedömning av påverkan. Kryptera gärna med vår offentliga nyckel om du hanterar känslig information — kontakta oss så delar vi den.

Vänligen rapportera inte via GitHub Issues eller sociala medier.

DPA och avtalsdokumentation

Skolkoll fungerar som personuppgiftsbiträde för kommuner och skolor som ansluter sig till Pro-tjänsten. Vi tillhandahåller ett personuppgiftsbiträdesavtal (PuB-avtal / DPA) anpassat för kommunal upphandling.

Se även: Integritetspolicy · SLA och driftnivå · Kommersiell separation · Transparens