Versions Compared

Key

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

...

Table of Contents

Beskrivelse

Multiexcerpt
MultiExcerptNameFormål

SOSI-gw (ServiceOrienteret System Integration gateway): Teknologi til at håndtere en standardiseret form for integrationsmekanisme i sundhedssektoren for webservices og certifikater, baseret på nationale og internationale retningslinier og standarder.

Multiexcerpt
MultiExcerptNameBeskriv databehandlingen

Der findes to forskellige setup.
- Et centralt NSP setup med SSL overbygning (cNSP), som f.eks. anvendes af kommunerne. I denne konfiguration er SOSI-GW placeret før afkoblingskomponenten (DCC) i et NSP-gateway miljø.
- SOSI-GW anvendes også decentralt (dNSP), hovedsageligt af regionerne, hvor der er etableret systemintegration mellem NSP og regional IT. Dette setup adskiller sig bl.a. ved at DCC her står før SOSI-GW.


Support ansvarlig: Trifork
NSP: NSP Gateway (NGW) - Leverancebeskrivelse

Forretningsanvendelse

^^Tilbage til toppen^^


Multiexcerpt
MultiExcerptNameArkitekturtegning

Image Modified


Relaterede registre og services

Multiexcerpt
MultiExcerptNameUnderstøttede komponenter

Applikationsbeskrivelse

^^Tilbage til toppen^^

Centralt NSP Gateway setup

Image RemovedImage Added


Her beskrives anvendelse af central SOSI-GW, som den der står foran de centrale NSP miljøer (cNSP).
Her er SOSI-GW placeret i et foranstillet miljø, NSP-gateway (NGW).

...

Decentralt NSP Gateway setup

Image RemovedImage Added

SOSI-GW anvendes også decentralt, hovedsageligt af regionerne, hvor der er etableret systemintegration mellem NSP og regional IT. Dette setup adskiller sig bl.a. ved at DCC her står før SOSI-GW, som vist på diagrammet.

...

SOSI-GW tillader nu alle id-kort niveauer, og proxy interfacet behandler de forskellige niveauer således:
Beskeder som videresendes uden udskiftning af id-kort:
Requests med niveau 2 id-kort
Requests med signeret niveau 3 og 4 id-kort
Øvrige beskeder behandles af SOSI-GW inden viderestilling:
Requests med niveau 1 id-kort
Requests med usigneret niveau 4 id-kort

Datastruktur, Intern register: SOSI-GW

^^Tilbage til toppen^^

Register properties:

...

Id-kort distribueres over en fælles cache, der drives af multicasting på lokalnettet

Image RemovedImage Added

Entitetsbeskrivelser

...

lokal:  runtimeconfig

^^Tilbage til toppen^^

Logentry for hændelsen med angivelse af borger, bruger og evt. ansvarlig, organisation og system samt anvender session og tidspunkt.

Lokal konfiguration af SOSI-GW servicen
Den statiske, filbaserede konfiguration af SOSI-GW applikationen holdes på et minimum for at undgå omstændig kopiering af konfiguration, og for lettere at kunne honorere kravet om rullende opdateringer mm. Al anden konfiguration lægges i den lokale database på de enkelte servere og udveksles via multicast.
Konfigurationsdata gemmes altid som et komplet hele, der er forsynet med et tidsstempel, der identificerer og sammenbinder sammenhørende konfigurationsdata

Objektet indeholder informationen:
Objektet indeholder følgende information:
----------------------------------------
`configpk`
`moment` -- ---
id
regKode -- Unique enforced af constraint
cprNrBorger -- CPR-nummer for den borger, hvis data der er forsøgt tilgået.
bruger -- CPR for person som har tilgået eller forsøgt at tilgå borgerens data. CPR 0000000000 kan benyttes efter aftale med NSI, hvor registrator så har ansvaret for at kunne fremfinde personens identitet.
ansvarlig -- CPR på sundhedsperson eller borger, der er handlet på vegne af ifbm. tilgang til eller forsøg på tilgang til borgerens data. CPR 0000000000 kan benyttes efter aftale med NSI, hvor registrator så har ansvaret for at kunne fremfinde personens identitet. Kan være tom.
orgUsingID -- Identifikation af tilknyttet organisation ved hjælp af SOR-kode, SHAK-kode, ydernummer, p-nummer, cvr-nummer eller kommunekode samt angivelse af hvilken af disse typer, der anvendes som identifikation. Anvendes kun, når bruger er sundhedsperson. Når registreringen omhandler sundhedspersons adgang til borgers data er elementet krævet, medmindre andet er aftalt i den serviceaftale, som anvender af servicen har indgået med den dataansvarlige myndighed (NSI).
orgUsingName_id -- relation til OrganisationName
systemName -- Identifikation eller navn på kildesystem hvorfra forsøg på tilgang til borgers data er sket.
handling -- Tekstuel beskrivelse af den handling, bruger har udført i forbindelse med forsøg på tilgang til borgers data.
sessionId -- Et teknisk sessions id, der i kontekst af anvendersystemet unikt identificerer den session, som bruger var i, da handlingen blev gennemført.
tidspunkt -- Tidspunktet for tilgang eller forsøg på tilgang til borgers data. Dato og tid skal anføres i Zulu-tid og med millisekunder.

