RIV Tekniska Anvisningar - REST
| RIV Tekniska Anvisningar - REST
Revision A ARK_0071 2025-03-14 |
Revisionshistorik | |||
Utgåva | Revision Datum | Beskrivning | Ändringarna gjorda av |
Rev A | 2025-03-14 | Fastställd revision A | Peter Hernfalk |
1. Inledning
1.1 Målgrupp
Målgrupp för vilka denna anvisning är de som är delaktiga i utvecklingen av REST-API:er för en digital tjänst samt för de som ska utveckla klientsystems integrationer med en digital tjänsts API:er.
1.2 Syfte
Syftet med denna anvisning är att komplettera och i vissa fall anpassa Diggs API-profil för att passa kontexten vård och omsorg. Anvisningen ska tillämpas när man tar fram egenutvecklade REST-baserade API:er.
Användning av en gemensam standard underlättar integrationer mot olika digitala tjänsters REST-API:er. Om olika tjänsterna följer samma REST-profil kan man återanvända både utvecklares erfarenhet och tidigare utvecklad integrationskod. Detta leder över tid till mer robusta, säkra och kostnadseffektiva integrationer.
Anvisningen fungera normerande för förvaltningsgemensamt REST-API:er som tas fram av Inera och avser att fungera vägledande för andras utveckling av API:er.
1.3 Tillgänglighet
Detta dokument är publicerat under licensen Creative Commons CC-BY-SA (http://creativecommons.org/licenses/by-sa/2.5/se/ ).
Det betyder att du fritt får kopiera, distribuera och skapa bearbetningar av anvisningarna under förutsättning att upphovsmannen Sveriges Kommuner och Regioner anges, men inte på ett sätt som antyder att de godkänt eller rekommenderar din användning av verket.
1.4 Förvaltning
Utveckling och förvaltning av RIV-TA och dess delar/dokument sker genom att förändringsbehov och/eller förslag skickas in till Inera via e-post till kundservice@inera.se. Ange "RIVTA: Anvisningens namn" i ämnesraden.
2. Begrepp
Begrepp | Beskrivning |
API | Förkortning för Application Programming Interface Ett API är ett tekniskt gränssnitt som används för informationsutbyte mellan två tekniska komponenter. |
API-klient | En teknisk komponent som en aktör använder för att anropa ett API. |
Digital tjänst | En teknisk komponent som exponerar ett eller flera API:er. |
REST | REST är en akronym för REpresentational State Transfer. REST är inte ett protokoll eller en standard, det är en arkitektonisk stil. |
3. Regler för utformning av API:er
Regel REST.01: Följ Diggs API-profil
Regel: Följ Diggs API-profil och beakta deras SKA- och BÖR-krav vid utformning av REST-API:er. Använd version 1.1.0 av API-profilen (se nedan) kompletterat med avsteg och tillägg enligt denna anvisning.
Motivering: genom att följa Diggs profil när detta är möjligt uppnås en ökad linjering av API:er inom Svensk offentlig förvaltning över tid. Detta kommer sannolikt att leda till ökad kostnadseffektivitet för etablering av samverkan och även en ökad digitaliseringstakt överlag.
För att Diggs API-regler ska passa kontexten svensk välfärd ges nedan ett antal regler som förtydligar, kompletterar, eller ersätter regler i Diggs API-profil.
Version 1.1.0 av API-profilen i pdf-format
Förtydligande om API-specifikation
Enligt Diggs regel DOK.17 BÖR specifikation av API:er göras i den senaste versionen av Open API-specifikationen.
För att användning av säkerhetsmekanismer som bygger på MTLS ska kunna uttryckas strukturerat med Open API så krävs version 3.1 eller senare av specifikationen.
Information om Open API: https://swagger.io/specification/
Om Diggs riktlinjer
Digg tillhandahåller information och riktlinjer via sin publika dokumentation.
API Playbook (https://dev.dataportal.se/api-playbook) och
REST API-profil (https://dev.dataportal.se/rest-api-profil)
Versioner av profilen finns på denna sida: https://dev.dataportal.se/rest-api-profil/om-rest-api-profilen
4. Avsteg från Diggs API-profil
Regel REST.02: Dokumentation av servicenivå
Regel: Ett API:s servicenivå SKA finnas tydligt beskrivet i en interoperabilitetsspecifikation.
Motivering: API-specifikationer kan tänkas återanvändas i flera olika tillämpningar och det är respektive tillämpning som kan avgöra vilka servicenivåer som behövs. Det innebär att servicenivån för samma API-specifikation kan skilja sig mellan tillämpningarna.
Regel REST.02 ersätter Diggs regel DOK.08: “Ett API:s servicenivå SKALL (DOK.08) finnas tydligt beskriven i dokumentationen.“.
Information om interoperabilitetsspecifikation: Interoperabilitetsspecifikation
5. Tillägg utöver Diggs API-profil
Regel REST.03: Identifierare för person eller organisation
Regel: En offentlig identifierare för person eller organisation SKA INTE användas som del av URL-path.
Förtydligande: Med offentlig identifierare för person eller organisation avses personnummer, samordningsnummer och organisationsnummer.
URL-path är den del av URL:en som innehåller elementen api, version, resurs och eventuell identifierare. Query-parametrar ingår inte i URL-path.
Se även regel REST.04
Motivering: identifierare i URL-path hamnar med stor sannolikhet i loggfiler, vilket innebär att information som kan identifiera personer riskerar att bli åtkomliga för andra än personer som har rätt att ta del av informationen. Detta regleras även av GDPR som säger att personuppgifter ska skyddas så att inte obehöriga får tillgång till dem.
Då det finns organisationer som består av en enda person (företagsformen enskild firma använder personens personnummer som organisationsnummer) så behöver organisationsidentifierare hanteras på samma sätt som identifierare för personer. Hur detta ska hanteras beskrivs i regel REST.04
Detta avsteg ersätter Diggs API-regel RES.02: “Primärnycklar eller personligt identifierbar information (personnummer, etc) BÖR INTE (RES.02) exponeras. Om detta är svårt att uppnå är det troligt att API:et behöver abstraheras ytterligare från den underliggande datakällan“
Regel REST.04: säkerhetsutformning av REST-API:er
Regel: Diggs säkerhetsavsnitt SKA följas och BÖR kompletteras med OWASP’s REST Security-regler
Komplettering: Diggs regel SÄK.11 säger att refreshtoken SKALL användas. Detta gäller för mänskliga användare. Beträffande kommunikation maskin-till-maskin så KAN refreshtoken användas. Anledningen till att det inte är ett BÖR- eller SKA-krav är att värdet inte är så stort vid maskin-till-maskin-kommunikation eftersom det inte finns en slutanvändare som störs av en förnyelseprocess.
Motivering: både Digg och OWASP tillhandahåller information som syftar till att öka säkerheten för REST-API:er. OWASP’s information syftar till att vara en hjälp att hantera de risker som beskrivs i OWASP Top 10.
OWASP:s rekommendationer ändras i takt med omvärlden, och för att våra rekommendationer ska hålla över tid bör denna anvisning hänvisa till de aktuella rekommendationerna.
Läsanvisning:
OWASP’s REST Security Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html
Regel REST.05: hantering av säkerhetsrisker vid implementation
Regel: vid implementation SKA man överväga riskerna som beskrivs i OWASP Top 10. Man BÖR överväga att använda de verktyg som rekommenderas av OWASP för identifiera och åtgärda risker.
Motivering: för att minimera kända risker i implementationen bör OWASP Top 10 beaktas och validering bör göras för att få kunskap om i vilken grad dessa risker är åtgärdade.
OWASP Top 10 har jämförts med Diggs API-profil för att hitta eventuella konflikter gällande säkerhetsrisker vid implementation. Inga konflikter har hittats i jämförelse mellan version 1.1.0 av Diggs API-profil och OWASP Top 10 vid jämförelse i februari 2024.
Läsanvisningar:
OWASP Top 10: https://owasp.org/www-project-top-ten/
OWASP säkerhetsverktyg: https://owasp.org/search/?searchString=top+10+tools
OWASP API-säkerhetsverktyg: https://owasp.org/www-community/api_security_tools