Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Integracija podatkov in dostop do podatkov » WKL Database Gateway » Referenčni priročnik » HTTP: skrbništvo

HTTP: skrbništvo

Skrbniški vmesnik pod /admin/v1/ ponuja skrbniško shrambo kot množice OData in ukaze; aplikacija za upravljanje (Access) in razred VBA DbGwClient temeljita na njem.

Sintaksa

S skrbniško shrambo prehod njene tabele ponuja pod /admin/v1/: kot množice OData, ki jih program za upravljanje poveže kot tabele (Access prek gonilnika ODBC tega prehoda, z obrazci, ki jih za tabele tako ali tako ima), in kot ukaze za vse, kar ni sprememba ene vrstice.

OblikaNaslovNamen
ODataGET /admin/v1/odata/, $metadata, {Menge}, {Menge}({Schlüssel}), {Menge}/$countBranje z $select, $filter, $orderby, $top, $skip, $count
ODataPOST /admin/v1/odata/{Menge}, PATCH in DELETE na {Menge}({Schlüssel})Ustvarjanje (201), spreminjanje (200, If-Match s prebrano različico), brisanje (204)
UkazPOST /admin/v1/issue-keyIzdaja osebnega ključa: enkrat v telesu, kot enkratna povezava ali kot enkratna povezava po pošti
UkazPOST /admin/v1/activate-keyOmogočitev ključa na zahtevo za določen čas (id, hours)
UkazPOST /admin/v1/deactivate-keyTakojšnja prekinitev omogočitve ključa na zahtevo (id)
UkazPOST /admin/v1/save-sign-in-ruleUstvarjanje pravila prijave z vsemi omrežji, osebami in skupinami v eni spremembi ali zamenjava v celoti (id)
UkazPOST /admin/v1/explain-sign-inKako pravilnik prijave odloča za osebo glede na način prijave in izvor, z ustreznimi pravili
UkazPOST /admin/v1/sign-in-profileKaj je za osebo pri prijavi običajno v izbranem obdobju (profil prijav)
UkazPOST /admin/v1/test-connectionOdpre vir podatkov; odgovor: dosegljiv, trajanje, različica, podatkovna zbirka, prijava ali sporočilo strežnika s številko napake in vrsto napake (preizkus povezave in račun storitve)
UkazGET /admin/v1/service-accountRačun, s katerim se prehod s prijavo Windows prijavi v podatkovne zbirke (preizkus povezave in račun storitve)
UkazPOST /admin/v1/reload-catalogZavrže katalog enega (dataSource) ali vseh virov podatkov; naslednja zahteva ga prebere znova
UkazGET /admin/v1/check-storePreveri shrambo kot pri ponovnem nalaganju, ne da bi kar koli spremenil
UkazPOST /admin/v1/backup-storePo ena preverjena kopija shrambe in njene datoteke dnevnikov v mapo sicherungen poleg nje, ime po času (gateway-LLLLMMDD-hhmmss.db in gateway-LLLLMMDD-hhmmss-logs.db); odgovor file, schemaVersion, bytes, logFile, logBytes (zadnja dva prazna brez datoteke dnevnikov). Mesto določi prehod, zahteva ne navede poti. Dve varnostni kopiji v isti sekundi: druga dobi 409. Kopiji ne vsebujeta glavnega ključa
UkazPOST /admin/v1/reseal-storeKot istoimenski ukaz na računalniku
UkazPOST /admin/v1/enroll-totpNastavitev 2FA (dvostopenjskega preverjanja identitete) za osebo (person, delivery: key, link ali mail); konča njene seje, pri mail šele ob prevzemu. Stran enkratne povezave prikaže naslov za aplikacijo Authenticator kot kodo QR (SVG v strani, nič se ne nalaga naknadno) in poleg njega ključ za ročni vnos
UkazPOST /admin/v1/reset-totpOdstrani 2FA osebe in konča njene seje
UkazPOST /admin/v1/set-geoip-sourceIzbira vira geolokacijske zbirke
UkazPOST /admin/v1/update-geoipGeolokacijsko zbirko takoj prenese iz izbranega vira (strežnik potrebuje dostop do interneta)
UkazPOST /admin/v1/upload-geoipPrevzame datoteko geolokacijske zbirke, ki jo prinese klicatelj; telo = datoteka
UkazPOST /admin/v1/export-loadDnevnik obremenitve kot datoteka za proizvajalca, brez oseb, izvora in vrednosti
UkazGET /admin/v1/update-databasesPodatkovne zbirke modula za posodobitve z nastavitvami ter izpuščene konfiguracije
UkazPOST /admin/v1/update-statusStanje ene podatkovne zbirke: odprti paketi z rokom, blokirajoče in neznane seje, odstopanja (posodobitve podatkovnih zbirk)
UkazPOST /admin/v1/update-historyZaključeni paketi ene podatkovne zbirke s koraki, najnovejši najprej
UkazPOST /admin/v1/confirm-update, dismiss-update, retry-updatePotrdi čakajoči paket; neuspeli ali zavrnjeni paket opusti ali ga znova namesti
UkazPOST /admin/v1/move-update-deadline, cancel-update-noticePremakne rok napovedanega paketa; prekliče napoved
UkazPOST /admin/v1/upload-updatePostavi paket v vhodno mapo podatkovne zbirke in ga takoj sprejme; telo = datoteka
StranGET/POST /admin/v1/pickup/{Kennung}Enkratna povezava; brez prijave, identifikator je dokaz

Parametri

Zakaj dve obliki. Kar je seznam, je množica: program za upravljanje zanjo ne potrebuje lastne kode. Kar vrne ključ ali vpliva na več kot eno vrstico, je ukaz: množica, ki jo Access po ustvarjanju prebere znova, bi morala pravkar izdani ključ bodisi znova izdati bodisi izgubiti.

Pripravljeni odjemalci. „Pregled aplikacije WKL Database Gateway Manager in razreda VBA“ (dokumentacija aplikacije za upravljanje) uporablja vse množice in ukaze (prijava s ključem ali računom Windows in z 2FA); „DbGwClient – razred VBA za podatkovni prehod“ (dokumentacija aplikacije za upravljanje) kliče ukaze iz lastnih aplikacij VBA.

Množice

Množice. Ustrezajo tabelam shrambe ena proti ena; seznami pravila ali ključa so vrstice podrejene množice s ključem nadrejene vrstice.

MnožicaKljučOpomba
DataSourcesNameName sledi pravilu poimenovanja aliasa. Povezava se poda bodisi kot niz Connection (samo za pisanje, pri branju vedno prazen) bodisi kot lastnosti povezave ConnectionProperties, iz katerih ponudnik sestavi niz; pri ustvarjanju eno od obojega; pri spreminjanju vrednost nadomesti zapečateni niz, prazna vrednost
ga ohrani. Provider, ProviderVersion in ProviderOptions (objekt JSON iz besedil) kot v konfiguraciji. Stikala AllowPassThrough, AllowCheckedStatements (privzeto true), AllowSqlLogins kot v konfiguraciji
Providers, ProviderPropertiesId, PackageVersion; Provider, PackageVersion, Scope, Name, LanguageSamo za branje: nameščeni paketi ponudnikov in lastnosti, ki jih vsak opiše za svojo povezavo, glejte lastnosti povezave ponudnika
DataSourceTablesDataSource, Setting, PatternSetting je row_stamp ali keyless_write; samo ustvarjanje in brisanje
ImpersonationDenyRules, ImpersonationDenyItemsId; RuleId, Item, ValueItem: login, role, from, except_from
ClientRules, ClientRuleItemsId; RuleId, Item, ValueItem: database, resource, verb, object, except_object (pravice po objektu; vnos v napačni obliki preverjanje zavrne z 422). Holders šteje, kdo ima pravilo (osebe, računi in skupine Windows, prijave SQL Server). RuleVersion (samo za branje) je različica, ki jo navede AuditEntries.AccessRule; če se razlikuje od različice v vnosu, se je pravilo od takrat spremenilo
WindowsAccounts, SqlLoginsAccount, Client; Login, ClientDodelitve pravilom
Persons, PersonRulesId; PersonId, ClientSqlLogin (lastna prijava SQL Server osebe, za Impersonate z osebnim ključem), WindowsAccount (ime ali SID, razreši se pri pisanju), Email (naslov brez prikaznega imena, predlog za vabilo po pošti; sicer 400), DefaultRole (privzeta identiteta), SecondFactor (stanje 2FA: none, pending, active), LeftAt (izstop iz organizacije, nastavi ga skrbništvo, tudi vnaprej). Samo za branje: LastSignInAt in LastSignInMethod, zadnja uspešna prijava (način kot v dnevniku prijav, na primer personalKey, windows); prehod jo zapiše enkrat na minuto, ostane tudi po roku hrambe dnevnika prijav in ne spremeni različice osebe. Za prikaz: Status/StatusKind, SecondFactorText/SecondFactorKind, števila Rules, ValidKeys, OpenSessions, ExpiringKeys (veljavni ključi, ki potečejo v 14 dneh); PersonRules.Person navede ime. DELETE osebe, ki je pustila sledi (ključi, seje, prijave, obremenitev ali lastne spremembe), prehod zavrne s 422; onemogočite jo z Enabled = false (Hramba in brisanje)
PersonalKeys, PersonalKeyItemsId; KeyId, Item, ValueIzdani samo z issue-key. Spremenljivo: Label, ReadOnly, TotpExempt (samo pri ključu samo za branje), ExpiresAt (ne dlje od najdaljše veljavnosti od izdaje), OnDemand in Revoked (zaklepa ni mogoče odpraviti). ActiveUntil nastavljata samo activate-key/deactivate-key. Za prikaz: Status („gültig“ (veljaven), „läuft in 5 Tagen ab“ (poteče čez 5 dni), „abgelaufen“ (potekel), „gesperrt“ (zaklenjen), „ruht“ (miruje), „frei bis 15:30 UTC“ (omogočen do 15.30 UTC)), StatusKind, ExpiresInDays, CanRevoke, CanActivate
SignInFileRulesPositionSamo za branje. Pravila prijave, ki so še v konfiguracijski datoteki (Gateway:Security:SignInRules). S skrbniško shrambo ne veljajo: služila so le kot začetna vrednost ob ustvarjanju shrambe, prehod pa ob zagonu nanje opozori. Polja: Position (n kot v file:n), Scope, Method, Effect, Mode, Label, Conditions (uporabljeni seznami kot besedilo, na primer ExceptFrom: 10.0.0.0/8; ExceptHours: Mon-Fri 06:00-20:00), Exceptions (število), RuleVersion, InForce (s shrambo vedno false). Za čiščenje vnose odstranite iz datoteke
SignInRules, SignInRuleItemsId; RuleId, Item, ValuePravilnik prijave; Item: from, except_from, person, except_person (vrednost: Id osebe), windows_group, except_windows_group (ime ali SID), country, except_country (koda države), operator, except_operator (operater omrežja, AS3320), client, except_client (vrsta programa), hours, except_hours (časovno okno). RuleVersion pravila (samo za branje) je različica, ki jo navajata dogodki prijave in explain-sign-in; če se razlikuje od različice v dogodku, se je pravilo od takrat spremenilo. Mode pravila: Enforce (privzeto) ali Report (Preizkus pravila). Osebo, ki ne obstaja, ali neveljavno kodo države, operaterja omrežja ali časovnega okna preverjanje zavrne z 422
SignInRuleExceptions, SignInRuleExceptionItemsId; ExceptionId, Item, ValueČasovno omejene izjeme pravila: RuleId, ValidUntil (UTC, prazno = brez konca), Label, LapseLogged (samo za branje: konec je v dnevniku sprememb); Item: person (vrednost: Id osebe), windows_group, country, from, operator, client, hours. Izjemo brez značilnosti in brez konca preverjanje zavrne z 422. Kdor premakne ValidUntil, ponastavi LapseLogged
SettingsNametotp_session_hours, self_service_key_days (samopostrežba), totp_enrol_hours, max_activation_hours (ključi na zahtevo), installation_name (ima prednost pred Gateway:Store:TotpIssuer, glejte konfiguracijo), mail_link_hours (veljavnost enkratne povezave po pošti, 1–720 ur); drugo ime je zavrnjeno, neveljavna vrednost z 422
MailTemplatesIdPredloge HTML za vabila po pošti, enake za vse skrbnike: Name, Purpose (KeyPickup, TotpEnrollment, Welcome), Subject, Html; Builtin in ChangedAt nastavi prehod. Ograde samo iz {{Person}}, {{Link}}, {{GueltigBis}}, {{Dienst}}, {{Absender}}, {{Organisation}}; KeyPickup in TotpEnrollment potrebujeta {{Link}}; največ 256 KB. Kršitev: 400 z vsemi razlogi. Tri vgrajene predloge (ena za vsak namen) je mogoče nadomestiti, ne pa preimenovati (400) ali izbrisati (422). Logotip predloga vključi kot src="cid:logo"; odjemalec ga pripne s tem identifikatorjem. Prehod ne pošilja pošte
SessionTokensIdSeje 2FA; samo Revoked (dokončno) in brisanje; Role navede vezano identiteto. Za prikaz: Status („offen“ (odprta), „abgelaufen“ (potekla), „beendet“ (končana)), StatusKind, CanEnd. EndReason navede, kako se je seja končala: ended (končana v skrbništvu), person-locked (oseba zaklenjena), key-revoked (ključ seje preklican), factor-renewed (drugi faktor na novo nastavljen), factor-reset (drugi faktor odstranjen), expired (potekla, ne da bi bila prej končana); EndedBy navede, kdo jo je končal, tako kot ga navede dnevnik sprememb (Konsole za ukaz revoke-key). Prehod seje konča, namesto da bi jih izbrisal; seje, končane pred to različico, imajo obe polji prazni
DatabaseIdentities, IdentityAssignmentsId; IdIdentitete podatkovne zbirke. Kind: Login, Own, Alias; skupno prijavo prehod ob shranjevanju preveri s preizkusnim preklopom. Dodelitev navede natanko en vir: PersonId, WindowsAccount ali KeyId; Source, DataSource in Role doda prehod
DataSourceObjectsDataSource, Schema, NameSamo za branje. Objekti v katalogu vsakega vklopljenega vira podatkov, zapisani tako, kot jih navede pravilo: Kind je vrsta pod Resources (tables, views, functions, procedures), Pattern vnos pod Objects (schema.name). Predlogi za program za upravljanje; vir podatkov, katerega katalog trenutno ni berljiv, na seznamu manjka
UpdateSettingsDatabaseNastavitve delovanja posodobitev podatkovnih zbirk za posamezno podatkovno zbirko: Expand in Contract (automatic ali confirm), NoticeMinutes (0–10080), SessionWindowMinutes (1–1440), poti sporočanja NotifyEventLog (privzeto vklopljeno), NotifyFile in NotifyEmail (privzeto izklopljeno, glejte sporočila) s prejemniki NotifyEmailTo (poštni naslovi, ločeni z ;; NotifyEmail brez prejemnika storitev zavrne z 400), hramba varnostnih kopij BackupKeepCount (1–1000, privzeto 10) in BackupKeepDays (0–3650, privzeto 30); ChangedAt nastavi storitev. Izpuščeno polje dobi privzeto vrednost, vrednost zunaj teh obsegov storitev zavrne z 422. Brez vnosa in po njegovem izbrisu veljajo privzete vrednosti
SignInHours, SignInOrigins, SignInEvents, SignInFindings, SignInAdvice, GeoIpFiles, GeoIpSourceSamo za branje; glejte Dnevnik prijav in geolokacijska zbirka
LoadShapes, LoadHours, LoadPersons, SlowRequests, LoadFindings, LoadAdviceSamo za branje; glejte Dnevnik obremenitve
ChangeLogIdSamo za branje
AuditEntriesSequenceSamo za branje. Revizijska sled (`Gateway:AuditLog`): dostopi (Kind = Zugriff: čas, klicatelj, alias, vir, metoda, rezultat, status, korelacija) in lastni stavki (Anweisung, z besedilom). S skrbniško shrambo iz datoteke dnevnikov, tudi po ponovnem zagonu, za Gateway:AuditLog:Days; Sequence je takrat številka v datoteki. Na poizvedbo množica vrne največ najnovejših 20.000 vnosov, ki ustrezajo obdobju (At) in osebi (Person eq) filtra. Brez shrambe zadnjih 10.000 vnosov od zagona, stavki skrajšani na 4.000 znakov. Person in KeyId navedeta osebo in osebni ključ klica, da je mogoče filtrirati po njiju. Pri zavrnitvi s pravilom prijave SignInRule navede oznako in različico tega pravila (2@8da4235bc439aac0, glejte Podlaga odločitve). Target navede, kaj je zahteva naslovila: pot in poizvedbo v berljivi obliki (/odata/lager/dbo/Artikel(17), /odata/lager/dbo/Artikel?$filter=Nr eq 17), največ 2.000 znakov, brez $skiptoken; poizvedbe v telesu zahteve ne vsebuje. Pri odgovorjenem dostopu do tabele ali pogleda AccessRule navede pravilo dostopa, ki ga je dovolilo: ime pravila in različico (lager-lesen@3f2a8c41d07b9e65, RuleVersion iz ClientRules); alias navede vnos sam. Vnosi pred to razširitvijo imajo obe polji prazni
ServiceStatusIdSamo za branje, ena vrstica: obremenitev prehoda od zagona iz pomnilnika – RequestsLastMinute, RequestsLastFiveMinutes, InFlight, MedianMilliseconds, P95Milliseconds, DeniedLastFiveMinutes (401/403/429; brez odgovora na zahtevo brez prijavnih podatkov, s katero se začne vsaka prijava Windows), ErrorsLastFiveMinutes (≥ 500), Saturated (več kot 50.000 zahtev v petih minutah: števila so spodnja meja), omejitev zahtev (RateLimitPerCaller, RateLimitWindowSeconds, prazno brez omejitve) in iz shrambe OpenSessions, ValidKeys, ExpiringKeys (14 dni). Brez preverjanj pod /health

