En sikker løsning begynner med et godt design! Mye av grunnlaget for å vurdere om en løsning er sikker, kommer fra designfasen hvor det må gjøres viktige avveininger mellom kost, nytte og risiko.
Artikklene du finner under temaet Designe på denne siden vil fokusere på designprosessen. Selv om denne kan inkludere mye mer enn vi har listet opp, dekker vi det viktigste i form av god dokumentasjon på det som skal bygges, viktige avklaringer og behovet for kontekst.
1 - Sikkerhetskrav
Hvordan kan en bygge sikkerhet i en løsning dersom en ikke har veldefinerte sikkerhetskrav?
Noen krav er implisitte, som eksempelvis bruk av HTTPS/TLS, mens andre vil være eksplisitte og definert av lovverk, kunde eller tredjepart. Dersom kunden ikke har noen spesifikke krav er det likevel viktig at leveranseteamet lager en kravliste slik at rammene for prosjektet er dokumentert.
De fleste prosjekter må forholde seg til ulike krav fra Bouvet, kunden og eksterne parter. Alle utviklingsteam må ha kontroll på hvilke krav som stilles til leveransen:
Fra Bouvet (der dette er aktuelt)
Fra kunden
Lovpålagte krav
Av lovpålagte krav kan en ha generelle krav eksempelvis knyttet til personvern, men mange bransjer opererer med mer spesifikke forskrifter som stiller andre krav som vil gjelde i tillegg.
I mange tilfeller er det klart både for Bouvet og kunde hva som gjelder, men det er viktig at teamet verifiserer dette før en begynner å utvikle løsningen, slik at kostbare og tidkrevende overraskelser kan unngås. Uavhengig av hva som er definert hvor, bør teamet uansett dokumentere hvilke krav en forholder seg til slik at dette er bevart for ettertiden.
Grunnleggende sikkerhetskrav
Dersom leveransen mangler andre krav, kan sjekklisten være til god hjelp. Denne dekker de store linjene, og de fleste punktene kan gjennomføres av teamet selv. Gjennom å bruke sjekklista får teamet et overblikk over tilstanden til leveransen - og mulige svakheter og sårbarheter.
Dersom denne ikke er nok, og teamet eller kunden ønsker noe mer omfattende kan OWASPs Application Verification Standard (ASVS) brukes. Denne er en mer dyptgående sjekkliste som tilbyr tre nivåer med testing:
Nivå 1: Black box - testing gjøres mot kjørende løsning
Nivå 2: Balansert - Punktene fra level 1, samt gjennomgang av elementer relatert til prosess, teknologi og implementasjon
Nivå 3: Dyptgående gjennomgang som inkluderer de forrige nivåene, samt en mer detaljert gjennomgang av oppsett, arkitektur og annet.
Sikkerhetskrav for AI-systemer
Dersom løsningen inneholder eller er avhengig av kunstig intelligens (KI), kreves tilleggskrav utover standard sikkerhetskrav. AI-systemer introduserer egne risikodimensjoner som må håndteres på kravnivå.
Sikkerhetskravene for AI-systemer bør dekke:
Sikkerhet: Hva er akseptabel oppførsel for modellen, og hvordan skal systemet respondere ved anomalier? Hvordan beskytter man systemet mot misbruk eller manipulering?
Personvern og databruk: Hvilke data bruker AI-systemet for trening eller inferens? Hvordan håndteres persondata, og hvordan sikres det at systemet ikke brukes til uintendert formål?
Overvåking og misbruk: Hvordan skal systemet overvåkes for unormal atferd? Hva er de akseptable bruksområdene, og hvordan avdekkes misbruk?
Nettverk er en grunnleggende komponent i alt vi lager, og det er viktig med en grunnleggende forståelse for hvordan dette fungerer og hvordan det kan utnyttes av andre.
Riktig nettverkskonfigurasjon er viktig i sky, hybrid og on-prem. Denne siden er ment som et kort oppslag for sikker nettverkspraksis i prosjektarbeid.
Zero trust arkitektur
Zero trust innebærer at man ikke stoler blindt på intern eller ekstern trafikk. Bruk prinsippet som standard: verifiser eksplisitt, gi minst mulig tilgang, og anta kompromittering.
Minimumsoversikt
Viktig
Ha kontroll på hvilke IP-adresser og porter du eksponerer, og hvilke tjenester som lytter på portene. Undersøk brannmurregler, se i logger og skann
egne systemer med nmap.
Hold en oppdatert oversikt over:
eksponerte IP-adresser, porter og protokoller
hvem som kan nå hvilke tjenester
hvorfor eksponeringen er nødvendig (forretningsbehov)
hvilke regler som er midlertidige og når de skal fjernes
Skanning av nettverk
Skann jevnlig for å bekrefte faktisk eksponering. nmap er et etablert FOSS-verktøy for å oppdage åpne porter og tjenester.
Advarsel
Bruk av skannerverktøy som nmap skal alltid avklares med eiere av infrastruktur og nettverk. Dersom du sitter på
et Bouvet-kontor og skanner Azure-miljøet til en kunde, kan du lett trigge alarmer hos både Bouvet og kunden, samt ISP.
Isolasjon av tjenester
Viktig
Bruk brannmur til å begrense trafikk innad i systemer og mellom systemer og Internett. Bruk allowlist hvis mulig. Filtrer trafikk i applikasjonslaget hvis
nødvendig.
Praktiske hovedregler:
deny-by-default på inn- og utgående trafikk
åpne kun for nødvendige porter, protokoller og kjente kilder
unngå “Any” i regler
segmenter nettverk mellom funksjoner og miljø
bruk private endepunkter/VPN der det er mulig
legg offentlige tjenester bak relevante sikkerhetslag (for eksempel WAF/API-gateway)
AI-tjenester og nettverkskontroll
For AI-løsninger bør valg av driftsmodell vurderes opp mot krav til kontroll på ingress og egress.
AI i egen tenant (for eksempel i Azure) gir som regel bedre kontroll på nettverksgrenser, private endepunkter, logging og hvilke systemer som kan sende data til og fra tjenesten.
AI som ren SaaS kan gi raskere oppstart, men ofte mindre kontroll på nettverksflyt, tillatte destinasjoner og hvordan trafikk avgrenses.
Minimumsvurderinger for begge modeller:
hvilke data kan sendes inn (ingress), og hvem kan sende dem
hvilke mål data kan sendes ut til (egress)
hvordan trafikk logges, overvåkes og blokkeres ved avvik
hvordan krav til personvern, dataflyt og geografi dokumenteres
Konfigurasjon
Konfigurasjon av nettverk bør automatiseres så langt det lar seg gjøre, helst via CI/CD og infrastruktur som kode.
begrens hvem som kan endre nettverksregler direkte
bruk JIT-tilgang der det er mulig
versjoner regler i kildekodekontroll
skann for avvik fra ønsket konfigurasjon og varsle ved ukjente regler
Utviklingsprosjekter benytter flere ulike miljø til ulike formål. Det er viktig å skille på disse slik at en unngår sammenblanding, datalekkasjer eller andre uønskede hendelser.
Når vi bygger løsninger setter vi ofte opp flere miljø, ofte for dev, test og prod slik at vi kan utvikle samtidig som at produkteier tester ny funksjonalitet og sluttbrukere bruker systemet i prod. Det er viktig at vi skiller mellom disse miljøene, slik at vi unngår å komme i situasjoner der endringer i ett miljø påvirker bruken av et annet.
Separate kontoer/abonnement/prosjekter per miljø gir et naturlig sikkerhetsskille fordi miljøene er isolert fra hverandre med mindre du eksplisitt oppretter tilganger mellom dem. Dette medfører noe mer overhead i administrasjon, men gir til gjengjeld sterkere isolasjon enn de andre mønstrene.
For de fleste prosjekter av en viss størrelse, eller der det stilles krav til sikkerhet, er dette det anbefalte utgangspunktet. Selv i mindre prosjekter er det verdt å vurdere — kostnaden ved å separere tidlig er langt lavere enn å migrere senere når behovet oppstår.
Vanlige segregeringsmønstre
Separate kontoer/abonnement/prosjekter per miljø:
Naturlig skille med mindre en eksplisitt definerer tilganger mellom miljøene
Mer overhead med administrering, men gir normalt sterkere isolasjon
Separate ressursgrupper, namespaces eller tilsvarende logiske enheter:
Forenklet administrasjon innen samme toppnivå
Deler ofte enkelte begrensninger og tilganger på høyere nivå
Separate virtuelle nettverk/VPC-er:
Segregering på nettverksnivå
Krever bevisst styring av ruting, peering og åpninger for å sikre reell isolasjon
Separate identiteter og roller per miljø:
Reduserer risikoen for at tilgang i ett miljø gir utilsiktet tilgang i et annet
Gjør det enklere å håndheve minste privilegium og spore handlinger per miljø
Azure, AWS og Google Cloud tilbyr ulike mekanismer for dette, men prinsippene er de samme: separer der konsekvensen er høy, åpne kun eksplisitt mellom miljøer, og dokumenter hvilke unntak som finnes.
Det finnes andre tilnærminger på dette også, men uansett hvilken løsning teamet går for er det viktig å se det totale bildet med kost/nytte opp mot kravene en må forholde seg til.
Segregering for AI-systemer
For løsninger som inneholder kunstig intelligens eller maskinlæring, holder det ikke alltid å segregere kun infrastruktur. Teamet må også ha et bevisst forhold til hvordan data, modeller og utrulling holdes adskilt mellom miljøene.
Skille mellom trenings-, evaluerings- og produksjonsdata
Data brukt til trening, evaluering og produksjon bør holdes tydelig adskilt. Dette reduserer risikoen for at modeller valideres på feil grunnlag, eller at test- og utviklingsarbeid påvirker produksjonsnære data.
Skille mellom modellversjoner per miljø
Modeller, vekter og tilhørende konfigurasjon bør versjoneres og knyttes tydelig til riktig miljø. Produksjonsmodellen bør ikke kunne overskrives av eksperimentering i dev eller test.
Gradvis innføring av endringer
Når nye modeller eller større endringer skal innføres, bør teamet vurdere mekanismer som feature flags, kontrollert utrulling eller andre teknikker som gjør det mulig å teste endringer på en avgrenset måte før full produksjonssetting.
Autentisering og autorisering sjekker henholdsvis hvem du er og hva du har lov til. Dette er viktige konsepter som må implementeres korrekt for at sikkerheten i en løsning skal ivaretas.
Autentisering og autorisering er viktig i alle utviklingsprosjekter. Kort fortalt går autentisering ut på at en skal validere at en bruker representerer den identiteten den hevder å representere, typisk gjennom å sjekke brukernavn og tilhørende passord. Autorisering går ut på å sjekke at brukeren har lov til å gjøre det den prøver på. Disse er ofte forkortet til authn for autentisering og authz for autorisering.
Autentisering
Når en skal validere en bruker, er det viktigste at en ikke lager en egen autentiseringsløsning! Å sikre at slike løsninger faktisk er sikre er en kjempejobb, og man bør istedet benytte seg av etablerte løsninger for dette!
Single sign-on er en vanlig løsning for å unngå at enkelttjenester må håndtere autentisering i bedriftsmiljø. Bruker autentiseres via en sentralt styrt tjeneste eller operativsystemet, hver applikasjon brukeren så åpner gjenbruker denne konteksten slik at en unngår å måtte logge på manuelt. Brukeropplevelsen strømlinjeformes, og brukerne ’trenes’ opp til at applikasjoner ikke skal be om brukernavn og passord. Dersom en angriper forsøker å phishe slik informasjon vil det oppfattes som unormalt og suspekt.
Vanlige tilnærminger for å håndtere autentisering kan være bruk av tredjepartstjenester, eller protokoller som håndterer autentisering mot kundens AD/Entra. I mange tilfeller ønsker vi å benytte Single-Sign-On(SSO) for å unngå at brukeren må taste inn brukernavn og passord, spesielt for interne forretningsapplikasjoner.
Vanlige løsninger for å håndtere pålogging er å benytte seg av biblioteker som tar seg av hele flyten, som eksempelvis Microsoft.Identity.Web. Andre alternativer kan være bruk av
SAML - XML-basert løsning som primært brukes for Single Sign-On og autorisering.
Oauth 2.0 - Autorisasjonsløsning der en identitetsløsning (IDP) deler ut aksesstokens som så sjekkes og håndteres av Oauth
OpenID Connect (OIDC) - Autentiseringslag oppå Oauth, som muliggjør innhenting av informasjon relatert til bruker og sesjon fra IDP.
Kerberos - Autentiseringsprotokoll mye brukt i OS-sammenheng.
LDAP - Autentisering- og autoriseringsløning brukt mot ulike katalogløsninger som Active Directory.
Her er det viktig at en setter seg inn i behovene til løsningen og hvilke autentiseringsmetoder som er tilgjengelige og eventuelt ønskelige.
Autorisering
Skillet mellom autentisering og autorisering ligger i at autentiseringen bekrefter hvem du er, mens man i autoriseringen sjekker at du har lov til å utføre en handling.
I likhet med autentisering finnes det flere tilnærminger for hvordan autorisering håndteres, og man er nødt til å sette seg inn i beste praksiser for språk og rammeverk som benyttes.
Det finnes likevel noen hovedprinsipper en alltid skal ta med seg inn i utviklingsforløpet:
Standardtilgang skal alltid være ingen tilgang
Dette er også kjent som default deny eller principle of least privilege, og brukes for å sikre at eksempelvis en uautorisert bruker ikke har tilgang til noe utover det som er eksplisitt tillatt.
Autorisering skal alltid sjekkes
Dersom en bruker forsøker å utføre en handling, skal det alltid sjekkes hvorvidt brukeren faktisk har tilgang til dette. Husk at denne sjekken må skje mot den autoritative kilden for tilganger, og aldri mot data brukeren kan manipulere!
Brukere skal alltid gis minst mulig tilgang
Også kjent som principle of least privilege. En bruker skal aldri få mer tilgang enn det som trengs for å utføre en spesifikk oppgave. Dette gjøres for å redusere angrepsflaten dersom en bruker kompromitteres, slik at skadeomfanget kan begrenses.
Rollebasert brukertilgang
Bruk av roller, role based access control (RBAC) er en vanlig tilnærming for å gi brukertilgang. Målet er å definere standardroller for en applikasjon, slik at tilgang kan baseres på disse. En vanlig måte å håndtere dette på eksempelvis med Entra eller AD er å ha
aksessgrupper med alle brukerne. Aksessgruppene legges som medlemmer i
rollegrupper, som gis tilgangen i applikasjonen.
Dette gir en bedre oversikt over hvem som har tilgang til hva sammenliknet med brukere som har individuelle tilganger.
AI- og agenttilganger
For løsninger med AI-agenter holder det ikke bare å styre sluttbrukertilgang. Agenten selv opptrer ofte som en egen identitet med tilgang til modeller, data, API-er og verktøy. Disse tilgangene må behandles som høyrisiko dersom de blir for brede.
Praktiske prinsipper:
gi agenten en egen tjenesteidentitet, ikke gjenbruk bruker- eller admin-kontoer
bruk minste privilegium per verktøy (tool access), slik at agenten kun kan kalle funksjoner den faktisk trenger
skill mellom lesing, skriving og administrative operasjoner
begrens tilgang per miljø (dev/test/prod) og per datasett eller tjeneste
sett tidsbegrensede eller betingede tilganger der det er mulig
Når en agent får tilgang til eksterne verktøy eller API-er, bør en også styre hvilke kommandoer, endepunkter og dataoperasjoner som er tillatt. Da reduseres risikoen for at feil, misbruk eller kompromittering gir stor effekt i drift.
For MCP-baserte integrasjoner (Model Context Protocol) gjelder de samme prinsippene, men med ekstra krav til avgrensning:
hver MCP-server bør ha tydelig eierskap og en egen identitet/tjenestekonto
verktøy eksponert via MCP bør scopes og autoriseres eksplisitt, ikke gis generell full tilgang
klienten bør bare få tilgang til nødvendige MCP-servere, og tilgang bør kunne trekkes tilbake raskt
kall mot MCP-verktøy bør logges med hvem/hva/hvorfor, slik at misbruk kan spores
Tilgangsstyring påvirker også operasjonell risiko: For brede agenttilganger gjør hendelser vanskeligere å oppdage og konsekvensene større. Derfor bør tilgangsendringer for agenter logges og følges opp sammen med øvrig driftsovervåking, se Logging og monitorering.
Trusselmodellering er en øvelse der målet er å identifisere trusler i og rundt en løsning. Dette gjør at risikoene kan identifiseres og vurderes opp mot et totalbilde av sikkerheten i løsningen. Fra en trusselmodell kan mottiltak identifiseres og implementeres for å redusere risiko.
Dette er en kort introduksjon til trusselmodellering. Metoder og verktøy nevnes kort, med lenker for fordypning.
Du har nok allerede gjort en enkel trusselmodellering uten at du selv er klar over det. Har du for eksempel tenkt på hvorfor brukerne av systemet du lager må logge seg inn med brukernavn og passord?
Når disse valgene ble tatt så har du automatisk gjort en enkel trusselmodellering. Du ønsker jo selvfølgelig ikke at uvedkommende skal kunne få tilgang til data i systemet ditt og du ønsker ikke at hvem som helst skal se data som overføres mellom brukerne dine og nettstedet ditt.
Hele poenget med trusselmodellering er å tenke som en angriper.
Identifisere trusler
Det finnes flere måter å identifisere trusler mot et system. I praksis er det viktigste å samle de riktige rollene, beskrive hva som skal beskyttes, og systematisk gå gjennom hvordan løsningen kan angripes eller misbrukes. Noen trusler er kanskje allerede håndtert, mens andre krever nye tiltak. Prosessen gjentas når løsning, dataflyt eller bruksmønster endres.
En enkel arbeidsflyt er:
avgrens systemet og kritiske verdier
identifiser trusler og misbruksscenarier
prioriter risiko og beslutning om tiltak
verifiser at tiltak faktisk virker
oppdater modellen jevnlig
Metodevalg (kort forklart)
Trusselmodellering er viktigere enn hvilken metode du velger. Velg en tilnærming som teamet faktisk klarer å bruke jevnlig.
Workshop-basert gjennomgang: Lav terskel og godt egnet tidlig i prosjekter, i tråd med prinsippene i Threat Modeling Manifesto.
Dataflyt + STRIDE: Nyttig når du vil gå strukturert gjennom komponenter, grensesnitt og tillitsgrenser, se OWASP Application Threat Modeling.
Angrepstrær: Egnet når du vil analysere hvordan et konkret angrepsmål kan nås via flere veier, se Attack Trees (Bruce Schneier).
Trusselmodellering av KI-systemer
For løsninger med KI holder det ofte ikke å se på applikasjonskoden alene. Trusselmodellen må også dekke modell, promptflyt, datakilder, evalueringsgrunnlag og hvordan systemet brukes i drift.
Typiske spørsmål er:
hvilke data kommer inn i modellen, og hvem kontrollerer disse?
hvilke deler av konteksten er betrodde, og hvilke kommer fra brukere eller eksterne kilder?
hva er det verste som kan skje dersom modellen gir feil svar eller blir manipulert?
hvilke sikkerhetsmekanismer finnes rundt modellkall, logging, tilgang og overvåking?
Noen KI-spesifikke trusler som bør vurderes eksplisitt er:
Prompt injection: Inndata eller dokumenter forsøker å overstyre instruksjoner eller få modellen til å utføre uønsket atferd.
Data poisoning: Treningsdata, referansedata eller evalueringsdata blir manipulert slik at modellen lærer feil eller gir dårligere beslutningsgrunnlag.
Model misuse: Systemet brukes til andre formål enn det er designet for, eller i en kontekst der feilmarginene er uakseptable.
Leakage: Sensitiv informasjon lekker ut via prompt, output, logger, vektfiler eller omkringliggende integrasjoner.
For KI-løsninger er det også viktig å beskrive misbruksscenarier, ikke bare direkte angrep. En modell kan for eksempel være teknisk tilgjengelig og fungerende, men likevel utgjøre høy risiko dersom den brukes til beslutningsstøtte uten tilstrekkelige menneskelige kontrollpunkter.
Fra trusselmodell til krav og oppfølging
En trusselmodell har liten verdi dersom den bare lages én gang og legges bort. Funnene må brukes til å formulere konkrete sikkerhetskrav, testbehov og kontroller i drift.
For eksempel kan en identifisert trussel føre til behov for:
sterkere autentisering eller tilgangskontroll
ekstra logging og varsling
validering av input og output
eksplisitte begrensninger på bruk av modell eller agent
jevnlig gjennomgang av datasett, promptflyt eller integrasjoner
For KI-systemer bør trusselmodellen også brukes når man vurderer endringer i modell, datakilder, promptmaler, evalueringssett og overvåking. Endringer her kan gi nye trusler selv om applikasjonskoden ellers er uendret.
Trusselmodellen må versjoneres og holdes oppdatert. Når en har identifisert trusler må mottiltak beskrives og effekten av disse vurderes. En vanlige tilnærming er å gi trusselen en verdi som indikerer alvorlighetsgrad, eksempelvis 1-10 der 10 er verst. Mottiltak vurderes tilsvarende, men med motsatt skala der 1 er liten effekt og 10 (eller opp til kritikalitet) er høyest effekt. Summen av disse gir en residuell risiko som sier noe om hva en sitter igjen med:
Når en har identifisert en risiko, er det viktig at den som eier denne risikoen involveres, da det er denne som har ansvaret for å påse at prosjektet leverer kvalitet i tråd med forventninger og krav.
Det er viktig at mottiltak valideres for at dette skal ha noen hensikt. Trusselmodellen bør hentes frem med jevne mellomrom for å se hvordan situasjonen har endret seg. Dersom total kritikalitet eller residuell risiko overstiger en grense, bør en vurdere nye tiltak.
For systemer i aktiv drift bør trusselmodellen også brukes når man vurderer hvilke hendelser som skal logges, hva som skal overvåkes og hvilke avvik som skal gi alarm. Dette gjelder særlig for KI-systemer, der misbruk, degradering eller uventet modellatferd kan utvikle seg gradvis over tid.
Veien videre
Verktøy
Microsoft Threat Modeling Tool gir deg en kick-start ved at en del vanlige trusler for diverse tjenester allerede er beskrevet. Dette verktøyet er særlig nyttig dersom man opererer i Microsoft Azure.
OWASP Threat Dragon er et tilsvarende open source verktøy, som det kan være verdt å ta en titt på.
Draw.io med denne pakken drawio-threatmodeling er et verktøy som fungerer både på web og i de vanligste klientene.
OWASP pytm er et open source rammeverk for “threat modeling as code” i Python, nyttig for team som vil versjonere modeller sammen med kode.
Kortstokker og workshop-hjelpemidler
LINDDUN GO er en lett tilgjengelig kortbasert metode for personverntrusler, med gratis PDF-kortstokk og digital versjon.
OWASP Cornucopia er en etablert, gratis kortstokk for å hente ut sikkerhetskrav i utviklingsprosjekter.
Elevation of Privilege (EoP) er en klassisk trusselmodellerings-kortstokk fra Adam Shostack, tilgjengelig som åpne ressurser.
The Security Cards fra University of Washington er et praktisk brainstorming-sett med utskriftsvennlig kortstokk.
Det er viktig med et godt underlag når vi skal bygge gode løsninger, og skisser og diagrammer som viser oppbygningen av infrastruktur, dataflyt, nettverk og tilgangsstyring er viktige elementer. Uten denne informasjonen er det vanskelig å validere om sluttresultatet matcher intensjonen.
Når vi designer en løsning, er det viktig med gode og oversiktlige skisser og diagrammer som viser designet slik at det planlagt. Dette gjøres allerede av mange utviklerteam uten at det nødvendigvis stilles krav til det, men det er likevel greit å nevne her.
Systemskissene bør gi nok informasjon til at en i etterkant kan
Validere at implementasjonen er som designet
Bruke dem ifm trusselmodellering, pentesting eller liknende
Brukes av den/de som forvalter løsningen for å få en god oversikt over komponenter og dataflyt
Brukes av leveranseteamet for onboarding av nye kollegaer eller handover til andre team.
Selv om det er mye som kan dokumenteres her, fokuserer vi bare på det viktigste her:
Overordnet systemskisse med de viktigste logiske komponentene
Detaljert nettverksskisse med ressurser, tjenester og nettverk
Dataflytdiagram viser hvordan data flyter mellom komponenter i løsningen
IAM-diagram viser identiteter, tilganger og roller samt hvor de hentes fra
Viktige avhengigheter viser oversikt over andre systemer, tjenester, ressurser, onprem/cloud
Bruk av KI-komponenter
Dersom løsningen inneholder kunstig intelligens eller maskinlæring-modeller, må disse være eksplisitt dokumentert i systemdokumentasjonen:
I dataflytdiagrammet: Viser hvor treningsdata og inferensinput kommer fra, og hvordan resultater flyter videre
I nettverksdiagrammet: Dokumenter hvor modellen kjører (cloud API, edge device, on-prem server) og nettverkskonnektivitet
I avhengighetslisten: Eierskap av modeller, versjonering, og hvor de oppdateres
I IAM-diagrammet: Hvem kan deploye, oppdate eller monitorere modellen
Uten denne informasjonen er det vanskelig å få oversikt over risiko, dataflyt og compliance rundt AI-komponenter.
Eksempler
Under finner du eksempler på punktene listet ovenfor. Diagrammene du produserer trenger ikke å være like, det viktigste er at de inneholder nok informasjon til at de kan brukes for det tiltenkte formålet og at de er forståelige for teamet.
For enkelt å komme igang med design av diagrammer og skisser kan verktøy som Miro eller Draw.io brukes. Sistnevnte er gratis og tilbyr lagring av tegniner i nettleser, lokalt på maskinen som XML og mye annet.
Husk
Diagrammene trenger ikke å være perfekte, eller inneholde alle tenkelige detaljer. Vurder behovet og jobb med gradvise forbedringer over tid.
Overordnet systemskisse
Den overordnede systemskissen viser de viktigste komponentene, og hvordan disse forholder seg til hverandre. Viktige avhengigheter merkes, slik at det er lett å få et overblikk over systemene.
Netverksdiagram
Målet med nettverksdiagrammet er å vise topologien, med alle virtuelle nettverk, subnett og ressurser og åpninger mellom disse. Et godt nettverksdiagram viser flyten mellom tjenester og enheter, slik at andre involverte kan danne seg et bilde av hvordan data flyter fra punkt til punkt.
Husk:
Nettverksdiagram bør lages for alle miljø, slik at en får nødvendig informasjon på alle ressurser i alle miljø, samt forbindelser mellom disse.
Dataflytdiagram
Dataflytdiagrammet fokuserer primært på datakildene, og viser hvordan data flyter gjennom systemet. En kan også inkludere overordnet informasjon om hvordan data transformeres eller modifiseres, slik at det er enklere å gå opp eventuelle avvik i etterkant.
IAM-diagram
Et IAM-diagram beskriver hvor brukerne kommer ifra, og hvilke roller som tildeles brukere og eventuelt tjenester eller enheter på de ulike ressursene.
Avhengigheter
Dette kan tegnes som et diagram, men kan like gjerne være i form av en enkel liste. Denne oversikten bør beskrive alle direkte avhengigheter for prosjektet, med et kort sammendrag av hvordan den brukes og hvorfor.