Web API a ochrana dát
V rámci zavedenia všeobecnej funkcionality ochrany dát do systému ABRA Gen došlo v REST API k určitým zmenám, s ktorými je pri návrhu klientských aplikácii potrebné počítať, aby počas prevádzky nedochádzalo ku chybám. Tieto zmeny boli nevyhnutné pre plnohodnotnú implementáciu ochrany dát. (Viď FAQ Ako sa ochrana dát po zapnutí prejaví a kde všade sa prejaví?)
Pri práci s akýmikoľvek dátami všeobecne je potrebné brať do úvahy, že ich dostupnosť závisí na užívateľskom účte, ktorý je používaný na zasielanie HTTP požiadaviek - práva jednotlivých užívateľov sa obvykle líšia.
Vo východiskovom nastavení rozhrania sa pri prístupe prostredníctvom Web API nastavenia ochrany dát nezohľadňuje a je potrebné ho najprv zapnúť pomocou parametra dataProtection v konfiguračnom súbore APIServer.yaml.

Ochrana dát umožňuje zneprístupňovať dáta uložené v určitých poliach (položkách, fieldoch) business objektoch (BO) konkrétnym užívateľom. Aké polia BO sú zneprístupnené ktorým užívateľom, záleží na konfigurácii ochrany dát (nastavenie sa líši vrámci každej inštalácie). Chránené položky (zodpovedajúce fieldom business objektov) sa nastavujú v rámci definícií ochrany dát. Viac informácií nájdete v kapitole Ako začať - Ochrana dát a GDPR v ABRA Gen.
V REST API má vyššie uvedené dopad na výber, vytváranie i aktualizácie BO.
- pri výbere dát sú namiesto obsahu polí so zneprístupneným obsahom vrátené Informačné objekty signalizujúce, že sú dáta pre aktuálneho užívateľa neprístupné (skryté)
-
pri vytváraní a aktualizácii je pri pokuse o nastavenie hodnoty pole, ku ktorému užívateľ nemá prístup, buď vrátený status 403 alebo je príslušné pole ignorované (v závislosti od nastavenia režimu aplikácie zmien)
Užívateľom sa rozumie užívateľský účet použitý na zaslanie HTTP požiadavky.

Pri výbere dát je namiesto obsahu zneprístupnenej chránenej položky BO vrátený Informačný objekt (viď Tabuľka 1). To platí i pre pole obsahujúce výsledok výrazu (napr. pokiaľ vyberáme reťazec zložený z niekoľkých položiek BO, jedna z položiek je chránená a jej obsah je aktuálnemu užívateľovi neprístupný, je vrátený Informačný objekt).
Tabuľka 1 - Štruktúra Informačného objektu | ||
---|---|---|
Vlastnosť | Typ | Obsah |
|
|
|
"birthnumber": {
"@protected_value": true
}
V prípade, že je ktorákoľvek z položiek chránená (a aktuálnemu užívateľovi neprístupná), je súčasťou vráteného objektu pole @dataprotection s vlastnosťou query_fields, obsahujúce zoznam položiek, ktorých obsah nie je aktuálnemu užívateľovi prístupný (viď Tabuľka 2).
Tabuľka 2 - Štruktúra Objektu informácií o chránených fieldoch (@dataprotection) | ||
---|---|---|
Vlastnosť | Typ | Obsah |
|
|
Pole dopytu obsahujúce skryté/zneprístupnené dáta (string) |
"@dataprotection": {
"query_fields": [
{
"name": "birthnumber"
},
{
"name": "dateofbirth$date"
}
]
}

Pri vytváraní alebo aktualizáciách BO sú k dispozícii dva rôzne režimy aplikácie zmien - striktné a nestriktné.
-
Východiskový režim je striktný (pri pokuse o nastavenie zneprístupneného chráneného fieldu je vrátený status 403, požiadavka sa nevykoná). Vypnúť ho je možné nastavením query parametra strictdataprotection na hodnotu false.
POST /{connection}/{kolekce BO}?strictdataprotection=false
- V nestriktnom režime sú zneprístupnené chránené fieldy preskakované/ignorované (ich hodnoty nie sú do BO prepísané).

Boli pridané dva typy zdrojov, ktoré umožňujú načítať informácie o chránených položkách na business objektoch.

Získame ho zaslaním požiadavky
GET /{connection}/{kolekce BO}/meta/dataprotection
Vracia zoznam fieldov BO, ktoré môžu byť chránené.
Či sú dáta obsiahnuté v danom fielde konkrétneho záznamu danému užívateľovi prístupné alebo nie, záleží od nastavenia ochrany dát - môže sa pre jednotlivé záznamy líšiť.
Výsledkom dopytu na tento zdroj je pole Objektov chránených fieldov - viď tabuľky 3 a 4.
Tabuľka 3 - Štruktúra Objektu chránených fieldov (pole) | ||
---|---|---|
Vlastnosť | Typ | Obsah |
|
|
Obsahuje objekty jednotlivých chránených fieldov |
Tabuľka 4 - Štruktúra Objektu chráneného fieldu (prvok pole) | ||
---|---|---|
Vlastnosť | Typ | Obsah |
|
|
Názov chráneného fieldu BO |
{
"object_fields": [
{
"name": "dateofbirth$date"
},
{
"name": "birthnumber"
}
]
}

Získame ho zaslaním požiadavky
GET /{connection}/{kolekce BO}/{id}/meta/dataprotection
Požiadavka vracia zoznam chránených fieldov, ktoré sú na danom business objekte aktuálnemu užívateľovi zneprístupnené.
Výsledkom dopytu na tento zdroj je pole Objektov chráneného fieldu - viď tabuľky 5 a 6.
Tabuľka 5 - Štruktúra Objektov chránených fieldov (pole) | ||
---|---|---|
Vlastnosť | Typ | Obsah |
|
|
Obsahuje objekty jednotlivých chránených fieldov, ktorých obsah je aktuálnemu užívateľovi zneprístupnený |
Tabuľka 6 - Štruktúra Objektu chráneného fieldu (prvok pole) | ||
---|---|---|
Vlastnosť | Typ | Obsah |
|
|
Názov fieldu BO |
|
|
|
{
"object_fields": [
{
"name": "dateofbirth$date",
"accessible": false
},
{
"name": "birthnumber",
"accessible": false
}
]
}
Okrem ochrany dát v zmysle všeobecnej funkcionality ochrany dát, ktorá je predmetom tejto kapitoly, Web API zohľadňuje tiež efektívne práva aktuálneho užívateľa ku chráneným objektom. Viac informácií nájdete v kapitole Autentizácia a autorizácia, v sekcii Prístup ku chráneným objektom.