Polja za prikaz. Status je besedilo za prikaz, StatusKind ena od petih vrst (ok, warn, bad, info, neutral), po kateri program za upravljanje obarva oznako; besedilo je vedno prikazano, barva nikoli sama. Polja Can… povedo, ali je ukaz za vrstico trenutno mogoč. Prehod jih izračuna ob branju po uri shrambe; so samo za branje (pisanje 400) in niso del različice vrstice, saj se ključ ne spremeni zato, ker mine dan. Prehod jih izračuna sam, ne Access, ker se izraz, kot je IIf(…), v poizvedbi Accessa ne prevede prek gonilnika ODBC, podatkovna mreža v strežniškem načinu pa bi se tedaj vrnila k počasnemu branju prek Accessa.

Vsaka množica ima lastnost Version (osem bajtov SHA-256 prek shranjenih vrednosti vrstice, vključno z zapečatenimi) kot različico vrstice. Kdor spremeni vrstico, ki jo je po branju spremenil nekdo drug, prejme 412; Access prikaže običajno sporočilo o konfliktu pri pisanju. Vrednosti, ki jih množica prikazuje iz druge množice, niso del različice vrstice: število Rules osebe, Holders pravila dostopa, ime Person dodelitve, ključa ali seje. Novo pravilo za osebo ali njeno novo ime zato ne povzroči konflikta pri pisanju v urejanju, ki je v tistem trenutku odprto. Številke so int (Edm.Int32), ne bigint: Access bigint brez svoje možnosti za velika števila prikaže kot besedilo in nato zavrne pogoj, kot je Id = 3. Besedilo filter primerja brez razlikovanja velikih in malih črk, tako kot SQL Server in kot shramba primerja imena.

Štetje, največja vrednost in združevanje

Skrbništvo bere vrstice in jih šteje, ne združuje pa jih. Možnost $apply zavrne z 400, njegov dokument metapodatkov pa združevanja ne deklarira (Aggregation.ApplySupported manjka). Gonilnik ODBC se po tej deklaraciji odloči, kaj pošlje skrbništvu (prevod v podrobnostih: „Podprti SQL“ v dokumentaciji gonilnika ODBC):

Stavek, ki ga Access preda gonilnikuZahteva skrbništvuRezultat
SELECT COUNT(*) FROM "Množica", na primer iz DCount("*", "Množica")Množica/$countŠtevilo vrstic
SELECT COUNT(*) FROM "Množica" WHERE …, na primer iz DCount("*", "Množica", "Id > 4711")Množica/$count?$filter=…Število ustreznih vrstic
SELECT … FROM "Množica" WHERE … ORDER BY …Množica?$select=…&$filter=…&$orderby=…Vrstice
MAX, MIN, SUM, AVG, COUNT(stolpec), GROUP BY, HAVING, DISTINCT, na primer iz DMax, DMin, DSum, DAvg, DCount("stolpec", …) ali iz poizvedbe s skupnimi vrednostmiNobenaGonilnik stavek zavrne z 42000 („Der Dienst kuendigt die Gruppierung ueber $apply … nicht an“: storitev združevanja ne napoveduje); Access javi napako 3146 (klic ODBC ni uspel)

Za štetje uporabite DCount("*", …), ne DCount("stolpec", …): v zahtevo za štetje se pretvori samo COUNT(*), s pogojem ali brez njega.

Največjo vrednost stolpca dobite kot prvo vrstico poizvedbe, razvrščene padajoče. Prek HTTP, na primer z lastnim dostopom HTTP skrbniškega programa: GET /admin/v1/odata/SignInFindings?$select=Id&$orderby=Id desc&$top=1. Pri SignInFindings je to redko potrebno: če želite šteti samo nove ugotovitve, si zapomnite največji prebrani Id in pošljite SignInFindings/$count?$filter=Id gt 4711 (glejte Ugotovitve pravil prijave).

Preverjanje in dnevnik sprememb

Vsaka sprememba se pred uveljavitvijo preveri. Sprememba je transakcija: primerjava različice, pisanje, vpis v dnevnik sprememb in nato preverjanje celotne vsebine, enako kot pri ponovnem nalaganju, vključno s pravili, ki jih navaja oseba. Če vsebina preverjanja ne opravi, se vse razveljavi, odgovor 422 pa navede vsako napako. Brez tega preverjanja bi bilo napačno zapisano v shrambi pravilo, vsako ponovno nalaganje bi ga zavrnilo, prehod pa bi neopazno ostal pri stari različici, čeprav bi vmesnik sporočil uspeh. Uveljavljena sprememba velja takoj (prehod shrambo znova naloži, ne da bi čakal na PollSeconds). Pri kršitvi omejitve same shrambe (neznan Item, podvojen ključ, podrejeni vnos brez nadrejene vrstice) prehod prav tako odgovori z 422 in sporočilom SQLite.

Dnevnik sprememb. V isti transakciji kot sprememba: čas, klicatelj (Person (Kennung), ime ključa storitve, račun Windows ali Einrichtung), dejanje (insert, update, delete, command), množica ali ukaz, ključ, vrednosti prej in potem kot JSON. Niz povezave in lastnosti povezave se pojavijo le kot „neu gesetzt“ (na novo nastavljen), ključ nikoli. Razveljavljena sprememba ne pusti vnosa, uveljavljena pa ga ima vedno. Podrejeni vnosi, ki se izbrišejo skupaj z nadrejeno vrstico, niso navedeni posamezno.

Pravica in prvi skrbnik

Pravica. Pravilo mora vir admin navesti izrecno; * ne zadošča, tako kot pri pravici sql. Databases pravila ne omejujejo skrbništva, saj to ne pripada nobenemu viru podatkov. Pravilo za skrbništvo:

{ "Id": "verwaltung", "Resources": [ "admin" ], "Verbs": [ "*" ] }

Z "ReadOnly": true isto pravilo bere skrbništvo in preverja povezave, ne spremeni pa ničesar (na primer za revizijo):

{ "Id": "revision", "Resources": [ "admin" ], "Verbs": [ "*" ], "ReadOnly": true }

V skrbništvo se je mogoče prijaviti z osebnim ključem in računom Windows, s ključem storitve le pri Gateway:Store:RequireAdminTotp = false, in če nobeno pravilo prijave za skrbništvo ne zahteva 2FA (nova shramba tako pravilo vsebuje; sicer 403 „… gehoert zu keiner Person“ (… ne pripada nobeni osebi), ker ključ storitve ne more imeti 2FA), ne pa s prijavo SQL Server: njeno geslo SQL Server preveri na viru podatkov, skrbništvo pa ne pripada nobenemu viru. Osebni ključ, ki je omejen na vire podatkov, skrbništva nikoli ne doseže; ključ samo za branje ga kvečjemu bere. Vsak naslov vmesnika odgovarja samo prek zaščitene povezave: HTTPS, zaupanja vreden posrednik z X-Forwarded-Proto: https ali zahteva z lastnega računalnika. Sicer 403, tudi za enkratno povezavo.

Prvi skrbnik. Skrbništvo doseže le, kogar navaja pravilo z admin. Prvo takšno osebo ustvari ukaz init-admin na strežniku, ne zahteva prek omrežja, glejte Prvi skrbnik in reševanje.

Enkratne povezave

Enkratna povezava. issue-key z "delivery": "link" namesto ključa vrne naslov, veljaven Gateway:Store:PickupMinutes (privzeto 15 minut, glejte konfiguracijo). Stran na tem naslovu ob odprtju prikaže le gumb; šele njegov POST prikaže ključ, enkrat. Tako poštni program ali klepet, ki povezave odpira za predogled, ključa ne prevzame vnaprej. Čakajoči ključ je samo v pomnilniku procesa, nikoli na disku; ponovni zagon odprte povezave razveljavi. Prevzem je zapisan v dnevniku sprememb (Einmal-Link, z izvorom).

