Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Integracija podatkov in dostop do podatkov » WKL Database Gateway » Navodila » Omogočanje lastnih stavkov SQL

Omogočanje lastnih stavkov SQL

Prepustno pot potrebujete, če želite podatkovni zbirki pošiljati nepreverjene stavke, na primer iz prepustnih poizvedb (pass-through) v Accessu, ki spreminjajo shemo, uporabljajo začasne tabele ali vsebujejo več stavkov.

Za spoje in združevanja več tabel, funkcije in množične spremembe povezanih tabel prepustne poti ni treba omogočiti: te stavke prehod preveri glede na pravila klicatelja in jih izvede, če alias dovoljuje preverjene stavke (privzeta nastavitev); glejte Preverjeni stavki.

Pregled rešitve

Prepustno pot omogočite na dveh mestih: pri viru podatkov (stikalo Durchreiche (prepustna pot) oziroma AllowPassThrough) in pri klicatelju. Kaj sme stavek narediti, določajo dovoljenja prijave, pod katero se izvaja:

KlicateljDodatno potrebuje
ključ storitve; račun Windows pri viru podatkov s Personen (osebe) = Servicepravilo, ki vir sql navaja izrecno (* ne zadošča)
prijava SQL Server; račun Windows ali osebni ključ z vpisano prijavo SQL Server pri viru podatkov s Personen = Impersonate; izbrana identiteta podatkovne zbirke vrste Login ali Ownpravilo za vir podatkov, ki ni samo za branje; stavek se izvaja s pravicami lastne oziroma skupne prijave. Seznami objektov v pravilu (Objects) ga ne omejujejo; meja so le pravice te prijave

Utemeljitev: Edina izjema: prepustna pot.

Izvedba

S skrbniško shrambo (aplikacija za upravljanje):

  1. Odprite Datenquellen (viri podatkov), označite vir podatkov, v obrazcu vklopite Durchreiche in se vrnite na seznam.
  2. Za klicatelje iz prve vrstice zgoraj: odprite Regeln (pravila), označite pravilo klicatelja in izberite Merkmal hinzufügen … (dodaj lastnost); ustvarite lastnost resource z vrednostjo sql; pravilo ne sme biti samo za branje. Glejte „Ustvarjanje pravila“ (dokumentacija aplikacije za upravljanje).
  3. Preverite: klicatelj s tem pravilom pošlje POST /api/v1/cf/<alias>/sql.json z {"sql": "SELECT SUSER_SNAME() AS anmeldung"} in prejme 200 z imenom prijave, pod katero se je stavek izvedel. Ta preizkus potrdi, da deluje nepreverjena pot: v preverjenem stavku prehod zavrne funkcije, ki opisujejo prijavo, SELECT 1 pa bi prešel tudi kot preverjen stavek. Za klicatelje iz druge vrstice velja isti preizkus z njihovo lastno prijavo; odgovor takrat navede to prijavo. Klicatelj brez ustreznega pravila prejme 403.

Brez skrbniške shrambe (konfiguracijska datoteka): vpišite oba vnosa in znova zaženite prehod:

{
  "Gateway": {
    "Databases": [
      { "Name": "fachdaten", "Provider": "sqlserver", "ConnectionString": "…",
        "AllowPassThrough": true }
    ],
    "Security": {
      "Clients": [
        { "Id": "auswertung", "Databases": [ "fachdaten" ],
          "Resources": [ "views", "sql" ], "Verbs": [ "GET", "POST" ], "ReadOnly": false }
      ]
    }
  }
}

Če pravilo navaja sql in je hkrati samo za branje, se prehod ne zažene.

Izklop. Izklopite stikalo Durchreiche vira podatkov (oziroma odstranite AllowPassThrough). S tem prepustno pot zaprete za vse klicatelje, tudi za tiste iz druge vrstice tabele: pri skrbniški shrambi z naslednjo zahtevo, pri konfiguracijski datoteki po ponovnem zagonu. Če želite pot odvzeti le posameznim klicateljem, odstranite sql iz njihovega pravila. To deluje le za klicatelje iz prve vrstice tabele; klicateljem iz druge vrstice jo odvzamete le s stikalom ali s pravilom samo za branje.

Napotki

  • Vir podatkov izberite premišljeno. Vsak prepuščeni stavek lahko naredi vse, kar sme prijava iz niza povezave vira: bere, piše in spreminja shemo. Pri viru podatkov, katerega prijava je lastnik sheme ali ima obsežna dovoljenja, prepustne poti ne vklopite.
  • Če se stavek izvaja pod identiteto osebe, ga omejuje le SQL Server. Za klicatelje iz druge vrstice zgornje tabele zadošča pravilo, ki ni samo za branje; vira sql ni treba navesti. Tak klicatelj lahko pošilja poljuben SQL in doseže vse, kar sme prijava osebe v SQL Serverju, ne več in ne manj. Pravila prehoda odločajo le še o tem, ali sme pošiljati stavke, ne pa katere. Če želite pisanje omogočiti izključno prek procedur, osebam (ali vlogi podatkovne zbirke, katere člani so) dodelite ta nabor dovoljenj:

    DovoljenjeNamen
    GRANT SELECT na poglede, ki se berejobranje prek pogledov, tudi filtrirano po vrsticah (glejte Omejitev po vrsticah)
    GRANT EXECUTE na procedure, ki pišejopisanje le prek preverjanj procedure
    brez INSERT, UPDATE, DELETE na tabelahsicer prepuščeni stavek piše mimo procedur
    pogledi, procedure in tabele z istim lastnikomtakrat SQL Server dovoljenj za tabele ne preveri še enkrat (veriženje lastništva); pogled in procedura dosežeta tabelo brez lastnega dovoljenja osebe
    brez CONTROL ali ALTER na shemi, brez IMPERSONATEkdor sme spreminjati shemo ali zamenjati identiteto, lahko obide vse zgornje omejitve

    Preverite tudi, kaj že sme vloga public podatkovne zbirke: vsako dovoljenje te vloge velja za vsako osebo. Zamenjava identitete tudi ne izključi dovoljenj, dodeljenih prek skupin: dovoljenja skupin Windows veljajo tudi po zamenjavi identitete. Skupina z db_datawriter vsakemu članu omogoči pisanje v vse tabele.

  • Besedilo stavka je zapisano v revizijski sledi, vrednosti parametrov pa ne.
  • Če prehod ponuja naslov za lastne stavke, ga upravičenim klicateljem navede v dokumentu metapodatkov; gonilnik ODBC ga tako najde sam.

Sorodne teme

  • „Povezava vira podatkov“ (dokumentacija aplikacije za upravljanje)
  • „Nastavitev prepustnih poizvedb“ (dokumentacija gonilnika ODBC za OData)
sl/wiki/data-conectivity/database-gateway/how-to/enable-own-statements.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille