Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image Added


SOSIGW

    Driftsvejledning for SOSIGW 1.2



    Anchor
    _Toc12711
    _Toc12711
    Indeks


    Indeks
    Revisionshistorik
    Introduktion
    Kontrol af korrekt driftstilstand
    Ændring af statisk konfiguration
    Logfil
    Backup
    Start/genstart af service
    Opgradering
    Sikkerhedsvejledning for SOSI-Gateway
    Netværksforbindelser
    Adgang til administrationskonsollen i SOSI-GW
    Adgang til filsystemet på serverne
    Adgang til databaser
    Logning
    Brug af SOSI-GW som "webservice-firewall"
    Appendix A - Statiske konfigurations parametre







    Anchor
    _GoBack
    _GoBack





    Anchor
    _Toc12712
    _Toc12712
    Revisionshistorik

    Version

    Dato

    Ændring

    Ansvarlig

    1

    09/10/09

    Initiel version af dokument

    jre

    2

    15/10/09

    Formattering

    jre

    3

    06/12/10

    Bootstrap snitflade

    bbg

    4

    29/08/13

    Segmentering af anvendere

    CHE


    Anchor
    _Toc12713
    _Toc12713
    Introduktion

    Dette dokument beskriver hvilke driftsovervejelser, der er i forbindelse med SOSIGW. Desuden indeholder dokumentet en sikkerhedsvejledning, der beskriver hvilke sikkerhedsovervejelser, der bør indgå i driften.
    Det anbefales derudover at læse "Installationsvejledning for SOSI-GW – NSP", idet dette dokument indeholder yderligere instrukser i forhold til segmentering af anvendere og ændrede muligheder ved placering af GW foran DCC.

    Anchor
    _Toc12714
    _Toc12714
    Kontrol af korrekt driftstilstand

    Følgende er tegn på en god drift

    • Der bør ikke forekomme linier med teksten "ERROR" i logfilerne.
    • Det bør være muligt at logge på administrationskonsollen. På en default installation ligger konsollen på http://localhost:8080/sosigw/console/
    • Hvis systemet benyttes af brugerne, ligger nyligt gennemførte webservicerequests i audit-loggen i databasen. Disse kan ses i administrationskonsollen.
    • Der bør ikke være linier, der ligner følgende i loggen:

    Wiki Markup
     \\
    "WARN  \[IntercomImpl\] Server silent: 
    10.0.0.44.3491112d08cf3ed9" 
     \\
    De kan dog forekomme, nemlig ved rullende opgradering og andre kontrollerede begivenheder uden at det er tegn på fare. Hvis de kommer i større mængder uden at årsagen til hver af dem kendes, bør det undersøges nærmere. Sandsynlige årsager er overbelastning af serverne eller pakketab på intra-cluster nettet. 

    • Følgende besked tyder også på, at noget er galt. Med stor sandsynlighed er forbindelsen til den lokale database forsvundet:

    Wiki Markup
     \\
    "ERROR  \[AuditLog\] Unable to audit-log due to overflow in queue" 
     \\
    En korrekt kørende SOSIGW-knude har både en servlet container, fx Tomcat eller Trifork T4, og en PostgreSQL-database kørende. Hver knude er desuden forbundet til en central logningsdatabase. Den centrale logningsdatabase kan tages offline uden at de enkelte knuder påvirkes, da de automatisk vil koble på den igen når den kommer op. 

    Anchor
    _Toc12715
    _Toc12715
    Ændring af statisk konfiguration

    SOSIGW indeholder en række statiske konfigurationsmuligheder, der primært henvender sig til tuning af clustering-mekanismen. Disse indstillinger ligger i en properties-fil et af følgende steder:

    • Tomcat: $CATALINA_HOME/conf/sosigw-staticconf.properties
    • Trifork T4: $DOMAIN_DIR/config/$SERVER_NAME/sosigwstaticconf.properties


    Ændringer i denne fil kræver genstart af serveren. Filen gælder kun lokalt, så hvis statisk konfiguration skal være ens på alle knuder i et cluster, skal filen manuelt kopieres rundt, fx via rsync eller lignende.
    Se "Appendix A - Statiske konfigurations parametre" for en beskrivelse af hver enkelt parameter.

    Anchor
    _Toc12716
    _Toc12716
    Logfil

    Der logges til en SOSIGW-specifik logfil samt til stdout på serveren. SOSIGW-loggen hedder sosigw.log og ligger det sted, hvor serveren blev startet fra. Ønskes en anden placering, kan log4j-sosigw.xml tilpasses. Placeringen af denne fil er beskrevet under installationsproceduren.
    Som standard roteres logfilen automatisk når den fylder 20 MB. Dette kan ligeledes tilpasses i log4j-sosigw.xml. Ændringer i filen aktiveres automatisk uden at serveren skal genstartes.
    Til fejlfinding kan debug levels kobles til. Det gøres ved at sættes level til DEBUG på de category-elementer, der ligger under com.trifork.sosigw.

    Anchor
    _Toc12717
    _Toc12717
    Backup

    Følgende elementer bør der tages backup af løbende:

    • Den globale databaseinstans, der indeholder auditlog for det samlede cluster
    • Mindst en af de lokale databaser, primært med henblik på at have en backup af den delte konfiguration
    • Der kan også tages backup af alle de lokale databaser, med det formål at sikre audit-data hvis den globale instans bryder sammen. Bemærk dog, at hvis der fx tages backup en gang i døgnet, så er sandynligheden for at miste audit-data ved nedbrud på de lokale knuder formentligt ikke mindsket væsentligt. Sørg i stedet for at køre et RAID1-disksystem på knuderne.
    • Det er ikke kritisk at tage backup af filsystemerne, da der ikke opbevares tilstand her. Af hensyn til reetablering kan det dog være en god ide.

    Anchor
    _Toc12718
    _Toc12718
    Start/genstart af service

    En SOSIGW-instans kan frit genstartes uden at skulle klargøre genstarten på andre knuder. Genstart foregår via containerens normale mekanismer.
    For at en knude er fuldt funktionel, kræves det at der både er en kørende applikationsserver og Postgresql database. De to komponenter kan dog godt startes hver for sig, og en bestemt start/stop-rækkefølge er ikke påkrævet. Selve applikationen kan også fungere i en periode uden lokal database, dog er der en mulighed for at audit-beskeder går tabt hvis den interne beskedkø bliver fyldt. Sker det vil loggen indeholde linjer med "Unable to audit-log due to overflow in queue"

    Anchor
    _Toc12719
    _Toc12719
    Opgradering

    SOSIGW understøtter rullende opgradering. Det betyder, at i et cluster kan hver knude opgraderes enkeltvis uden at tage hele clusteret ned. Rullende opgradering kan kun foregå mellem to versioner – dvs et cluster i version 1 kan opgraderes til version 2, men for at komme til version 3, så skal alle knuder være på version 2.

    Anchor
    _Toc12720
    _Toc12720
    Sikkerhedsvejledning for SOSI-Gateway

    SOSI-GW ventes benyttet til at videresende personfølsomme oplysninger og skal derfor beskyttes passende mod misbrug.

    Anchor
    _Toc12721
    _Toc12721
    Netværksforbindelser

    SOSI-GW skal tilkobles et beskyttet net, hvor der er tillid til alle maskiner med adgang til at sende pakker til SOSI-GW. Dette er nævnt som en forudsætning i kravspecifikationen for SOSI-GW. Det er en del af grundlaget for løsningen, at nettet er sikkert og der er derfor ikke indbygget nogen form for beskyttelse i form af f.eks. kryptering i kommunikationen.
    Det er sikkerhedsmæssigt strengt nødvendigt (og performancemæssigt en god ide) at benytte to netkort (eller VLAN) i serverne, og konfigurere dem til at benytte et separat, lukket, net til intra-cluster kommunikationen. Dette gøres ved at specificere et IP-prefix for det lukkede net i den statiske konfiguration af SOSI-GW, ved at sætte "cluster.ip.prefix" i filen "sosigw-staticconf.properties" til det prefix, der entydigt identificerer det lukkede net. Herefter lytter SOSI-GW kun på det net efter nye medlemmer af clusteret. Dette er vigtigt, da medlemmerne af clusteret stoler på at alle andre på multicast-kanalen også venligtsindede medlemmer af samme cluster, og derfor ikke laver nogen validering af det de modtager over multicast. Man kan derfor let overtage kontrollen med clusteret, hvis ikke cluster-trafikken udveksles på et separat lukket net.
    Det anbefales at benytte en HTTP-loadbalancer, der kan filtrere på URL'en og benytte en opsætning med følgende egenskaber: (Url'erne er præfikser af det, som de default er sat til i web.xml)

    • Kald til "/browsersign/" skal tillades fra alle klientmaskiner, da den benyttes til at underskrive ID-kort fra browsere, der af natur afvikles på klientmaskinerne.
    • Kald til "/proxy/soap-request/" og "/service/sosigw" bør kun være mulige fra udvalgte maskiner, formentlig EPJ-system servere. Hvis det er nødvendigt at benytte webservices gennem SOSI-GW fra klient-maskiner på nettet, bør der anvendes restriktioner i SOSI-GW til at begrænse hvilke services, der må kaldes fra klienterne. Disse opsættes gennem administrationskonsollen.
    • Kald til "/service/sosigw-restricted" kan til gengæld udstilles til et bredere publikum, da denne snitflade kun udstiller enkelte håndtag til at oprette nye idkort. Det er meningen at denne snitflade skal bruges fra SignOn Biblioteket.
    • Kald til "/com.trifork.sosigw.console.ConsoleApp/", "/console/" og "/login/" skal kunne benyttes fra maskiner, hvor man skal kunne komme til administrationkonsollen. Selve konsollen beskytter sig selv ved at kræve login med OCES digital signatur, men det er god praksis at begrænse adgangen mest muligt.

    Anchor
    _Toc12722
    _Toc12722
    Adgang til administrationskonsollen i SOSI-GW

    Adgangen til administrationkonsollen er beskyttet ved at kræve at brugeren logger in med sin digitale signatur i den browser, der benyttes. Der gemmes en "session cookie" i browseren og sessionen lever dermed indtil browser-vinduet lukkes.
    Gennem administrationkonsollen opsættes hvilke brugere, identificeret ved deres CPR-nummer, der har lov at benytte administrationskonsollen. Som beskrevet i installationsvejledning er det muligt at omgå dette login ved at starte SOSI-GW i "bootstrap mode", så man kan få den første bruger eller to registreret. Bemærk at dette også kan benyttes til at tilføje uautoriserede brugere, hvis det er muligt for en fjentligt sindet bruger at sende pakker ind på "intra-cluster" nettet.

    Anchor
    _Toc12723
    _Toc12723
    Adgang til filsystemet på serverne

    Filsystemet indeholder som udgangspunkt ikke noget følsomt, men det bør naturligvis ikke være muligt for uautoriserede personer at rette i konfiguration eller program. Der logges normalt ikke følsomme data til filsystemet, med mindre dele af systemet sættes til at logge på niveau "DEBUG".

    Anchor
    _Toc12724
    _Toc12724
    Adgang til databaser

    Som beskrevet i installationsvejledningen benyttes to databaser, en "lokal" og en "global". De indeholder begge følsomme oplysninger og bør beskyttes mod uautoriseret adgang. Den lokale database bør sættes til kun at ville kommunikere med lokale processer, da det begrænser angrebsmulighederne til personer, der kan få adgang til maskinen. Den globale bør ligeledes begrænses til kun at ville kommunikere med maskiner, der kører SOSI-GW, eller i det mindste et begrænset netværk.
    Der bør oprettes brugere med "bedre" adgangskoder, end de, der er brugt som eksempler i konfigurationsfilerne. Eksemplerne er kun tænkt til udvikler-brug.

    Anchor
    _Toc12725
    _Toc12725
    Logning

    SOSI-GW logger i den globale database nøgleoplysninger om hvert webservice-kald, der gennemføres gennem den til service-udbydere. Disse kan fremsøges i administrationskonsollen. Denne logning er nødvendig i tilfælde af misbrug, da serviceudbyderen kun kan føre kaldet tilbage til SOSI-GW, som så må konsulteres for at opklare hvilken IP-adresse kaldet oprindeligt kom fra.

    Anchor
    _Toc12726
    _Toc12726
    Brug af SOSI-GW som "webservice-firewall"

    Man kan forestille sig at man har et net, man ønsker at beskytte mod uautoriserede webservice-kald, f.eks. sundhedsdatanettet. En anvendelse af SOSI-GW er at konfigurere sit netværk, så kun medlemmer af SOSI-GW clusteret kan sende webservice-kald ud på sundhedsdatanettet, og så benytte adgangskontrollen indbygget i SOSI-GW til at styre hvilke applikationer og maskiner, der får lov til at kalde hvilke services på sundhedsdatanettet.

    Anchor
    _Toc12727
    _Toc12727
    Appendix A - Statiske konfigurations parametre

    Nedenfor beskrives de forskellige parametre der kan indstilles og hvad de gør.

    cluster.ip.prefix

    Afgør hvilket interface der benyttes til intra-cluster kommunkation, hvis der ikke er sat nogen værdi lyttes på alle interfaces.
    Det anbefales at intra-cluster kommunikation foregår på et separat IP-subnet eller endnu bedre et separat VLAN.
    Da det er et prefix kan værdien fx være "10.", "192.168.", "172.17."

    cluster.multicast.ip.address

    Intra-cluster multicast adresse, skal i kombination med port være unik for hver SOSIGW cluster.
    cluster.multicast.ip.port
    Port der benyttes til intra-cluster multicast

    sosigw.mode

    Hvad "mode" skal sosi-gw køre i, kan antage en af værdierne 'production', 'test',
    'developer' eller 'bootstrap' sosigw.mode=developer
    En nem måde at få sosi-gw til at køre lokalt.
    Slår brugen af database, auditlogging, clustering og login tjek på konsollen fra, derudover slås adgangstjek for webservices for både klient og server. Bruger TEST-STS service, og kommunikere ikke med andre clustre medlemmer. sosigw.mode=production
    Slår fuld funktionalitet til og benytter produktions STS service.
    Kræver at lokal og global database er korrekt konfigureret, og kører i et cluster hvis mere end en node er tilstede.
    sosigw.mode=test
    Som produktion men benytter TEST STS.

    sosigw.mode=bootstrap

    Får sosi-gw til at starte i begrænset mode, hvor kun konsollen er tilgængelig og der ikke kræves autorisation.
    Det er ment som en måde at få sosi-gw gjort klar første gang den startes, eller ved nødstilfælde hvor der ikke findes et gyldigt login.
    Kræver lokal database for at konfigurationsændringerne gemmes. Kan ikke servicere requests og benytter ikke STS i denne mode.

    sosigw.slalog

    Slå sla-logging til, bemærk at når sosi-gw er i produktion mode vil denne indstilling ignoreres da sla-logging altid er aktiv i produktion.
    fmk.isalive.url
    Bruges fra "check pages", til at validere at FMK er oppe.

    dgws.version

    Hvilken version af DGWS som supporteres, gyldige værdier er 1.0 eller 1.0.1, skal matche den version som klient applikationerne benytter.
    Hvis begge versioner ønskes, er det nødvendig at have to parallele sosi-gw kørende.

    jdbc.driver

    Hvilken JDBC driver der skal benyttes, følgende er understøttet: jdbc.driver=org.gjt.mm.mysql.Driver jdbc.driver=org.mysql.Driver jdbc.driver=org.postgresql.Driver jdbc.driver=org.hsqldb.jdbcDriver
    jdbc.datasource
    Navnet på den datasource der slåes op i jndi.

    global.auditlog.enabled

    Hvis slået til vil sosi-gw samle audit log linjer fra alle sosi-gw instanser til en global auditlog database.
    Bemærk, auditlog søgning i konsollen benytter den globale auditlog database, så hvis denne slås fra, vil auditlog søgning også slås fra.
    auditlog.to.db.enabled
    Om der skal auditlogges til database, bemærk log4j altid er slået til.

    restricted.webservice.enabled

    Slå den begrænsede version af signon webservicen på /service/sosigw-restricted til eller fra.
    Den begrænsede webservice er beregnet til brug med "Signon Library" og er et duplikat af den fulde webservice /services/sosigw med logout og getValidIdCard fjernet.
    runtimeconfig.storage.type Kan sættes til db eller properties
    Hvis db vælges læses konfigurationen fra den lokale database, for de forskellige instanser.
    Hvis properties vælges læses konfigurationen fra sosigw-staticconf.properties, konsollen slås fra og konfigurationen bliver ikke propageret mellem de forskellige cluster medlemmer.

    runtimeconfig.general.browsersigning.url

    Url klienten skal benytte for at få browsersigning på denne sosi-gw cluster.
    Hvis cache partitionering er slået til kan man sætte url op for hver partition som sådan her: runtimeconfig.general.browsersigning.url.1=partition1.url runtimeconfig.general.browsersigning.url.2=partition2.url osv.


    runtimeconfig.general.sts.service.url

    Url til den STS service der skal benyttes, kan være en liste url'er der prøves i rækkefølge, url'erne skal være adskil med mellemrum.

    runtimeconfig.general.globaldb.jdbc.url

    Jdbc connection streng til den globale auditlog database.
    runtimeconfig.general.globaldb.jdbc.username Brugernavn til den globale audit log database.
    runtimeconfig.general.globaldb.jdbc.password
    Password til den globale audit log database
    runtimeconfig.general.globaldb.transmit.interval
    Hvor tit audit logs flyttes fra den lokale audit log til den globale, i millisekunder.
    runtimeconfig.general.careprovider.cvr
    CVR på den organisation der kører sosi-gw, brug 19343634 til test.
    runtimeconfig.general.careprovider.cvr.name
    Navnet på den organisation der kører sosi-gw, benyt SOSITEST i test.

    runtimeconfig.general.idcard.signing.timeout

    Antal sekunder der må gå fra man har bedt om en digest/url til man skal have startet en browser signerings session.

    runtimeconfig.general.browser.signing.timeout

    Antal sekunder der må gå fra man har startet browser signerings appletten til browseren skal have sendt det signerede digest.
    runtimeconfig.general.sts.number.failures.before.open.cb Antal gange kald til STSen må fejle før circuit breakeren åbner.
    runtimeconfig.general.sts.millis.before.attempting.close.cb
    Antal millisekunder der skal gå før circuit breakeren igen forsøger at lukke.
    runtimeconfig.general.sts.timeout.millis
    Tid(i millisekunder) der ventes på svar på STS forespørgsler.

    runtimeconfig.general.cache-partitioning.enabled

    Skal idkort cachen være partitioneret, baseret på indholdet af en http-header (se nedenfor)

    runtimeconfig.general.cache-partitioning.http-header.name

    Navnet på den http-header der indeholder det partionId der skal bruges (ignoreres hvis partitionering er slået fra).

    runtimeconfig.general.decoupling-component.url

    Url til den "Decoupling Component" der skal modtage forespørgsler der ikke indeholder en WSAddressing i headeren.

    runtimeconfig.general.pass-through-on-signature.enabled

    Hvis denne er slået til vil sosi-gw ikke udskifte idkort på forespørgsler der allerede har en, signatur med digest, signatur værdi og certificate element.

    runtimeconfig.clientaccesswhitelist.*

    Klient whitelisting liste, kan forekomme mere end en gang, * udskiftes med et unikt alias for den klient der ønskes whitelistes.
    Formatet på værdien er "IP-adresse, Salt, Kommentar" IP-adressen behøver ikke være en hel IP, der matches på begyndelsen, så fx hvis 10.0. er valgt vil den matche alle ip'er der starter med 10.0.
    Hvis både IP-adresse og Salt er angivet tjekkes begge dele.
    Eks på en klient whitelist:
    runtimeconfig.clientaccesswhitelist.fromthelb=9.0.5.,,From the LB

    runtimeconfig.servicepreservewsa.*

    Liste med services hvor To og Action i WSAddressing ønskes bevaret, kan forekomme mere end en gang, * udskiftes blot med et unikt alias.
    Indeholdet skal være en komma separeret liste med formatet "WS-Addressing-to regexp, WS-Addressing-action regexp, Kommentar".
    WS-Addressing-to & WS-Addressing-action skal indeholde regex som matches med det der kommer i forespørgsler.
    Eksempel hvor alt der er til trifork.lms.trifork.com eller ip 195.80.250.83, ikke vil få fjernet To og Action:
    runtimeconfig.servicepreservewsa.fmk=.*(trifork\\.lms\\.trifork
    .com

    195\\.80\\.250
    .83).,.,FaellesMedicinKort

    runtimeconfig.serviceaccesswhitelist.openaccess=.,.,Open access

    Liste med services der er whitelistet, kan forekomme mere end en gang, * udskiftes blot med et unikt alias.
    Indeholdet skal være en komma separeret liste med formatet "WS-Addressing-to regexp,WS-Addressing-action regexp, Comment".
    WS-Addressing-to & WS-Addressing-action skal indeholde regex som matches med det der kommer i forespørgsler.
    Eksempel der åbner for alle services:
    runtimeconfig.serviceaccesswhitelist.openaccess=.,.,Open access

    runtimeconfig.general.nspflowid.http-header.name

    Navnet på den http header proxy'en læser og sender videre til den kaldte service. Default værdien er X_NSP_FLOWID.

    runtimeconfig.general. proxy-requestid.http-header.name

    Navnet på en http header proxy'en genererer og sætter ind som http header til den kaldte service.
    Side
    Default værdien er X_NSP_PROXY_REQUESTID.
    Side

    ...