<a id=„enkratna-povezava-po-e-posti“></a>Enkratna povezava po pošti. issue-key in enroll-totp z "delivery": "mail" vrneta naslov za vabilo po pošti (person, delivery, link, linkExpiresAt), veljaven mail_link_hours oz. MailLinkHours (privzeto 72 ur). Drugače kot navadna enkratna povezava:

  • Noben ključ ne čaka. Shramba hrani nalogo in kontrolno vsoto SHA-256 povezave, ne ključa. Ključ oz. faktor 2FA nastane šele ob prevzemu; do takrat obstoječi faktor osebe ostane nespremenjen. Kopija datoteke shrambe zato ničesar ne odpre.
  • Preživi ponovni zagon prehoda.
  • Natanko enkrat. Drugo odprtje prikaže „bereits abgeholt am … um …“ (že prevzeto dne … ob …) (410) s prošnjo, naj to sporočijo skrbništvu, če prejemnik tega ni storil sam; potekla ali neznana povezava 404.
  • Odgovor brez identifikatorja ključa: ključ obstaja šele po prevzemu; takrat se pojavi v PersonalKeys. expiresAt pred koncem povezave prehod zavrne z 400.
  • Dnevnik: izdaja kot ukaz z delivery: mail, prevzem kot issue-key oz. enroll-totp z akterjem Einmal-Link von <Aussteller> in izvorom.
  • Če naloge ob prevzemu ni več mogoče izpolniti (oseba odstranjena), stran to prikaže z 409; povezava takrat ostane neporabljena.
{ "person": "Erika Muster", "label": "Excel Bericht", "expiresAt": "2027-03-31T00:00:00Z",
  "readOnly": true, "databases": [ "fachdaten" ], "from": [ "10.0.0.0/8" ], "exceptFrom": [],
  "delivery": "key" }

Odgovori

Za vse množice in ukaze skrbništva:

OdgovorPomen
401 „Es wurde keine gueltige Anmeldung vorgelegt.“ (Predložena ni bila nobena veljavna prijava.)Ni ključa ali neznan ključ
403 „Die Verwaltung ist nur ueber HTTPS oder vom eigenen Rechner erreichbar.“ (Skrbništvo je dosegljivo samo prek HTTPS ali z lastnega računalnika.)Nezaščitena povezava
403 „Die Verwaltung ist fuer diesen Aufrufer nicht freigegeben.“ (Skrbništvo za tega klicatelja ni odobreno.)Ni pravila z admin; pravilo samo za branje pri spremembi; ključ omejen na vire podatkov
400Neznano polje, manjkajoče obvezno polje, množica brez tega dejanja (ustvarjanje PersonalKeys, spreminjanje ChangeLog), odprava zaklepa, prepozen potek
412Vrstica je bila od branja spremenjena
422Vsebina po spremembi neveljavna ali omejitev shrambe; sporočilo navede razlog

Preizkus povezave in račun storitve

test-connection. Telo { "dataSource": "fachdaten" }. Odgovor navede dataSource, reachable, elapsedMilliseconds, productVersion, database in login; če vir podatkov ni dosegljiv, še message (sporočilo strežnika v njegovem jeziku), number in failure. Preizkus odpre povezavo enkrat, brez bazena povezav, in sporoči odgovor strežnika; gonilnik podatkovne zbirke povezave pri tem ne poskusi odpreti znova. Samo po napaki 233 („na drugem koncu cevi ni procesa“) jo takoj odpre še enkrat: SQL Server v istem računalniku zavrnjeno prijavo prek Shared Memory ali Named Pipes včasih sporoči tako namesto z 18456. Če strežnik znova odgovori z 233, res ni dosegljiv:

{ "dataSource": "fachdaten", "reachable": false, "elapsedMilliseconds": 7,
  "message": "Login failed for user 'NT SERVICE\\Wkl.Data.Gateway'.", "number": 18456, "failure": "Login" }

number je številka podatkovne zbirke (pri SQL Server številka napake); prazno, če je ni. failure napako razvrsti neodvisno od jezika strežnika; program po njej pojasni vzrok in predlaga rešitev:

failurePomenSQL Server, primeriRešitev
LoginPrijava zavrnjena: neznana prijava, napačno geslo, zaklenjena, potekla18456, 18452, 18470, 18486–18488Prijavo v SQL Server ustvarite ali omogočite (skrbništvo podatkovne zbirke)
DatabasePrijava sprejeta, podatkovna zbirka manjka ali zanjo ni dostopna4060, 4064, 911Ustvarite uporabnika v podatkovni zbirki ali preverite ime zbirke
PermissionPovezano, manjka dovoljenje229, 230, 262, 297, 300, 916Podelite dovoljenje v podatkovni zbirki
NetworkStrežnik ni dosežen: ime, vrata, ustavljena storitev, požarni zid, zavrnjeno šifriranje2, 26, 53, 258, 10060, 10061, resnost od 20Preverite ime, vrata in požarni zid
TimeoutNi odgovora v roku-2Obremenitev strežnika, Connect Timeout
UnreadableStrežnik odgovori, a podatkovne zbirke ne more brati605, 823, 824, 942, 945Preverite pogon, znova zaženite strežnik podatkovne zbirke
ConfigurationNastavitve neuporabne: niz zavrnjen, ponudnik ni uporaben–Popravite povezavo oz. ponudnika vira podatkov
OtherDruga napaka–Preberite message in number

Ponudnik, zgrajen za starejšo različico specifikacije vmesnika ponudnika, number in failure ne vrne; ostaneta prazna.

service-account. Brez telesa. Račun, s katerim se vir podatkov s prijavo Windows (Integrated Security) prijavi v podatkovno zbirko – ime, za katero skrbništvo podatkovne zbirke ustvari prijavo:

{ "account": "NT SERVICE\\Wkl.Data.Gateway", "kind": "Virtual",
  "networkAccount": "FIRMA\\SRV-DATEN$", "domain": "FIRMA" }
PoljeVsebina
accountRačun storitve; tako ga vidi SQL Server na istem računalniku
kindVirtual (navidezni račun storitve NT SERVICE\…), NetworkService, LocalSystem, LocalService, Managed (skupinsko upravljani račun storitve DOMENA\ime$) ali User
networkAccountTako ga vidi SQL Server na drugem računalniku: pri Virtual, NetworkService in LocalSystem računalniški račun DOMENA\RAČUNALNIK$, pri domenskem računu ta sam. Prazno, če računa ne pozna noben drug računalnik (računalnik brez domene, LocalService, lokalni uporabniški račun) – prijava Windows tedaj uspe le pri SQL Server na istem računalniku
domainDomena računalnika (ime NetBIOS); brez domene prazno

Kaj SQL Server potrebuje za ta račun, je opisano v Namestitev – napotki.

Ključi na zahtevo, pravila prijave, pojasnilo

Ključi na zahtevo. issue-key z "onDemand": true izda ključ, ki miruje, dokler ga skrbništvo ne odobri. activate-key z { "id": "k…", "hours": 4 } ga odobri; nova odobritev nadomesti tekočo. Zavrnjen (400, sporočilo navede razlog) je ključ, ki ne velja na zahtevo, je zaklenjen ali potekel, trajanje nad max_activation_hours in odobritev prek datuma poteka ključa. deactivate-key z { "id": "k…" } jo takoj konča. Oboje je zapisano z akterjem v dnevniku sprememb; odgovor navede activeUntil.

Pravilo prijave v enem koraku. Pravilo velja, takoj ko je shranjeno. Prek množic najprej nastane pravilo in šele nato njegove značilnosti – zavrnitev vmes velja za vse, tudi za tistega, ki ga shranjuje. save-sign-in-rule pravilo in značilnosti zapiše v eni spremembi:

{ "scope": "All", "method": "Any", "effect": "Deny", "label": "außen nur Frank",
  "exceptFrom": [ "10.0.0.0/8" ], "exceptPersons": [ "Frank Mustermann" ] }

Drugi seznami: from, persons, windowsGroups, exceptWindowsGroups, countries, exceptCountries, operators, exceptOperators, clients, exceptClients, hours, exceptHours (pomen v Pravilniku prijave). Operaterje omrežja prehod shrani kot AS s številko, časovna okna pa v izpisani obliki (Mon-Fri postane Mon,Tue,Wed,Thu,Fri 00:00-24:00). mode je Enforce (privzeto) ali Report za pravilo v preizkusu. Časovno omejene izjeme so v exceptions, vsaka s persons, windowsGroups, countries, from, operators, clients, hours, until (UTC) in label:

{ "scope": "Data", "effect": "Deny", "label": "samo Nemčija",
  "exceptCountries": [ "DE" ], "exceptFrom": [ "10.0.0.0/8" ],
  "exceptions": [ { "persons": [ "Frank Mustermann" ], "countries": [ "TH" ],
                    "until": "2026-11-02T00:00:00Z", "label": "dopust" } ] }

Z "id" ukaz nadomesti pravilo z vsemi značilnostmi in izjemami; brez njega ustvari novo. Odgovor { "id" }. Pri neznani osebi ali neznanem pravilu prehod odgovori z 400, pri vsebini, ki bi bila po spremembi neveljavna, z 422; v obeh primerih se nič ne shrani.

Pojasnilo prijave. explain-sign-in z istim pravilnikom kot resnična prijava izračuna, kaj velja za osebo – za vsak način prijave osebe (račun Windows, prijava SQL Server, vsak osebni ključ) in vsak naveden izvor:

