Color scheme: Light
You are here: start » sl » Dokumentacija » Integracija podatkov in dostop do podatkov » WKL Database Gateway » Navodila » Omejitev zastopnikov na njihove stranke

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:

RavenKjeKaj omeji
Pogled za vsak namenpodatkovna zbirkaVrstice (le stranke tega zastopnika) in stolpce (brez občutljivih polj)
Pravilo za pogledprehodLe ta pogled, samo za branje; drugih objektov zastopnik ne vidi
Osebni ključprehodEn 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

  1. Stranke dodelite zastopnikom v podatkovni zbirki, na primer v tabeli iam.vermittler_kunde (person_name, kunde_id), ki jo vzdržuje poslovna aplikacija.
  2. 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.

  3. 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). Pravice sql ne dodelite: z lastnim stavkom bi zastopnik dosegel vse, kar doseže prijava aliasa, tudi tabele za pogledom.

  4. 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.

  5. Preverjanje s ključem zastopnika: dokument storitve (/odata/v4/bestand/vermittler/) navaja le kunde_vertrag; poizvedba vrne le njegove stranke; na zahtevo za /odata/v4/bestand/dbo/kunde prehod odgovori z 404. 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.person je 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 na Persons: Impersonate in filtrirate po SUSER_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.

Sorodne teme

sl/wiki/data-conectivity/database-gateway/how-to/restrict-agents-to-their-customers.txt · Last modified: by Wolfgang van der Stille