OrganisationName

^^Tilbage til toppen^^

Indeholder organisations navnet som brugeren tilhører

timestamp

lokal:  runtimeconfig_data

^^Tilbage til toppen^^

Lokal konfiguration af SOSI-GW servicen
De enkelte værdier til hvert element i configurationen

Objektet indeholder informationen:
--------------------------------------
`datapk`
`elmpk` -- relation til runtimeconfig_element objektet
`idx`
`value`

lokal:  runtimeconfig_element

^^Tilbage til toppen^^

Lokal konfiguration af SOSI-GW servicen
De enkelte elementer i configurationen

Objektet indeholder informationenObjektet indeholder følgende information:
---------------------------------------------
name -- Navn på sundhedspersonens organisation. Når registreringen (LogDataEntry) omhandler sundhedspersons adgang til borgers data er elementet krævet. Bemærk, at navnet skal være meningsfyldt for en borger.
digest -- relation fra LogEntry

Status

^^Tilbage til toppen^^

Benyttes til at optimere oprydningen af Minlog data.


`elmpk`
`configpk` -- relation til runtimeconfig objektet
`category`
`elmkey`
`valuecount`

lokal:  sosigwlog

^^Tilbage til toppen^^

Auditlogning foretages lokalt på de enkelte servere (SOSGWLOG). Auditlogs persisteres lokalt i de decentrale databaser, der er installeret på alle SOSI-GW servere.
Med et konfigurerbart interval sender hver enkelt server opsamlede logs til den centrale log-merger database server (sosigwgloballog).

Til auditloggen logges følgende:
Proxyrequests Tidspunkt, NameID, Systemid, IP for afsender, endpoint, IDCardID (kortets) unikke id
Service requests Tidspunkt, NameID, Systemid, IP for afsender, operation, status (OK/ERR)
URL requests Tidspunkt, NameID, Systemid, IP for afsender, status (OK/ERR)

Objektet indeholder informationen:
Objektet indeholder følgende information:
------------------------------------------
`lpk` -- -primær nøgle
`id` `systemid` --
`lastUpdated` --

Whitelist config (BRS)

^^Tilbage til toppen^^

Objektet indeholder de CVR som er whitelisted til brug på test/prod for BRS servicen

identifikation af serveren
`operation`
`cpr`
`moment` -- timestamp
`wsato` -- WSAddressing to, det endelige endpoint-URL
`wsaaction`
`clientip` -- identification af client som kalder SOSI-GW

lokal:  Token Cache

^^Tilbage til toppen^^

SOSI-GW id-kort cache
Id-kort distribueres over en fælles cache, der drives af multicasting på lokalnettet

Når et id-kort skal signeres med føderationens certifikat, kalder SOSI-GW STS’en. Herefter indsætter SOSI-GW id-kortet i en cache.
Ved efterfølgende kald fra anvendersystemet erstattes det medsendte id-kort med det signerede id-kort fra cachen, inden viderestilling til den relevante NSP service.

central:  clientip

^^Tilbage til toppen^^

IP identification af client som kalder SOSI-GW
Del af SOSI-GW audit logning.

Objektet indeholder informationen:
-Objektet indeholder informationen:
---------------------------------------
service_key
-- BRS behandlingsrelationsservice:
+ dk.nsi.auth.query.type.cvr.list - BRS
+ dk.nsi.auth.create.type.cvr.list - BRS
+ dk.nsi.auth.brs.cvr.list - NO_TYPE
-- Min Log:
+ dk.nsi.minlog.registration (registration service)
+ minlogws (opslags service)