{ "person": "Frank Mustermann", "scope": "Data",
  "origins": [ { "name": "Firmennetz", "address": "10.1.2.3" },
               { "name": "Außen", "address": "203.0.113.7" },
               { "name": "Tajska", "address": "203.0.113.7", "country": "TH" },
               { "name": "Unbekannt", "address": null } ] }

Izvor lahko svojo državo navede sam s country; tako lahko vprašate „kaj velja za Franka na Tajskem?“, ne da bi poznali naslov od tam. Brez country prehod državo prebere iz geolokacijske zbirke kot pri resnični prijavi. Prav tako izvor sprejme operator (operater omrežja, AS3320; brez navedbe iz geolokacijske zbirke), client (vrsta programa; brez navedbe neznana) in at (trenutek v UTC; brez navedbe zdaj), na primer { "name": "Sobota z Excelom", "address": "203.0.113.7", "client": "Power Query", "at": "2026-10-24T10:00:00Z" }.

Odgovor za vsak način prijave (ways) vodi celico za vsak izvor z result – allowed, code (potrebna koda 2FA), denied ali stanje, ki učinkuje pred pravilnikom: revoked, expired, rests (ključ na zahtevo miruje), personDisabled, outsideKeyNetworks – in ustrezna pravila (id, version, label, effect, method, scope); floor prikaže spodnjo mejo skrbništva, country državo, po kateri je bila sprejeta odločitev (prazno, če je neznana ali nobeno pravilo ne navaja držav), operator, client in at druge ocenjene signale, tried pravila v preizkusu, ki bi veljala (kot rules; ne vplivajo na result), in spared pravila, ki jih izjema odpravi (id, version, rule, effect, exception, until). id in version imata enaki vrednosti kot v dogodku prijave (glejte Podlaga odločitve); tako lahko preverite, ali pravilo še velja tako kot ob kakšni prejšnji prijavi. Račun Windows se oceni brez svojih skupin, saj jih pozna le resnična prijava; če pravilo navaja skupine, je zraven groupsUnknown. Od 1 do 16 izvorov na klic.

Dnevnik prijav in geolokacijska zbirka

Dnevnik prijav vsako odločitev o prijavi z izvorom zabeleži v datoteki dnevnikov poleg shrambe (nastavitve pod `Gateway:SignInLog`, postopek v Preverjanje vzorcev prijav in njihovega izvora). Prehod zbrane odločitve zapiše enkrat na minuto in ob tem uporabi pravila prijave, zato se prijava v množicah pojavi do minute pozneje. Vse množice so samo za branje. SignInFindings bere shranjene ugotovitve, druge množice se izračunajo ob branju.

MnožicaKljučVsebina
SignInHoursHour, Method, Outcome, Country, NetClassŠtevilo (Count) na uro (UTC, na polno uro), poleg tega Weekday (1 = ponedeljek) in HourOfDay po uri strežnika. Brez osebe in naslova; hrani se HourDays dni
SignInRuleReportsIdZa vsako pravilo v preizkusu in različico, v času hrambe dogodkov: Rule (oznaka), RuleVersion, Label, Effect, Would (prijave, ki bi jih zadelo), Spared (prijave, za katere bi ga izjema odpravila), Persons in Origins (število različnih), FirstAt, LastAt. Le štetja, brez osebe in naslova, zato berljivo brez pravice sign-in-events. Štejejo se dogodki prijave, kot jih vodi dnevnik: ena uspešna prijava na klicatelja, postopek in izvor na SuccessWindowMinutes
SignInOriginsIdPo lastnem omrežju kot celoti (NetName, Network prazen), sicer po podomrežju (Network, /24 oz. /48), z Country, CountryName, City, Latitude, Longitude, Asn, AsnOrganisation, števili Successes, Refusals, Challenges, Persons ter FirstAt/LastAt
SignInEventsIdPosamezni dogodki, na zahtevo največ 20.000 ujemajočih se, najnovejši najprej. Pogoje za Person, At in Id prehod upošteva že pri branju datoteke dnevnikov, zato meja velja le za ujemajoče se dogodke. Polja: At, Repeats, Method, Scope (data, admin), Alias, Outcome, Reason, Status, Person, KeyId, Presented, Origin, Network, NetClass, NetName, kraj in operater omrežja kot zgoraj ter Region, Client, CorrelationId, Rules, Signals (glejte Podlaga odločitve), Weekday, HourOfDay. Le s pravico sign-in-events, sicer 403
SignInFindingsIdShranjene ugotovitve pravil prijave, Id naraščajoč in trajen: Rule, RuleVersion, Level (act, ask), At, Person, KeyId, Observed, Usual, BaselineDays, Text, Advice, EventIds (Id dogodkov, na katerih temelji, ločeni z vejico). Person, KeyId, Usual in EventIds le s pravico sign-in-events, sicer prazno. Na zahtevo največ 20.000
SignInAdviceIdIzstopajoči vzorci zadnjih sedmih dni, izračunani ob branju, Id velja le znotraj ene zahteve: Code, Text, Advice, FromAt, UntilAt, Count, Origin, Country; Person in KeyId le s pravico sign-in-events. Besedilo nikoli ne navaja osebe
GeoIpFilesKindNa datoteko (City, Asn): DatabaseType, BuildDate, AgeDays, Stale (starejša od StaleDays), Bytes, InstalledAt, Attribution. Brez datotek prazno
GeoIpSourceIdEna vrstica: Source, Account, HasLicenseKey, UpdateDays, LastAttemptAt, LastError, Attribution. Licenčni ključ se nikoli ne vrne

Vrednosti. Method: apiKey, personalKey, windows, sqlLogin, none. Outcome: success, refused, challenge (zahteva brez prijavnih podatkov ali vmesni korak prijave Windows; tudi poziv h kodi 2FA), totpSuccess, totpFailure. NetClass: loopback, private (lastno omrežje, RFC 1918, enolični lokalni naslovi IPv6, link-local, 100.64.0.0/10), public, unknown. V SignInHours je Country prazen, kadar država ni znana. Reason (pri refused): notSignedIn, unknownKey, revoked, expired, rests, personDisabled, outsideKeyNetworks, denied, deniedByCountry (vsako zavrnilno pravilo navaja države), noPerson, enrolmentOpen, noFactor, secondFactorMissing, sessionExpired, limit, unprotected (prijava, ki se sprejme le prek zaščitene povezave, je prispela nešifrirana). Presented navaja podano, neznano ime prijave SQL Server, nikoli ključa. Client je vrsta programa iz glave User-Agent (Power Query, WinHTTP, PowerShell, Browser ali prva beseda); brez glave prazno.

Podlaga odločitve

Vsak dogodek prijave, ki ga je ocenil pravilnik prijave, v Rules navede pravila, na katerih je temeljila odločitev, v Signals pa signale, po katerih je bila ocenjena – oboje kot besedilo JSON. Dogodek brez veljavnega prvega faktorja (napačen ključ, napačno geslo) pravilnika ne doseže; tam sta obe polji prazni.

Rules je seznam; prazen ([]), če ni veljalo nobeno pravilo. Vsak vnos navaja:

PoljePomen
idOznaka pravila: njegov Id v SignInRules ali file:n za n-to pravilo konfiguracijske datoteke – to se pojavi le brez skrbniške shrambe, torej nikoli v dogodkih, ki jih bere skrbniški vmesnik. floor označuje spodnjo mejo skrbništva (RequireAdminTotp), ki ni pravilo
versionPrstni odtis tega, kar pravilo počne: 16 šestnajstiških števk, ki se spremenijo, takoj ko se spremeni del, postopek, učinek, pogoj ali izjema z njenim koncem – ne pa ob zgolj spremenjenem zaznamku. Enaka pravila imajo povsod enako različico
effectdeny ali requireTotp
labelZaznamek pravila ob prijavi
sparedtrue, če je izjema pravilo za to prijavo odpravila; sicer manjka
modereport za pravilo v preizkusu: ni odločilo ničesar, vnos kaže, kaj bi storilo; pri uveljavljenem pravilu manjka
exceptionZaznamek izjeme, ki je pravilo odpravila

Signals navaja, kar je poleg stolpcev dogodka vplivalo na odločitev:

PoljePomenZanesljivost
countryDržava, po kateri so pravila presojala; manjka, če je bila neznanaopažena, izpeljana iz naslova (VPN in mobilna omrežja jo premaknejo)
countryAskedAli kakšno pravilo navaja države, zato je bila država poiskana–
secondFactorvalid (predložena veljavna seja), missing (zahtevan, ni predložen ali je potekel), notRequired, exchange (zahteva odpre sejo ali nastavi faktor), notChecked (prej zavrnjeno)potrjena
totpExemptAli je osebni ključ izvzet iz 2FApotrjena
operatorOperater omrežja, po katerem so pravila presojala (AS3320); manjka, če je bil neznan ali nobeno pravilo ne navaja operaterjevopažena, izpeljana iz naslova
clientVrsta programa, ki jo je navedla zahteva; manjka brez User-Agenttrditev
trustZa vsak navedeni signal njegova raven: observed, claimed ali verified (za secondFactor)–

