Omejitev zastopnikov na njihove stranke
Zavarovalni zastopnik dela na lastnem prenosniku. Brati sme podatke o strankah in pogodbah le svojih strank, brez zdravstvenih podatkov in bančnih računov, časovno omejeno in z možnostjo preklica kadar koli. Drugih strank sploh ne sme videti.
Pregled rešitve
Omejitev poteka na treh ravneh, vsaka tam, kjer jo je mogoče zanesljivo uveljaviti:
| Raven | Kje | Kaj omeji |
|---|---|---|
| Pogled za vsak namen | podatkovna zbirka | Vrstice (le stranke tega zastopnika) in stolpce (brez občutljivih polj) |
| Pravilo za pogled | prehod | Le ta pogled, samo za branje; drugih objektov zastopnik ne vidi |
| Osebni ključ | prehod | En alias, samo za branje, časovno omejen, od zunaj s kodo, posamično preklicljiv |
Pogled zastopnika prepozna iz konteksta seje: pri vsaki zahtevi z osebnim ključem prehod nastavi
SESSION_CONTEXT(N'wkl.person') na ime osebe, in sicer samo za branje (glejte
Omejitev po vrsticah).
Izvedba
- Stranke dodelite zastopnikom v podatkovni zbirki, na primer v tabeli
iam.vermittler_kunde(person_name,kunde_id), ki jo vzdržuje poslovna aplikacija. Ustvarite pogled, ki prikaže le dodeljene stranke in le sproščene stolpce:
CREATE VIEW vermittler.kunde_vertrag AS SELECT k.kunde_id, k.name, k.ort, v.vertrag_id, v.produkt, v.beginn, v.beitrag FROM dbo.kunde AS k JOIN dbo.vertrag AS v ON v.kunde_id = k.kunde_id WHERE EXISTS (SELECT 1 FROM iam.vermittler_kunde AS vk WHERE vk.kunde_id = k.kunde_id AND vk.person_name = CAST(SESSION_CONTEXT(N'wkl.person') AS nvarchar(256)));
Zdravstvenih podatkov in bančnih računov v pogledu ni, zato jih zastopnik ne more prebrati.
Ustvarite pravilo le za pogled, samo za branje (v skrbniški shrambi kot
ClientRules/ClientRuleItems):{ "Id": "vermittler", "Databases": [ "bestand" ], "Resources": [ "views" ], "Objects": [ "vermittler.kunde_vertrag" ], "Verbs": [ "GET" ], "ReadOnly": true }Pravilo dodelite vsaki osebi zastopnika (
PersonRules). Pravicesqlne dodelite: z lastnim stavkom bi zastopnik dosegel vse, kar doseže prijava aliasa, tudi tabele za pogledom.Vsakemu zastopniku izdajte en ključ z ukazom
issue-key, omejen na trajanje pogodbe:{ "person": "Max Vermittler", "label": "Laptop", "expiresAt": "2027-06-30T00:00:00Z", "readOnly": true, "databases": [ "bestand" ], "delivery": "mail" }Za dostop od zunaj velja pravilo “Ključi od zunaj le s kodo” iz navodila Dostop z zasebnih naprav.
- Preverjanje s ključem zastopnika: dokument storitve (
/odata/v4/bestand/vermittler/) navaja lekunde_vertrag; poizvedba vrne le njegove stranke; na zahtevo za/odata/v4/bestand/dbo/kundeprehod odgovori z404. S ključem drugega zastopnika se prikažejo njegove stranke.
Rezultat: Vsak zastopnik bere le podatke svojih strank, brez občutljivih polj in samo prek tega pogleda, dokler njegov ključ ne poteče.
Napotki
- Povezava poteka prek imena.
wkl.personje ime osebe v skrbniški shrambi; če osebo preimenujete, morate prilagoditi tudi dodelitev. Temu se izognete, če vsaki osebi date lastno prijavo SQL Server, alias nastavite naPersons: Impersonatein filtrirate poSUSER_SID()(1. primer pod Omejitev po vrsticah). - Stolpci v
$metadata. Pogled prikaže svoje stolpce vsem, ki ga smejo videti; stolpcev, ki jih ni v pogledu, ne vidi nihče. - Prebrani podatki. Kar je zastopnik prebral, ostane na njegovi napravi. Zato v pogled vključite le podatke, ki jih potrebuje za delo.