service_type
-- NO_TYPE
-- BRS
-- CPRSUBSCRIPTION
cvr -- CVR nummer
comment -- Her anføres NSP Jira nummer som relaterer den enkelte whitelisting

Tabelbeskrivelser

Tabel: LogEntry

^^Tilbage til toppen^^

CREATE TABLE LogEntry (
id bigint NOT NULL AUTO_INCREMENT,
regKode varchar(36) NOT NULL,
cprNrBorger varchar(10) NOT NULL,
bruger varchar(20),
ansvarlig varchar(20),
orgUsingID varchar(25),
orgUsingName_id int,
systemName varchar(25),
handling varchar(75),
sessionId varchar(46),
tidspunkt datetime NOT NULL,
PRIMARY KEY (id),
CONSTRAINT unique_constraint_regKode UNIQUE (regKode),
INDEX log_cpr_and_timestamp_index (cprNrBorger, tidspunkt))
ENGINE=InnoDB DEFAULT CHARSET=latin1 DEFAULT COLLATE=latin1_swedish_ci;

Tabel: OrganisationName

^^Tilbage til toppen^^

CREATE TABLE OrganisationName (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(256) NOT NULL,
digest bigint NOT NULL,
PRIMARY KEY (id),
INDEX organisation_name_digest_idx (digest))
ENGINE=InnoDB DEFAULT CHARSET=latin1 DEFAULT COLLATE=latin1_swedish_ci;

Tabel: status

^^Tilbage til toppen^^

CREATE TABLE `status` (
`id` int NOT NULL,
`lastUpdated` datetime not null,
PRIMARY KEY (`id`)
);

Fil: Minlog.log

^^Tilbage til toppen^^

Entries sendt til MinLogRegistrationService formatteres og gemmes i en logfil.

Fil: MinlogTransfer.log

^^Tilbage til toppen^^

Entries sendt til MinLogRegistrationService formatteres og gemmes i en logfil.
Sendes fra dNSP/cNSP til Backend via Minlog Transfer

Tabel: whitelist_config (BRS)

^^Tilbage til toppen^^

-------------------
`pk`
`clientip` -- identification af client som kalder SOSI-GW

central:  operation

^^Tilbage til toppen^^

operation
Del af SOSI-GW audit logning.

Objektet indeholder informationen:
--------------------------------------
`pk`
`operation`

central:  sosigwgloballog

^^Tilbage til toppen^^

Auditlogning foretages lokalt på de enkelte servere (SOSGWLOG). Auditlogs persisteres lokalt i de decentrale databaser, der er installeret på alle SOSI-GW servere.
Med et konfigurerbart interval sender hver enkelt server opsamlede logs til den centrale log-merger database server (sosigwgloballog).

Til auditloggen logges følgende:
Proxyrequests Tidspunkt, NameID, Systemid, IP for afsender, endpoint, IDCardID (kortets) unikke id
Service requests Tidspunkt, NameID, Systemid, IP for afsender, operation, status (OK/ERR)
URL requests Tidspunkt, NameID, Systemid, IP for afsender, status (OK/ERR)

Del af SOSI-GW audit logning.

Objektet indeholder informationen:
--------------------------------------
`lpk` -- primær nøgle
`systemid` -- identifikation af serveren
`operation`
`cpr`
`moment` -- timestamp
`wsa` -- reference til "wsa" objektet som indeholder `wsato` og `wsaaction`
`clientip` -- identification af client som kalder SOSI-GW

central:  systemid

^^Tilbage til toppen^^

identifikation af serveren hvor logningen blev foretaget.
Del af SOSI-GW audit logning.

Objektet indeholder informationen:
--------------------------------------
`pk`
`systemid` -- identifikation af serveren

central:  wsa

^^Tilbage til toppen^^

Web Service Adressing (wsa)
Del af SOSI-GW audit logning.

Objektet indeholder informationen:
--------------------------------------
`pk`
`wsato` -- WSAddressing to, det endelige endpoint-URL
`wsaaction`

Tabelbeskrivelser

Cache: Token Cache

^^Tilbage til toppen^^

Id-kort distribueres over en fælles cache, der drives af multicasting på lokalnettet

Når et id-kort skal signeres med føderationens certifikat, kalder SOSI-GW STS’en. Herefter indsætter SOSI-GW id-kortet i en cache.
Ved efterfølgende kald fra anvendersystemet erstattes det medsendte id-kort med det signerede id-kort fra cachen, inden viderestilling til den relevante NSP service.

Tabel: clientip

^^Tilbage til toppen^^

DB: sosigwgloballog (fælles, delt, database til audit-logging)

CREATE TABLE `clientip` (
`pk` bigint(20) NOT NULL auto_increment,
`clientip` varchar(40) NOT NULL,
PRIMARY KEY (`pk`),
KEY `clientip_idx` (`clientip`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Tabel: operation

^^Tilbage til toppen^^

DB: sosigwgloballog (fælles, delt, database til audit-logging)

CREATE TABLE `operation` (
`pk` bigint(20) NOT NULL auto_increment,
`operation` varchar(32) NOT NULL,
PRIMARY KEY (`pk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Tabel: RUNTIMECONFIG

^^Tilbage til toppen^^

DB: sosigwlog (Lokal database til audit-logging og konfigurationsdata for hver SOSI-GW instans)

CREATE TABLE `RUNTIMECONFIG` (
`configpk` bigint(20) NOT NULL auto_increment,
`moment` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`configpk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Tabel: RUNTIMECONFIG_DATA

^^Tilbage til toppen^^

DB: sosigwlog (Lokal database til audit-logging og konfigurationsdata for hver SOSI-GW instans)

CREATE TABLE `RUNTIMECONFIG_DATA` (
`datapk` bigint(20) NOT NULL auto_increment,
`elmpk` bigint(20) NOT NULL,
`idx` int(11) NOT NULL,
`value` varchar(1000) default NULL,
PRIMARY KEY (`datapk`),
KEY `elmpk_idx` (`elmpk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Tabel: RUNTIMECONFIG_ELM

^^Tilbage til toppen^^

DB: sosigwlog (Lokal database til audit-logging og konfigurationsdata for hver SOSI-GW instans)

CREATE TABLE `RUNTIMECONFIG_ELM` (
`elmpk` bigint(20) NOT NULL auto_increment,
`configpk` bigint(20) NOT NULL,
`category` varchar(64) NOT NULL,
`elmkey` varchar(64) NOT NULL,
`valuecount` int(11) NOT NULL,
PRIMARY KEY (`elmpk`),
KEY `configpk_idx` (`configpk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Tabel: sosigwgloballog

^^Tilbage til toppen^^

DB: sosigwgloballog (fælles, delt, database til audit-logging)

CREATE TABLE `sosigwgloballog` (
`pk` bigint(20) NOT NULL auto_increment,
`systemid` int(11) NOT NULL,
`operation` int(11) NOT NULL,
`cpr` varchar(10) NOT NULL,
`moment` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`wsa` int(11) default NULL,
`clientip` int(11) default NULL,
PRIMARY KEY (`pk`),
KEY `moment_idx` (`moment`),
KEY `cpr_moment_idx` (`cpr`,`moment`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Tabel: SOSIGWLOG

^^Tilbage til toppen^^

DB: sosigwlog (Lokal database til audit-logging og konfigurationsdata for hver SOSI-GW instans)

CREATE TABLE `SOSIGWLOG` (
`lpk` bigint(20) NOT NULL auto_increment,
`systemid` varchar(64) NOT NULL,
`operation` varchar(32) NOT NULL,
`cpr` varchar(10) NOT NULL,
`moment` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`wsato` varchar(512) default NULL,
`wsaaction` varchar(512) default NULL,
`clientip` varchar(40) default NULL,
PRIMARY KEY (`lpk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Tabel: systemid

^^Tilbage til toppen^^

DB: sosigwgloballog (fælles, delt, database til audit-logging)

CREATE TABLE `systemid` (
`pk` bigint(20) NOT NULL auto_increment,
`systemid` varchar(64) NOT NULL,
PRIMARY KEY (`pk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Tabel: wsa

^^Tilbage til toppen^^

DB: sosigwgloballog (fælles, delt, database til audit-logging)

CREATE TABLE `wsa` (
`pk` bigint(20) NOT NULL auto_increment,
`wsato` varchar(512) default NULL,
`wsaaction` varchar(512) default NULL,
PRIMARY KEY (`pk`),
KEY `wsa_idx` (`wsato`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8CREATE TABLE whitelist_config (
service_key VARCHAR(50) NOT NULL,
service_type VARCHAR(20) NOT NULL,
cvr CHAR(8) NOT NULL,
comment VARCHAR(100) NULL,
PRIMARY KEY (service_key, service_type, cvr)
); -- ENGINE=InnoDB COLLATE=utf8_bin;

Teknologibeskrivelse

^^Tilbage til toppen^^

...