Postopek, oseba, ključ in izvor so v stolpcih dogodka (Method, Person, KeyId, Origin, NetClass, NetName); Client je trditev programa in odloča le, če kakšno pravilo sprašuje po programu. Enake zavrnitve ene minute dnevnik združi le, če so o njih odločila ista pravila v isti različici. Iščete lahko s contains, na primer $filter=contains(Rules,'"id":"7"') za vse prijave, pri katerih je sodelovalo pravilo 7.

Pravica sign-in-events. Pravilo mora vir navesti dobesedno, poleg admin; niti * niti sam admin je ne podelita. Naslov in oseba posamezne prijave sta osebna podatka; pravica loči tiste, ki vidijo števila in vzorce, od tistih, ki lahko sledijo posameznim osebam. Velja za SignInEvents, za polja oseb v SignInFindings in SignInAdvice ter za `sign-in-profile`. Brez pravice so ta polja prazna, še preden se uporabi filter zahteve; pogoj zanje tedaj ne vrne ničesar.

Ugotovitve pravil prijave

Ob vsakem zapisu prehod pravila prijave uporabi na novih dogodkih; kar pravilo zazna, shrani kot ugotovitev. Ugotovitev se zapiše enkrat in se nikoli znova ne ovrednoti; navaja pravilo z njegovimi pragovi (RuleVersion) in primerjalno obdobje (BaselineDays), pod katerima je nastala. Isti položaj – pravilo, izvor ali oseba, ura ali dan – da le eno ugotovitev.

Od zadnjega pogleda. Id raste z vsako ugotovitvijo in se nikoli ne uporabi znova. Program si zapomni najvišji prebrani Id in nato z $filter=Id gt 4711 sprašuje le po novem. S pogojem za Id prehod najprej bere najstarejše ujemajoče se ugotovitve; tako program po korakih v celoti prebere tudi več kot 20.000 novih ugotovitev. Brez takega pogoja vrne najnovejše.

Stopnje. act zahteva ukrepanje: vzorec napada ali predan ključ. ask je vredno vprašanja osebi: nekaj je zanjo novo ali neobičajno. Kam prehod sporoča ugotovitve, določa `Gateway:SignInLog:Alerts`.

PraviloStopnjaZaznano, ko
failureWaveactvsaj 20 zavrnjenih prijav z enega naslova v eni uri
sprayactzavrnitve za vsaj 5 različnih imen ali ključev z enega naslova v eni uri
distributedactzavrnitve za isto ime z vsaj 10 naslovov v eni uri
impossibleTravelactdve uspešni prijavi iste osebe vsaj 500 km narazen, hitreje kot 1000 km/h
keyManyOriginsacten osebni ključ iz vsaj 5 javnih omrežij v enem dnevu
newCountryaskdržava, iz katere se oseba v prejšnjih 90 dneh ni prijavila
newClientaskvrsta programa, ki je oseba v prejšnjih 90 dneh ni uporabila
newNetworkOperatoraskoperater omrežja, prek katerega se oseba v prejšnjih 90 dneh ni prijavila
newMethodaskpostopek prijave, ki ga oseba v prejšnjih 90 dneh ni uporabila
unusualHouraskura, ob kateri in ob sosednjih urah se oseba v prejšnjih 90 dneh ni nikoli prijavila

Pravila za novosti se sprožijo šele, ko je imela oseba v prejšnjih 90 dneh vsaj 5 uspešnih prijav, unusualHour šele od 20; prej bi bilo vse novo. Dnevi in ure se štejejo v časovnem pasu Gateway:SignInLog:TimeZone. Observed je opažena vrednost (država, število, razdalja), Usual so za primerjavo običajne vrednosti osebe. Besedilo ugotovitve nikoli ne navaja osebe.

Profil prijav

sign-in-profile pokaže, kaj je za osebo pri prijavi običajno – na primer, da lahko ovrednotite ugotovitev newCountry. Telo:

{ "person": "Frank Mustermann", "days": 365 }

days šteje nazaj od danes, vključno z današnjim dnem, v časovnem pasu Gateway:SignInLog:TimeZone; privzeto 90, dovoljeno od 1 do 3650. Odgovor navede person, days, from, until, total (uspešne prijave) in activeDays ter pod dimensions za vsako značilnost – country, network, operator, client, method, hour (ura od 00 do 23) – vrednosti z value, count, firstDay in lastDay, najpogostejše najprej. Izsek:

{ "person": "Frank Mustermann", "days": 365, "from": "2025-10-21", "until": "2026-10-20",
  "total": 1184, "activeDays": 213,
  "dimensions": { "country": [ { "value": "DE", "count": 1170, "firstDay": "2025-10-21", "lastDay": "2026-10-20" },
                               { "value": "IT", "count": 14, "firstDay": "2026-07-28", "lastDay": "2026-08-08" } ] } }

Upoštevane so le uspešne prijave. Profil izhaja iz dnevnih vrednosti posamezne osebe, ki v datoteki dnevnikov ostanejo dlje od posameznih dogodkov. Zahteva pravico sign-in-events (sicer 403) in vedno velja za natanko eno osebo; seznama po osebah ni. Neznana oseba: 404; days zunaj obsega: 400.

set-geoip-source. Telo:

{ "source": "maxmind", "account": "123456", "licenseKey": "…", "updateDays": 7 }

source je obvezen: none (datoteke le prek upload-geoip), dbip-lite ali maxmind. updateDays od 0 do 90: po toliko dneh prehod datoteke sam prenese znova (0 = le na ukaz); po neuspelem poskusu poskusi znova čez šest ur. licenseKey se shrani zapečaten z glavnim ključem; če ga v telesu ni, ostane shranjeni, "removeLicenseKey": true ga odstrani. maxmind brez številke računa ali licenčnega ključa: 422. Dnevnik sprememb navede le, ali je ključ nastavljen.

update-geoip. Brez telesa. Prenese obe datoteki in ju začne uporabljati brez ponovnega zagona. Odgovor je files, vsak z kind, databaseType, buildDate, bytes, changed, attribution; datoteka z enakim datumom izdelave kot obstoječa ostane nespremenjena (changed: false). Zavrnjeno z 422 in razlogom: vir ni izbran, vir zavrne ali ne dostavi ničesar, datoteka ni uporabna ali prenos že poteka.

upload-geoip. Telo je datoteka sama (.mmdb, .mmdb.gz ali .tar.gz podjetja MaxMind), Content-Type: application/octet-stream. Možnosti poizvedbe: source=dbip-lite|maxmind določi navedbo vira, force=true sprejme tudi starejšo ali enako staro datoteko. Vrsto (City, Asn) prehod prepozna po vsebini. Odgovor je kot en vnos update-geoip. Večja od GeoIp:MaxMegabytes: 429 (LIMIT_EXCEEDED) kot vsako preveliko telo; neuporabna ali starejša od obstoječe: 422.

Viri geolokacijske zbirke

VirPridobivanjeLicenca in navedba vira
dbip-liteDB-IP Lite, mesečno, brez računa; prehod prenese dbip-city-lite-LLLL-MM.mmdb.gz in dbip-asn-lite-LLLL-MM.mmdb.gz z download.db-ip.com (v začetku meseca po potrebi prejšnji mesec)CC BY 4.0; navedba vira obvezna: „IP Geolocation by DB-IP (https://db-ip.com)“
maxmindMaxMind GeoLite2 City in ASN s številko računa in licenčnim ključem brezplačnega računa MaxMindlicenca GeoLite2 podjetja MaxMind; obvestilo „This product includes GeoLite2 data created by MaxMind“

Navzven prehod pošlje le zahtevo za prenos datotek; naslovi klicateljev strežnika nikoli ne zapustijo.

Dnevnik obremenitve

Dnevnik obremenitve beleži, koliko stane vsaka oblika zahteve (nastavitve pod `Gateway:LoadLog`, postopek v Ugotavljanje, kaj obremenjuje prehod in podatkovno zbirko). Oblika je zahteva brez svojih vrednosti: pot, alias, vrsta, objekt, primerjana polja, razvrstitev in okno, vsaka vrednost zapisana kot ?. Zahteve, ki se razlikujejo le po vrednostih, so ena oblika. Prehod zbrane številke zapiše enkrat na minuto v datoteko dnevnikov, zato se zahteva v množicah pojavi do minute pozneje. Vse množice so samo za branje. LoadFindings bere shranjene namige, druge množice se izračunajo ob branju.

MnožicaKljučVsebina
LoadShapesIdPo obliki za zadnjih sedem dni: Path, Alias, Kind, Resource, Text (oblika), Template (ustvarjeni stavek brez vrednosti), FirstAt, LastAt, Requests, TotalMs, AverageMs, P95Ms, MaxMs, DataMs, Rows, AverageRows, Bytes, Errors, Refused, Persons, Advice (kode iz LoadAdvice, ločene z vejico)
LoadHoursHour, ShapeIdPo uri (UTC, na polno uro) in obliki: Requests, TotalMs, DataMs, MaxMs, P95Ms, Rows, Bytes, Errors, Refused, poleg tega Weekday (1 = ponedeljek) in HourOfDay po uri strežnika. Brez osebe; hrani se HourDays dni
LoadPersonsDay, ShapeId, PersonPo dnevu (UTC), obliki in klicatelju: Requests, TotalMs, Rows. Le s pravico load-persons, sicer 403; hrani se PersonDays dni
SlowRequestsIdPosamezne zahteve od SlowMilliseconds naprej, najnovejših 20.000: At, ShapeId, Ms, DataMs, Rows, Bytes, Status, CorrelationId; Person in KeyId le s pravico load-persons, sicer prazno. Hrani se SlowDays dni
LoadFindingsIdNamigi iz LoadAdvice, shranjeni enkrat na uro, Id naraščajoč in trajen: At (kdaj je namig nastal), Code, ShapeId, Alias, Resource, Text, Advice, Requests in AverageDataMs (številke sedmih dni, na katerih temelji). En namig na kodo in obliko; oblika, ki ostane draga, se ne pojavi znova. Brez osebe. Na zahtevo največ 20.000; Id gt kot pri ugotovitvah pravil prijave
LoadAdviceIdOblike zadnjih sedmih dni z znanim ukrepom, izračunane ob branju, Id velja le znotraj ene zahteve: Code, ShapeId, Alias, Resource, Text, Advice, Requests, AverageDataMs. Besedilo nikoli ne navaja osebe

Vrednosti. Path: odata (površina OData), cf (lastni vmesnik HTTP pod /api/v1/cf/), checked (preverjeni stavek), passthrough (stavek s pravico sql), admin (skrbništvo), other (2FA, samopostrežba, prenosi). Kind: read, count, aggregate, call, insert, update, delete, statement, describe (stavek le opisan), service (zahteva brez podatkov: metapodatki, zavrnitev, skrbništvo). Besedilo stavka prehod hrani brez literalov in komentarjev; dolgi seznami vrednosti se strnejo v ?, …. Preskočene vrstice ($skip) se v Text pojavijo le kot stopnja, nikoli s svojim številom: skip=small (pod 1.000), skip=medium (pod 10.000), skip=large (od 10.000 naprej).

Časi in količine. TotalMs je celoten čas zahteve v prehodu, DataMs del od odprtja povezave do podatkovnega vira do zadnje prebrane vrstice, vključno s preklopom na identiteto osebe.

  1. percentil (P95Ms) je zgornja meja časovne stopnje, v katero pade (stopnje 5, 10, 25, 50, 100,

250, 500, 1.000, 2.500, 5.000, 10.000, 30.000 ms; nad tem MaxMs). Bytes šteje odgovor pred stiskanjem. Errors šteje odgovore 5xx, Refused odgovore 4xx. Person je ime osebe, brez osebe pa oznaka klicatelja, kot je v revizijski sledi. Vsote časa, vrstic in bajtov so števila s plavajočo vejico, da program, kot je Access, ki cela števila bere kot 32-bitna, ne prekorači obsega.

Namigi (LoadAdvice). Vsaka koda je vzorec, ki obremenjuje podatkovno zbirko ne glede na podatke:

KodaPrepoznana, koObičajni ukrep
wholeSetBranje brez filtra vrne v povprečju vsaj 1.000 vrstic na zahtevoNastavite filter, izberite le potrebne stolpce
unindexedFilterFilter na tabeli z vsaj 10.000 vrsticami (ocena kataloga), noben primerjani stolpec ni prvi v indeksuUstvarite indeks s prvim stolpcem filtra ali filtrirajte po indeksiranem stolpcu
deepPaging$skip od 10.000 vrstic naprejOmejite s filtrom ali berite naprej prek povezave na naslednjo stran
countLargeSkupno število ($count) s povprečno vsaj 500 ms v podatkovni plastiSkupno število zahtevajte le, kadar ga potrebujete
aggregateWholeVsote brez filtra s povprečno vsaj 500 ms v podatkovni plastiOmejite množico ali vsote vnaprej izračunajte v podatkovni zbirki
expensiveStatementLastni stavek s povprečno vsaj 1.000 ms v podatkovni plasti ali 95. percentilom od 2.500 ms naprejPreverite ga v Query Store; shranite ga kot proceduro ali indeksiran pogled
refreshLoopIsta oblika vsaj 600-krat v eni uri, od največ treh klicateljevPreverite samodejno osveževanje

Pravica load-persons. Pravilo mora vir navesti dobesedno, poleg admin; niti * niti sam admin je ne podelita. Obremenitev po osebah kaže, kdo je kdaj koliko delal; pravica loči tiste, ki vidijo obremenitev prehoda, od tistih, ki lahko primerjajo osebe.

export-load. Telo ni obvezno:

{ "days": 30 }

days od 1 do HourDays, privzeto 30. Odgovor je datoteka JSON wkl-load-LLLLMMDD-hhmmss.json v obliki wkl-load-export/1 s shapes, hours, advice in mejami časovnih stopenj (histogramBounds). Vsebuje imena aliasov, objektov in stolpcev, ne pa oseb, ključev, naslovov, korelacijskih oznak in vrednosti; dnevne številke po osebah in posamezne počasne zahteve se zanjo sploh ne berejo. Potrebna je pravica branja skrbništva; izvoz se zabeleži v dnevniku sprememb.

Iskanje oblike v SQL Serverju

Prehod vsak stavek, ki ga ustvari sam, označi z oznako njegove oblike kot komentarjem za prvo ključno besedo, na primer SELECT /* wkl:5b9b83f10953 */ TOP (1) … ali UPDATE /* wkl:8b7d7b280081 */ [dbo].[Probe] SET …. Na tem mestu komentar ohrani tudi Query Store, ki komentarja pred stavkom ali za njim ne shrani. Pri klicu procedure stoji oznaka pred klicem; Query Store tedaj zabeleži stavke procedure brez oznake. S to oznako skrbnik podatkovne zbirke najde obliko v predpomnilniku načrtov, v Query Store ali v Extended Events in od tam pride do LoadShapes. Preverjeni stavki prav tako nosijo oznako; stavek s pravico sql se izvede nespremenjen, brez oznake. Povezave se SQL Serverju predstavijo kot Wkl.Data.Gateway (program_name), razen če niz povezave podatkovnega vira nastavi lastno Application Name.

Posodobitve podatkovnih zbirk

Modul za posodobitve v storitvi namešča podpisane posodobitve podatkovnih zbirk (pakete <izdelek>-schema-<različica>.zip) v podatkovne zbirke, za katere ima mapa `Gateway:Updates` zaščiteno konfiguracijo. Na vsakih PollSeconds sekund preveri pakete v vhodni mapi, katerih kopiranje se je končalo vsaj pred 5 sekundami, in napovedane pakete, katerih rok je potekel. Ukazi prikažejo stanje in izvedejo odločitve skrbnikov.

Pravice. update-databases, update-status in update-history berejo (zadošča pravilo z admin, tudi samo za branje). Vsaka odločitev potrebuje pravico za spreminjanje in se zapiše v dnevnik sprememb s podatkovno zbirko, paketom in izidom.

update-databases. Brez telesa. Podatkovne zbirke z zaupanja vredno konfiguracijo in njihove nastavitve ter datoteke, ki jih modul izpusti:

{
  "folder": "C:\\ProgramData\\Wkl.Data.Gateway\\updates",
  "databases": [ {
    "id": "demo-prod", "gatewayAlias": "demo", "product": "Demo", "dialect": "sqlserver",
    "connection": { "string": "Server=sql01;Database=Demo;User ID=wkl_update;Encrypt=True",
                    "secret": "file:C:\\ProgramData\\Wkl.Data.Gateway\\secrets\\demo-update.txt" },
    "keys": [ "9c0f6d1e…" ],
    "inbox": "D:\\Updates\\Demo", "archive": "D:\\Updates\\Demo-Archiv",
    "backup": { "mode": "native", "target": "D:\\Sicherung" }, "starterSource": null,
    "settings": { "expand": "automatic", "contract": "confirm", "noticeMinutes": 60, "sessionWindowMinutes": 15 }
  } ],
  "problems": [ { "file": "alt.json", "code": 9, "message": "…" } ]
}
PoljeVsebina
idKljuč podatkovne zbirke v vseh drugih ukazih (database)
connection.stringPovezava za spremembe strukture in varnostne kopije, brez gesla
connection.secretSklic na geslo (env:IME ali file:POT); vrednost se nikoli ne vrne
keysKljuči izdajateljev kot prstni odtis SHA-256
settingsNastavitve delovanja: expand in contract (automatic ali confirm), čas vnaprejšnje napovedi (noticeMinutes), časovno okno, v katerem zahteva prek storitve šteje kot odprta seja (sessionWindowMinutes). Spremenite jih v množici `UpdateSettings`; veljajo od naslednjega prehoda. Če jih ni mogoče prebrati, podatkovna zbirka čaka, namesto da bi delovala s privzetimi vrednostmi
problemsIzpuščene datoteke s kodo in razlogom; 9 pomeni, da ni zaupanja vredna (spreminjajo jo lahko tudi drugi, ne le skrbniki in SYSTEM, geslo v povezavi, manjka connection.secret, ime datoteke ≠ id)

update-status. Telo { "database": "demo-prod" }. Odgovor je objekt stanja posodobitev podatkovnih zbirk (oblika 2), enak kot pri wkl-db status --json:

{
  "format": 2, "id": "demo-prod", "product": "Demo", "schema": 13,
  "packages": [ { "id": 41, "file": "Demo-schema-14.zip", "schema": 14, "kind": "contract",
                  "status": "announced", "reason": null, "message": null, "deadlineUtc": "2026-11-02T18:00:00Z" } ],
  "sessions": [ { "product": "Demo", "version": "2.3.1", "path": "gateway", "host": "10.1.2.17", "user": "FIRMA\\mustermann", "lastSeenUtc": "2026-11-02T16:40:12Z" } ],
  "drift": []
}

packages vsebuje pakete, ki niso nameščeni (done) ali opuščeni (dismissed): waiting (čaka na potrditev), announced (napoved teče, deadlineUtc je rok), running, failed, refused. reason je koda, ki pojasni stanje (glejte spodaj). sessions navede seje starejših aplikacij, ki zadržijo napovedani paket, in seje brez navedbe izdelka in različice, ki ga ne zadržijo; seje, ki potekajo prek storitve, storitev prepozna po glavi `X-Wkl-Application`. drift navede objekte, ki so bili od zadnjega paketa spremenjeni zunaj paketa, vsak vnos z object (ime s shemo), type (vrsta objekta, na primer table ali view) in change (changed, missing; dateChanged je pri šifriranem modulu samo namig in ne zadrži nobenega paketa).

update-history. Telo { "database": "demo-prod", "skip": 0, "take": 20 } (take od 1 do 100, privzeto 20). Zaključeni paketi (done, failed, refused, dismissed), najnovejši najprej, z id, file, schema, kind, status, reason, message, receivedUtc, confirmedBy, confirmedUtc, sha256 in steps: za vsak korak phase (predeploy, pre, model, post, postdeploy, baseline), version, path, sha256, appliedUtc, appliedBy, durationMs, result (ok, failed, rolledback) in message.

Odločitve. Telo { "database": "demo-prod", "package": 41 }; package je številka (id) iz stanja ali zgodovine.

UkazZa stanjeUčinek
confirm-updatewaitingexpand: se izvede takoj. contract: se preveri in napove (obvestilo aplikacijam, rok po času napovedi paketa ali noticeMinutes) in se izvede ob roku, ko ni več odprta nobena starejša aplikacija. Kot potrditelj se v podatkovno zbirko zapiše gateway:<ime> (<oznaka>)
dismiss-updatefailed, refusedPostane dismissed in izgine iz stanja; datoteka ostane v mapi failed
retry-updatefailed, refusedNespremenjeno datoteko iz failed znova sprejme kot nov paket, z vsemi preverjanji; stari paket postane dismissed. Spremenjeni paket potrebuje novo datoteko
move-update-deadlineannouncedV telesu še "deadlineUtc": "2026-11-03T06:00:00Z"; ne v preteklosti. Aplikacije preberejo novi rok ob naslednji poizvedbi
cancel-update-noticeannouncedPrekliče napoved; paket znova čaka (reason 7) in potrebuje novo potrditev, tudi pri contract = automatic

upload-update. POST /admin/v1/upload-update?database=demo-prod&file=Demo-schema-14.zip, telo je datoteka ZIP, največ 64 MiB. Storitev jo postavi v vhodno mapo in jo takoj sprejme, kot datoteko, odloženo tja. Ime datoteke je samo ime brez poti.

Odgovor na odločitev ali nalaganje. message opiše, kaj se je zgodilo; package navede, kaj se je zgodilo s paketom, če se je izvedel ali bil napovedan (sicer null):

{ "message": "Angekündigt bis 2026-11-02 18:00:00Z.",
  "package": { "file": "Demo-schema-14.zip", "exitCode": 0, "outcome": "announced", "message": "Angekündigt bis 2026-11-02 18:00:00Z." } }

outcome je done (nameščen, datoteka je v arhivu in v done), announced, waiting (še čaka, na primer na potrditev ali na seje) ali failed (zavrnjen ali neuspel, datoteka je v failed). exitCode in reason uporabljata iste kode:

KodaPomen
0V redu
2Paket neveljaven ali ni zaupanja vreden (podpis, kontrolna vsota, izdajatelj, izdelek, vrsta)
3Podatkovna zbirka ne ustreza: višja različica sheme ali lastni objekti brez zgodovine
4Skript ali načrt uvedbe ni uspel; vse je razveljavljeno
5Varnostno kopiranje ni uspelo
6Seje starejših aplikacij so še odprte
7Čaka na potrditev; sporočilo navede razlog
10Drug postopek ta trenutek namešča paket tega izdelka
11Odstopanje: objekt je bil spremenjen zunaj paketa
12Migracije se ne ujemajo z zgodovino (kontrolna vsota, manjkajoča ali prestara migracija)
13Izvedba načrta bi lahko povzročila izgubo podatkov
OdgovorPomen
404Ni podatkovne zbirke s tem id ali paketa s to številko
409Paket ima drugo stanje, kot ga ukaz potrebuje; pri ponovnem poskusu datoteke v failed ni več ali je bila spremenjena; pri nalaganju isti paket že čaka
400Manjka obvezno polje, ime datoteke s potjo, rok v preteklosti
413Datoteka je večja od 64 MiB
503Modul ta trenutek namešča paket (poskusite znova čez kratek čas) ali podatkovna zbirka ni dosegljiva

Veliko dejanj naenkrat

Skupnega klica ni: niti OData $batch niti ukaza za več oseb ali ključev. Vsaka oseba, vsaka dodelitev, vsak ključ je lastna zahteva.

VprašanjeVedenje
Koliko zahtev zaporedomaSkrbništvo šteje kot vsaka druga zahteva v omejitev hitrosti klicatelja: Gateway:Security:RateLimit:PerCaller (privzeto 300) na RateLimit:WindowSeconds (privzeto 60), glejte konfiguracijo. Nad tem prehod odgovori z 429; po izteku obdobja se nadaljuje. Lastne omejitve samo za skrbništvo ni
Delne napakeVsaka zahteva je lastna transakcija. Če 300. zahteva ne uspe, ostane 299 prejšnjih shranjenih; nič se ne razveljavi. Klicatelj nadaljuje pri neuspeli
Ponovitev po prekinitvi povezaveZ glavo Idempotency-Key tudi tukaj: učinkuje pri vsaki metodi razen GET in HEAD, torej tudi pri ustvarjanju prek OData in pri ukazih. Pravila in hrambo (10 minut, samo v pomnilniku, 401/429/5xx se ne shranijo) opisuje Ponovljene pisalne zahteve
Ponovitev po ponovnem zagonu ali po več kot 10 minutahBrez shranjenega odgovora. Prej preverite, ali zapis že obstaja: drugo osebo z enakim imenom prehod zavrne, drugi ključ pa bi dejansko nastal

Primer izračuna: 847 oseb z ustvarjanjem, dodelitvijo pravila in ključem je dobrih 2.500 zahtev, s privzeto vrednostjo torej najmanj devet minut. Če potrebujete več, za čas nastavitve zvišajte PerCaller.

Temu delu se pogosto lahko izognete. Osebe potrebujete le za tiste, ki dobijo osebne ključe, 2FA ali lastno privzeto identiteto. Pravice in pravila prijave je mogoče dodeliti skupini Windows kot celoti (WindowsAccounts, IdentityAssignments, značilnost windowsGroups pravil prijave), ne da bi njene člane vpisali posamično. 2FA pa ima vedno posamezna oseba: če pravilo zahteva 2FA za skupino, je vsak član brez vnosa osebe zavrnjen z 403 (glejte Prijava).

Člani skupine Windows

Prehod ne vrača seznamov članov. Imenika Active Directory nikoli ne poizveduje: katere skupine ima klicatelj, razbere ob prijavi iz njegove prijave Windows, imena pa ob shranjevanju razreši le v SID. Če želite vse člane skupine ustvariti kot osebe, jih preberite sami, na delovni postaji ali v skriptu (na primer Get-ADGroupMember oz. net group /domain), in nato za vsakega člana ustvarite osebo z WindowsAccount. Poznejših sprememb članstva prehod pri tem ne prevzame samodejno; pravice, podeljene prek same skupine, pa članstvu sledijo brez dodatnega vzdrževanja.

Sorodne teme

sl/wiki/data-conectivity/database-gateway/reference/administration-api.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille