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

HTTP: prijava

Vsi postopki prijave v prehod z njihovimi pravili in odgovori, samopostrežba za lastne ključe in pravilnik prijave z 2FA (dvostopenjskim preverjanjem identitete). Model v ozadju pojasnjuje Prijava in posredovanje identitete.

Sintaksa

NavedbaPomen
X-Api-Key: <ključ storitve ali osebni ključ>osnovna prijava; ime glave po Security:ApiKeyHeader
Authorization: Negotiate …račun Windows
Authorization: Basic …prijava SQL Server ali osebni ključ kot geslo
X-Wkl-Session: <seja>2FA, poleg osnovne prijave
X-Wkl-Role: <identiteta>izbira identitete podatkovne zbirke
POST /auth/v1/totp[/{alias}]koda v zameno za sejo
POST /auth/v1/enrol[/{alias}]nastavitev 2FA ob prvi prijavi
GET /self/v1/[{alias}/]keyssamopostrežba: lastni ključi
POST /self/v1/[{alias}/]issue-keysamopostrežba: izdaja ključa
POST /self/v1/[{alias}/]revoke-keysamopostrežba: preklic ključa

Parametri

Prijava z računom Windows

Poleg ključa storitve se lahko klicatelj prijavi s svojim računom Windows prek HTTP Negotiate (Kerberos ali, kjer Kerberos ni na voljo, NTLM). To je namenjeno osebam: Access prek gonilnika ODBC ter Excel ali Power BI se prijavijo kot uporabnik, ki jih izvaja. Nikjer ni shranjen ključ ali geslo, revizijska sled pa navaja osebo namesto imena ključa.

"Security": {
  "AuthMode": "ApiKey, Windows",
  "ApiKeys": [ { "Client": "fachanwendung", "Key": "env:FACHANWENDUNG_SCHLUESSEL" } ],
  "WindowsAccounts": [
    { "Account": "FIRMA\\Fachdaten-Leser",  "Client": "fachdaten-lesen" },
    { "Account": "FIRMA\\Fachdaten-Pflege", "Client": "fachdaten-pflege" },
    { "Account": "S-1-5-32-545",            "Client": "auskunft" }
  ],
  "Clients": [
    { "Id": "fachanwendung",    "Databases": [ "fachdaten" ], "Resources": [ "*" ],     "Verbs": [ "*" ] },
    { "Id": "fachdaten-lesen",  "Databases": [ "fachdaten" ], "Resources": [ "views" ], "Verbs": [ "GET" ], "ReadOnly": true },
    { "Id": "fachdaten-pflege", "Databases": [ "fachdaten" ], "Resources": [ "*" ],     "Verbs": [ "*" ] },
    { "Id": "auskunft",         "Databases": [ "fachdaten" ], "Resources": [ "views" ], "Verbs": [ "GET" ], "ReadOnly": true }
  ]
}
PraviloRazlog
AuthMode navaja postopke, ločene z vejico: ApiKey, Windows, SqlLogin, PersonalKey v poljubni kombinacijiProgrami obdržijo svoj ključ, osebe se prijavijo z računom Windows ali s prijavo SQL Server
Vnos pod WindowsAccounts računu ali skupini dodeli pravila klicatelja pod ClientsPravice so vezane na skupine, kot ste vajeni v sistemu Windows; oseba jih dobi prek svojega članstva
Pravice več vnosov se seštevajo; pravilo samo za branje ne omejuje drugega pravilaTako skupine delujejo povsod v sistemu Windows. Kdor sme samo brati, ne sme biti član nobene skupine s pravico pisanja
Primerjava poteka prek SID; ime se ob zagonu pretvori v SIDPreimenovana skupina obdrži svoje pravice. Ime, ki ne obstaja, prepreči zagon, namesto da bi brez opozorila ne dodelilo ničesar
Vgrajene skupine navedite z njihovim SID (S-1-5-32-545 namesto VORDEFINIERT\Benutzer)Njihova imena so odvisna od jezika namestitve sistema Windows. SID se preveri le po obliki
Poslani ključ storitve odloča samIzrecnega dokaza ne preglasi implicitni; napačen ključ da 401, tudi če je zraven prijava Windows
Prijavljena oseba brez ustreznega vnosa ne doseže ničesar, enako kot ključ brez pravilaRevizijska sled navaja, kdo je poskušal. Ob 401 bi Office znova vprašal za podatke za prijavo, ki jih je oseba že predložila
Skupine, ki jih Windows vodi le za zavračanje, ne štejejoNa primer skupina skrbnikov pri uporabniku brez povišanih pravic; če bi jih šteli, bi dodelili, kar Windows odreka

Na zahtevo brez prijave prehod odgovori z 401 in WWW-Authenticate: Negotiate; šele nato se odjemalec prijavi z računom Windows. Vsaka nova povezava se zato začne z zahtevo brez prijave, ki je zapisana v revizijski sledi kot anonym … UNAUTHENTICATED (401). To je prvi korak postopka, ne napaka. Nato prijava velja za celotno povezavo.

Kerberos zahteva SPN HTTP/<ime-računalnika> za račun, pod katerim teče prehod; če ga ni, Windows preide na NTLM.

Prijava s prijavo SQL Server (HTTP Basic)

Uporabniki, ki so se v SQL Server doslej prijavljali z imenom in geslom, se z isto prijavo prijavijo v prehod: prek HTTP Basic, torej z imenom in geslom v glavi Authorization. Prehod gesla ne preverja sam in ga ne shrani. Z imenom in geslom odpre povezavo s strežnikom naslovljenega aliasa, odloči pa SQL Server, kot pri neposredni povezavi. Vsi stavki zahteve se nato izvajajo prek povezav te prijave: dovoljenja, privzete vrednosti stolpcev in sprožilci vidijo samo to prijavo, tudi ORIGINAL_LOGIN().

"Databases": [
  { "Name": "fachdaten", "Provider": "sqlserver", "ConnectionString": "…",
    "AllowSqlLogins": true }
],
"Security": {
  "AuthMode": "ApiKey, Windows, SqlLogin",
  "SqlLogins": [
    { "Login": "*",       "Client": "fachdaten-lesen"  },
    { "Login": "pflege1", "Client": "fachdaten-pflege" }
  ],
  "TrustedProxies": [ "10.0.0.5" ]
}
PraviloRazlog
AuthMode vsebuje SqlLogin, alias pa sprejema prijave SQL Server samo z AllowSqlLoginsKatera podatkovna zbirka preveri ime in geslo, je odločitev za vsak alias. Alias brez stikala prijavi SQL Server odgovori kot neznan alias (401); odgovor ne razkrije, kateri aliasi obstajajo
Strežnik in podatkovna zbirka izhajata iz niza povezave aliasa; ime in geslo nadomestita le njegovo prijavoKlicatelj podatkovne zbirke ne izbira, kot povsod v prehodu
Vnos pod SqlLogins prijavi (Login: njeno ime ali * za vsako) dodeli pravila klicatelja pod Clients; pravice več vnosov se seštevajoPravila ostanejo zunanja pregrada: kateri aliasi, vrste virov in metode HTTP so dosegljivi prek HTTP. Znotraj odločajo pravice prijave v SQL Serverju
Prijava se preveri, preden se upoštevajo pravila in katalogSicer bi kdor pozna ime, ne pa gesla, iz odgovorov prepoznal, kateri objekti obstajajo
Samo prek zaščitene povezave: HTTPS, posredniški strežnik iz TrustedProxies, ki pošlje X-Forwarded-Proto: https, ali zahteva z istega računalnika. Sicer 403, brez poskusa z geslomBasic pošlje geslo z vsako zahtevo. X-Forwarded-Proto poljubnega odjemalca ne šteje, zaupanja vreden posredniški strežnik na istem računalniku pa zahteve od zunaj ne naredi lokalne
Največ 5 neuspelih poskusov na prijavo in alias ter 20 na izvor v eni minuti; nato 429, tudi s pravilnim geslom. Za neuspel poskus šteje tudi poskus, na katerega strežnik ne da berljivega odgovora (503)SQL Server šteje neuspele poskuse samo za prijave s pravilnikom gesel, omejevanje hitrosti prehoda pa učinkuje šele po prijavi. Tudi brez berljivega odgovora je strežnik geslo morda že preveril
Geslo se ne pojavi niti v dnevniku niti v besedilni predstavitvi klicateljaJe le v pomnilniku zahteve in v bazenu povezav; SqlClient za vsako prijavo vodi lasten bazen
Poslani ključ storitve ima prednost pred Basic, Basic pred Windows; zavrnjeno geslo da 401 brez preklopa na WindowsIzrecnega dokaza ne preglasi implicitni
Brez prijave odgovor 401 navede vsak vklopljeni postopek: WWW-Authenticate: Negotiate in WWW-Authenticate: Basic realm="Wkl.Data.Gateway", charset="UTF-8"Odjemalec izbere, kar zna; charset mu pove, da se ime in geslo bereta kot UTF-8
OdgovorPomen
401 „Es wurde keine gültige Anmeldung vorgelegt.“ (Predložena ni bila nobena veljavna prijava.)Ime ali geslo je napačno, prijava je neznana ali zaklenjena ali pa alias ne sprejema prijav SQL Server. Odgovor teh primerov namenoma ne razlikuje; dnevnik navede številko napake SQL Serverja (na primer 18456)
403 „SQL-Anmeldungen nimmt der Dienst nur über eine verschlüsselte Verbindung an.“ (Prijave SQL Server prehod sprejema samo prek šifrirane povezave.)Geslo je nezaščiteno prišlo z drugega računalnika
403 „Diese Anmeldung hat keinen Zugang zur Datenbank des Alias.“ (Ta prijava nima dostopa do podatkovne zbirke aliasa.)SQL Server je prijavo sprejel, podatkovne zbirke aliasa pa ni odprl (4060)
403 „Die Datenbank verweigert dieser Anmeldung den Vorgang.“ (Podatkovna zbirka tej prijavi zavrne dejanje.)Prijavi manjka dovoljenje (napaka 229, 230, 262, 297, 300 ali 916)
429 „Zu viele fehlgeschlagene Anmeldungen; bitte später erneut versuchen.“ (Preveč neuspelih prijav; poskusite znova pozneje.)Dosežena je meja neuspelih poskusov

Osebni ključi

Osebni ključ pripada osebi, ne programu. Ne potrebuje domene, gesla SQL ali dodatne infrastrukture, zato deluje povsod, kjer je prehod dosegljiv. Osebe in ključi so v skrbniški shrambi; postopek jo potrebuje in ga vklopite s PersonalKey:

"Security": { "AuthMode": "ApiKey, PersonalKey" },
"Store": { "Path": "store/gateway.db", "MasterKey": "env:WKL_GW_MASTER_KEY", "MaxKeyLifetimeDays": 365 }

Ključ gre v isto glavo kot ključ storitve (X-Api-Key, glejte ApiKeyHeader). Vsak odjemalec, ki zna poslati ključ storitve (gonilnik ODBC z APIKEY/APIKEYENV, skript, orodje za poročila), brez sprememb pošlje tudi osebnega. Ključa loči predpona. Osebni ključ velja tudi kot geslo HTTP Basic (ime se ne preverja; priporočeno je pkuser, glejte spodaj): Excel in Power BI takšne podatke za prijavo (način prijave „Basic“) shranita v lastno upravljanje poverilnic, glavo pa bi bilo treba zapisati v poizvedbo in s tem v vsak delovni zvezek. Oblika ključa ga loči od gesla prijave SQL Server.

<a id=„uporabnisko-ime-pkuser“></a>Uporabniško ime pkuser (dogovor). Kdor osebni ključ vpiše kot geslo, kot uporabniško ime navede pkuser (personal key user). To ni obvezno: prehod ključ prepozna po njegovi obliki (wkl_…), ne po imenu, in sprejme vsako ime. Enotno ime ima kljub temu prednosti:

  • V upravljanju poverilnic Excela, Power BI in sistema Windows je na prvi pogled vidno, da gre za osebni ključ in ne za prijavo SQL Server.
  • Po telefonu zadošča „uporabniško ime pkuser, geslo vaš ključ“, brez pojasnjevanja, katero ime je mišljeno.
  • Nihče ne vpiše imena iz drugega sistema in ga nato ne zamenja za del dostopa.

V SQL Serverju ne ustvarite prijave pkuser: geslo brez oblike ključa prehod preveri kot prijavo SQL Server s tem imenom.

LastnostDoločitevRazlog
Oblikawkl_ + 43 naključnih znakov (256 bitov, črke in števke) + 6 kontrolnih znakov, skupaj 53 znakovOrodja za iskanje gesel in ključev po fiksni predponi in dolžini najdejo ključ v izvorni kodi in dnevnikih; kontrolni znaki razkrijejo tipkarsko napako brez poizvedbe
Shranjevanjesamo SHA-256 ključa, javni identifikator (k + 8 znakov) in zadnji 4 znakiS kopijo datoteke ni mogoče poslati nobene veljavne zahteve. Pri 256 bitih naključnosti zadošča SHA-256; počasen postopek za gesla bi vsaki zahtevi vzel čas in ničesar ne bi zaščitil
Prikazenkrat, ob izdajiNato ga ima le še imetnik
Pravicepravila (Clients), dodeljena osebi; ključ omejuje in nikoli sam ne podeljuje: aliasi, samo branje, omrežja (From/ExceptFrom)Ključ za Excel na tujem računalniku dobi le, kar potrebuje, brez lastnega pravila
Veljavnostdatum poteka za vsak ključ; brez navedbe najdaljša veljavnost Gateway:Store:MaxKeyLifetimeDays (privzeto 365, 0 = brez poteka); daljša je zavrnjenaPozabljen ključ na starem računalniku sam preneha delovati
Zaklepanjezaklepanje ključa ali izklop osebe velja od naslednje zahteve, brez ponovnega nalaganja in brez ponovnega zagonaKljuč se pri vsaki zahtevi poišče v shrambi (indeksni dostop do lokalne datoteke); ni predpomnilnika, iz katerega bi zaklenjen ključ še naprej učinkoval
Več na oseboda, za vsako napravo ali namen z oznakoIzgubljen prenosnik stane en ključ, ne vseh
Dokazilorevizijska sled: Person (Kennung); „zadnja uporaba“ s časom in izvorom za vsak ključKdo je ravnal in kateri ključ je treba zakleniti
Identiteta v SQL ServerjuČe ima oseba lastno prijavo (--login) in alias Persons: Impersonate (kar zahteva Windows v AuthMode), zahteva teče pod njo (EXECUTE AS LOGIN, velja DenyImpersonate). Sicer pod prijavo aliasa. V obeh primerih je oseba samo za branje v kontekstu seje: SESSION_CONTEXT(N'wkl.person'), SESSION_CONTEXT(N'wkl.key')Sprožilci, privzete vrednosti stolpcev in pogledi lahko vprašajo, kdo je ravnal, tudi brez lastne prijave. Bazen povezav kontekst pred naslednjo zahtevo ponastavi
Ključi storitvenikoli ne zamenjajo identiteteProgram ni oseba

„Zadnja uporaba“ se zbira in zapiše vsakih 60 sekund ter ob zaustavitvi, ne pri vsaki zahtevi: vsako pisanje v datoteko bi prehod spodbudilo k ponovnemu branju. Ob sesutju se izgubi največ ena minuta statistike, nikoli pa pooblastilo. Pisanj, ki ne spremenijo obratovalnih podatkov (uporaba, ključi, osebe), prehod ne obravnava kot nove različice in jih ne sporoči.

Upravljanje oseb in ključev – prek skrbniškega vmesnika ali na računalniku prehoda z ukazi save-person, issue-key, revoke-key in list-keys; izvedejo se s konfiguracijo in okoljem prehoda, tudi medtem ko prehod teče. Klic, možnosti in izhodne kode so opisani v Ukazi na strežniku: osebe in ključi. Ti ukazi ne pišejo v dnevnik sprememb (kdor jih izvede, ima tako ali tako dostop do datoteke); ukazi za odklepanje init-admin, reset-totp in remove-sign-in-rule pa vanj pišejo, z izvajalcem „Konsole (Rechner, Konto)“ (konzola (računalnik, račun)).

OdgovorPomen
401 „Der persönliche Schlüssel ist unbekannt.“ (Osebni ključ je neznan.)Takšnega ključa ni ali pa gre za tipkarsko napako
401 „Persönliche Schlüssel sind an diesem Dienst nicht eingerichtet.“ (Osebni ključi v tem prehodu niso nastavljeni.)PersonalKey v AuthMode ni vklopljen
403 „Die Person zu dieser Anmeldung ist gesperrt.“ (Oseba te prijave je zaklenjena.)Račun Windows ali prijava SQL Server pripadata zaklenjeni osebi. Če isti račun pripada več osebam, prehod tega ne preveri
401 „… ist abgelaufen.“ (… je potekel.) / „… ist gesperrt.“ (… je zaklenjen.) / „… ruht; er gilt nur, solange die Verwaltung ihn freigeschaltet hat.“ (… miruje; velja le, dokler ga ima skrbništvo odobrenega.) / „Die Person zu diesem Schlüssel ist gesperrt.“ (Oseba tega ključa je zaklenjena.)Stanje ključa ali osebe. To razlikovanje izve le, kdor ključ ima; ugibanje ključev je brez možnosti za uspeh
403 „Dieser persönliche Schlüssel gilt nicht für diese Herkunft.“ (Ta osebni ključ ne velja za ta izvor.)Ključ navaja omrežja, zahteva pa prihaja od drugod ali pa njenega izvora ni mogoče ugotoviti
403 „Der Zugriff auf diese Ressource ist nicht freigegeben.“ (Dostop do tega vira ni odobren.)Pravila osebe ali omejitev ključa (alias, samo branje)
403 „Die SQL-Server-Anmeldung dieser Person gibt es nicht.“ (Prijava SQL Server te osebe ne obstaja.)--login navaja prijavo, ki je SQL Server ne pozna; prehod ne preklopi nazaj na prijavo aliasa

Ključi na zahtevo

Ključ je mogoče izdati tako, da miruje, dokler ga skrbništvo ne omogoči za določen čas, na primer ključ samo za branje brez 2FA, ki ga oseba v Power BI shrani za predstavitve upravi. Ključ ostane pri vseh omogočitvah isti, zato Power BI ni treba znova nastavljati. Zunaj omogočenega časa ne omogoča nobenega dostopa, tudi če je ostal v poročilu, na prenosniku ali v e-pošti.

KorakKako
Izdajaissue-key z "onDemand": true; ključ miruje od izdaje
Omogočitevactivate-key { "id", "hours" }; po izteku se konča sama. Nova omogočitev nadomesti tekočo
Predčasni konecdeactivate-key { "id" }; velja od naslednje zahteve
Najdaljše trajanjemax_activation_hours (množica Settings), sicer Gateway:Store:MaxActivationHours, privzeto 12, od 1 do 168. Nikoli prek datuma poteka ključa

Omogoči ga lahko samo skrbništvo, ne oseba sama; oboje je zapisano z izvajalcem in koncem v dnevniku sprememb. Najdaljša veljavnost ključa (MaxKeyLifetimeDays) še naprej velja: po njej je potreben nov ključ.

Samopostrežba

Oseba, ki se lahko prijavi na drug način (s svojim računom Windows ali svojo prijavo SQL Server), si osebne ključe izda sama, na primer za Excel na prenosniku, in jih tudi zaklene. Skrbništvo mora samopostrežbo le enkrat omogočiti.

NaslovTeloOdgovor
GET /self/v1/keys–200 { person, keys: [...], maximumDays }; za vsak ključ identifikator, oznaka, zadnji 4 znaki, samo branje, aliasi, izdaja, potek, zaklepanje, zadnja uporaba – nikoli ključ
POST /self/v1/issue-key{ "label", "expiresAt"?, "readOnly"?, "databases"? }201 s key, enkrat; Cache-Control: no-store
POST /self/v1/revoke-key{ "id" }200; za tuj ali že zaklenjen ključ prehod odgovori z 404, ne da bi razkril, ali obstaja
…/self/v1/{alias}/…kot zgorajisto za prijavo SQL Server: njeno geslo SQL Server preveri na viru podatkov, zato ga naslov navede
PraviloRazlog
Samo z računom Windows ali prijavo SQL Server, dodeljeno prek lastnega računa oz. lastne prijave osebe (Persons.WindowsAccount, Persons.SqlLogin); skupina ni osebaOsebni ključ ne more izdajati ključev: ukraden ključ bi se sicer lahko sam obnavljal mimo svojega poteka in zaklepa. Ključ storitve ne pripada nobeni osebi
Izklopljeno, dokler skrbništvo nastavitve self_service_key_days (množica Settings) ali Gateway:Store:SelfServiceKeyDays ne nastavi na več kot 0Ali si osebe smejo same ustvarjati dostope, odloča skrbništvo
Sam izdan ključ vedno poteče: brez navedbe po self_service_key_days, najpozneje po krajši od te vrednosti in MaxKeyLifetimeDaysKljuče brez poteka izdaja samo skrbništvo
Omejiti ga je mogoče na samo branje in na aliase, ne pa z omrežji ali z izjemo od 2FA (400)Oboje je odločitev skrbništva
Pravice so pravila osebe, kot pri vsakem osebnem ključuSamopostrežba ničesar ne razširi
Pravilnik prijave samopostrežbo obravnava kot skrbništvo (obseg Admin); nova shramba tam zahteva 2FAKdor izdaja dostope, opravlja skrbništvo, čeprav le za lastni dostop. S privzetim pravilom oseba potrebuje nastavljen 2FA in sejo (/auth/v1/totp, za prijavo SQL Server /auth/v1/totp/{alias})
Samo prek zaščitene povezave, kot skrbništvo; izdaja in zaklepanje sta zapisana v dnevniku sprememb kot Person (Selbstbedienung)Odgovor vsebuje ključ

„WklGatewayClient – razred VBA za podatkovni prehod“ (dokumentacija aplikacije za upravljanje) za to ponuja OwnKeys, IssueOwnKey in RevokeOwnKey.

Pravilnik prijave in 2FA

Pravilnik prijave določa, kateri postopek prijave za kateri del prehoda iz katerih omrežij ali držav potrebuje 2FA ali je zavrnjen, na primer „osebni ključi iz omrežja podjetja brez kode, od zunaj samo s TOTP“, „prijave SQL Server nikoli od zunaj“ ali „dostop do podatkov samo iz Nemčije“. Shranjen je v skrbniški shrambi in ga urejate prek množic SignInRules, SignInRuleItems, SignInRuleExceptions, SignInRuleExceptionItems in Settings skrbniškega vmesnika; brez shrambe so mogoče le zavrnitve (Gateway:Security:SignInRules v konfiguracijski datoteki).

Polje pravilaVrednostiPomen
ScopeAll (privzeto), Data, AdminDel: podatkovni vmesniki ali skrbništvo
MethodAny (privzeto), ApiKey, PersonalKey, Windows, SqlLoginPostopek prijave klicatelja
EffectRequireTotp (privzeto), DenyPotreben 2FA ali zavrnitev
From / ExceptFromomrežja, kot je 10.0.0.0/8, ali ime lastnega omrežja iz `Gateway:SignInLog:Networks`Izvor; prazno = vsak. Ime velja za vsa omrežja, ki so tam navedena pod njim; neznano ime prepreči zagon. Izvor, ki ga ni mogoče ugotoviti, je v obsegu vsakega pravila
Persons / ExceptPersonsosebe (ime; v shrambi Id, značilnost person/except_person)Samo za te osebe oz. ne zanje; prazno = vsak klicatelj. Potrebuje skrbniško shrambo
WindowsGroups / ExceptWindowsGroupsskupine Windows (ime ali SID)Samo za člane oziroma ne zanje; znano le pri prijavi z računom Windows. Neznana skupina prepreči zagon
Countries / ExceptCountrieskode držav po ISO 3166-1 alpha-2, kot sta DE, TH (velike in male črke niso pomembne)Samo za zahteve iz teh držav oziroma ne zanje; prazno = vsaka država. Država, ki je ni mogoče ugotoviti, je v obsegu pravila. Koda, ki ni iz dveh črk, prepreči zagon
Operators / ExceptOperatorsoperaterji omrežja kot avtonomni sistemi, na primer AS3320 (tudi 3320)Samo za zahteve iz omrežij teh operaterjev oz. ne zanje; prazno = vsak. Operater, ki ga ni mogoče ugotoviti, je v obsegu pravila (glejte Po operaterju omrežja, programu in času)
Clients / ExceptClientsvrsta programa, na primer Power Query, WinHTTP, Browser, PowerShellSamo za zahteve, ki navajajo ta program, oz. ne zanje; prazno = vsak. Podatek navaja odjemalec; zahteva brez User-Agent je v obsegu pravila
Hours / ExceptHoursčasovna okna, na primer Mon-Fri 06:00-20:00, Sat,Sun, 22:00-06:00Samo ob teh časih oz. ne ob njih; prazno = kadar koli. Ura prehoda v časovnem pasu Gateway:SignInLog:TimeZone. Okno, ki ga ni mogoče prebrati, prepreči zagon
Exceptionsseznam izjem (glejte spodaj)Zahteve, ki hkrati izpolnjujejo vse značilnosti izjeme, so pravila oproščene, po želji le do določenega časa
LabelbesediloOpomba, brez učinka
ModeEnforce (privzeto), ReportUveljavitev ali le preizkus. Pravilo v preizkusu se ovrednoti pri vsaki prijavi, vendar ne spremeni nobene odločitve; dogodek prijave zabeleži, kako bi pravilo odločilo (glejte Preizkus pravila)

Za posamezne osebe ali skupine. Pravilo je mogoče omejiti na osebe ali skupine Windows ali pa jih iz njega izvzeti, na primer „od zunaj nihče, razen Franka Mustermanna“: { Scope: Data, Effect: Deny, ExceptFrom: [10.0.0.0/8], ExceptPersons: [Frank Mustermann] }. Osebo prehod prepozna po njenem osebnem ključu, njenem lastnem računu Windows ali njeni prijavi SQL Server; skupino le pri prijavi z računom Windows. Klicatelj, ki ni dodeljen nobeni osebi (ključ storitve), ne spada pod nobeno takšno pravilo in pod nobeno izjemo. Kaj pravilo pomeni za osebo, prikaže explain-sign-in skrbniškega vmesnika.

Po državi. Državo zahteve prehod prebere iz geolokacijske zbirke dnevnika prijav: v pomnilniku, brez dostopa do omrežja in samo, če kakšno pravilo navaja države. Zahteva nima države, če geolokacijska zbirka ni naložena, če pride s tega računalnika, iz lastnega omrežja (`Gateway:SignInLog:Networks`) ali iz zasebnega omrežja ali če zbirka naslova ne pozna. Takšna neznana država je v obsegu vsakega pravila: „dostop do podatkov samo iz Nemčije“ jo zavrne. Lastna omrežja zato izvzemite z njihovimi naslovi, ne z državo:

{ "Scope": "Data", "Effect": "Deny", "Label": "samo Nemčija",
  "ExceptCountries": [ "DE" ], "ExceptFrom": [ "10.0.0.0/8" ] }

Pomembno: Država, izpeljana iz naslova, je ocena, ne dokaz. VPN, posredniški strežnik ali mobilno omrežje lahko izvor premakne v drugo državo, geolokacijske zbirke pa se pri posameznih omrežjih motijo. Pravila po državi so dodatna plast poleg ključev, omrežij in 2FA; nobenega od njih ne nadomeščajo.

Po operaterju omrežja, programu in času

Pravilo lahko sprašuje tudi po operaterju omrežja, iz katerega pride zahteva, po programu in po uri. Te tri značilnosti niso enako zanesljive:

ZnačilnostVir vrednostiZanesljivostNeznana, če
Operater omrežjadatoteka ASN geolokacijske zbirke dnevnika prijav, prebrana le, če kakšno pravilo navaja operaterjeopažena: prehod jo izpelje iz naslova; večinoma zanesljiva, VPN jo premaknedatoteka ASN ni naložena, lasten ali zaseben naslov, naslov neznan
ProgramUser-Agent zahteve, združen kot v dnevniku prijav (Power Query, WinHTTP, Browser, PowerShell, sicer prva beseda)navedba odjemalca: vsak program lahko pošlje katero koli besedilo; Excel in Power BI Desktop pošiljata istobrez User-Agent (gonilnik ODBC ga ne pošilja)
Časura prehoda v časovnem pasu Gateway:SignInLog:TimeZone (prazno: pas strežnika)opaženanikoli

Neznan operater ali manjkajoč program je kot neznana država v obsegu pravila in ne izpolni nobene značilnosti izjeme. Program, ki ga odjemalec le navaja, je zato primeren za omejevanje („skrbništvo samo iz WinHTTP“ zavrne brskalnik). Kot edina značilnost izjeme pa oprosti vsakogar, ki pošlje to besedilo; v izjemi ga zato povežite z osebami, omrežji ali koncem veljavnosti.

Časovno okno zapišete kot [dnevi] [hh:mm-hh:mm]:

  • Dnevi Mon, Tue, Wed, Thu, Fri, Sat, Sun kot seznam (Sat,Sun) ali razpon (Mon-Fri, tudi Fri-Mon); brez dni velja vsak dan.
  • Ure z izključnim koncem; 24:00 je konec dneva; brez ur velja ves dan.
  • Okno čez polnoč (Mon-Fri 22:00-06:00) pripada dnevu, ko se začne: od petka ob 22.00 do sobote ob 6.00 je v njem, ponedeljek ob 3.00 ni.

„Prijava SQL Server samo od ponedeljka do petka, od 6.00 do 20.00“:

{ "Method": "SqlLogin", "Effect": "Deny", "Label": "SQL samo v delovnem času",
  "ExceptHours": [ "Mon-Fri 06:00-20:00" ] }

„Iz omrežij drugih operaterjev samo z 2FA, iz obrata 3 nikoli“:

{ "Scope": "Data", "Effect": "RequireTotp", "Label": "koda iz tujih omrežij",
  "ExceptOperators": [ "AS3320" ], "ExceptFrom": [ "Obrat 3" ] }

Lastna in zasebna omrežja nimajo operaterja omrežja. Brez ExceptFrom bi pravilo kodo zahtevalo tudi v obratu.

Dogodek prijave v Signals navaja ocenjenega operaterja omrežja (operator), program (client) in pod trust za vsak signal, kako zanesljiv je (observed, claimed, verified).

Časovno omejene izjeme. Seznami ExceptPersons, ExceptCountries in ExceptFrom izvzemajo vsak zase in trajno: ExceptPersons: [Frank Mustermann] Franka oprosti v vsaki državi. Izjema v Exceptions pa oprosti le, če hkrati veljajo vse njene značilnosti, na primer „Frank Mustermann s Tajske do

  1. novembra„:
{ "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" } ] }
Polje izjemeVrednostiPomen
Personsosebe (ime; v shrambi Id)Klicatelj je ena od njih; prazno = vsak
WindowsGroupsskupine Windows (ime ali SID)Klicatelj je član ene od njih; prazno = vsak
Countrieskode držav kot zgorajZahteva pride iz ene od njih; prazno = vsaka država
Fromomrežja, kot je 203.0.113.0/24, ali imena lastnih omrežijIzvor je v enem od njih; prazno = vsak
Operatorsoperaterji omrežja, na primer AS3320Izvor pripada enemu od njih; prazno = vsak
Clientsvrsta programa kot zgorajZahteva navaja enega od njih; prazno = vsak. Podatek navaja odjemalec
Hoursčasovna okna kot zgorajZahteva je v enem od njih; prazno = kadar koli
Untiltrenutek v UTC, na primer 2026-11-02T00:00:00ZOd tega trenutka izjema ne oprosti nikogar več; prazno = brez konca. Vrednost brez časovnega pasu velja kot UTC
LabelbesediloOpomba, brez učinka
  • Vsaj ena značilnost ali konec. Izjema brez obojega bi trajno oprostila vsakogar; preverjanje ob zagonu in skrbniški vmesnik jo zavrneta.
  • Neznano nikoli ne oprosti. Neznana država, neznan izvor, neznan operater omrežja, manjkajoč program ali klicatelj, ki ni dodeljen nobeni osebi, ne izpolni nobene značilnosti, ki to preverja. Brez geolokacijske zbirke izjema po državi torej ne velja, namesto da bi odprla pravilo.
  • Konec velja takoj. Prehod ga ob vsaki zahtevi primerja s svojo uro; sprememba za to ni potrebna. Ko konec opazi, ga enkrat zapiše v dnevnik sprememb (Entity exception-lapsed, izvajalec Dienst (Ablauf), prejšnje stanje: pravilo, opomba in konec). Potekla izjema ostane, dokler je ne odstranite.

Previdno pri ustvarjanju zavrnitve. Pravilo velja, takoj ko je shranjeno. Kdor zavrnitev za vse obsege najprej ustvari brez izjem in značilnosti doda pozneje, se v tistem trenutku sam zaklene. Zavrnitve zato ustvarjajte s save-sign-in-rule skrbniškega vmesnika, ki pravilo in izjeme shrani v eni spremembi; če se je to zgodilo, pomaga remove-sign-in-rule na strežniku.

Šteje vsako ustrezno pravilo, zavrnitev ima prednost pred vsem drugim; vrstni red nima pomena. Izjema: izmenjavo kode in nastavitev 2FA (/auth/v1/totp, /auth/v1/enrol) prehod presoja samo po pravilih z obsegom All; zavrnitev samo za Data ali Admin tam ne prepreči nobenega poskusa. Prijavo SQL Server pa SQL Server preveri, preden pravilnik presodi: iz zavrnjenega izvora napačno geslo odgovori z 401, pravilno pa s 403; napadalec torej izve, ali je geslo pravilno, omeji ga le meja neuspelih poskusov. Če ne velja nobeno pravilo, odločajo le pravice. Pravilnik se ne uporablja v razvojnem okolju brez prijave; pravilnik, ki je zaklenil skrbništvo, popravijo ukazi na strežniku. Nova shramba vsebuje pravilo „skrbništvo samo z 2FA“ (Scope: Admin, Effect: RequireTotp); kot vsako drugo ga je mogoče spremeniti ali izbrisati. Ne glede na to fiksna spodnja meja Gateway:Store:RequireAdminTotp (privzeto true) zahteva 2FA za skrbništvo in samopostrežbo, pri vsakem postopku prijave in z vsakega izvora; tudi ključ s TotpExempt je ne odpravi. Izklopiti jo je mogoče samo v konfiguracijski datoteki. Preverjanje ob zagonu zavrne RequireTotp za ključe storitve, saj program ni oseba in nima 2FA; namesto tega zapišite Deny.

2FA s kodami TOTP. Časovno odvisne kode po RFC 6238 (6 mest, 30 sekund), kot jih ustvari vsaka aplikacija Authenticator. 2FA pripada osebi: osebni ključ jo navede; račun Windows in prijava SQL Server jo najdeta prek njenega lastnega računa (WindowsAccount) oziroma njene lastne prijave (SqlLogin); primerja se samo ime prijave, brez razlikovanja velikih in malih črk, prek vseh aliasov in strežnikov, zato tako odprta seja ne velja le za alias, na katerem je bila koda izmenjana. Skupina ni oseba; prijava, ki se ne ujema z nobeno osebo ali se ujema z dvema, prejme 403, če je zahtevan 2FA. Nastavi ga skrbništvo (enroll-totp), najbolje z enkratno povezavo: stran prikaže naslov otpauth:// kot kodo QR in poleg nje ključ za ročni vnos. Skrivnost je zapečatena v shrambi (z lastnim namenom, ob zamenjavi glavnega ključa jo reseal-store na novo šifrira).

Nastavitev ob prvi prijavi. Če oseba 2FA še ni nastavila, pravilnik pa 2FA zahteva, lahko oseba nastavitev nekaj časa opravi sama, z osnovno prijavo (prvi faktor), ki do tedaj velja samo za to:

POST /auth/v1/enrol[/{alias}]   osnovna prijava kot pri izmenjavi kode
Telo: { }                       200: { "person", "secret", "uri", "qrPng", "openUntil" }
Telo: { "code": "123456" }      201: kot pri izmenjavi - nastavitev 2FA končana, seja odprta
  • Kdaj. V roku totp_enrol_hours (množica Settings, sicer Gateway:Security:TotpEnrolHours, privzeto 24, največ 168, 0 izklopi nastavitev ob prijavi) po izdaji ključa, s katerim pride zahteva; za osebo brez ključa (račun Windows) do časa, ki sta ga na strežniku nastavila init-admin ali reset-totp.
  • Zakaj rok. Dokler oseba ne nastavi 2FA, jo predstavlja ključ sam. Kdor ga v tem času prestreže, bi lahko nanj vezal svojo aplikacijo Authenticator. Rok ta čas ohranja kratek; ključ, ki je čakal predolgo, je treba izdati znova.
  • Enkrat. Potrditev konča rok in je zapisana v dnevniku sprememb; osebi z nastavljenim 2FA se nastavitev ne ponudi več. Če ga je kdo drug nastavil prej, zakoniti imetnik to opazi prav po tem. Nov 2FA tedaj nastavi skrbništvo.
  • Dva koraka. Brez kode prehod ustvari podatke za izračun kod in odgovori z naslovom, ključem za ročni vnos in kodo QR kot PNG; zapečateni se shranijo šele s prvo ustrezno kodo. Nov klic brez kode nadomesti ustvarjene podatke.
  • Na vsako drugo zahtevo osebe prehod do tedaj odgovori z 401 in WWW-Authenticate: Wkl-Totp realm="Wkl.Data.Gateway", enrol="/auth/v1/enrol". Aplikacija za upravljanje tedaj prikaže kartico za nastavitev; razred VBA WklGatewayClient sporoči gwErrEnrolmentRequired in ponudi BeginTotpEnrolment/ConfirmTotpEnrolment.

Koda v zameno za sejo. Koda velja 30 sekund; gonilnik, ki tabelo bere po straneh, je ne more zahtevati pri vsaki zahtevi. Koda se zato enkrat zamenja za sejo, ki se nato v glavi X-Wkl-Session pošlje z vsako zahtevo:

POST /auth/v1/totp            osnovna prijava: osebni ključ ali račun Windows
POST /auth/v1/totp/{alias}    osnovna prijava: prijava SQL Server (Basic), preverjena na tem aliasu
Telo: { "code": "123456" }                   po želji z "role": "vertrieb"
201:   { "session": "…", "id": "t…", "person": "…", "header": "X-Wkl-Session", "expiresAt": "…" }

Če telo navaja role, je seja vezana na to identiteto podatkovne zbirke: zahteva brez lastne izbire teče pod njo. Izbira se preveri pri vsaki zahtevi, ne pri izmenjavi.

  • Seja ni prijava. Vsaka zahteva še naprej vsebuje osnovno prijavo; seja velja le za osebo, postopek in (pri ključu) ključ, s katerim je bila odprta. Ukraden žeton sam ne omogoča dostopa. Zato se uporablja lastna glava namesto Authorization: Bearer, saj ta pri Windows in Basic že prenaša osnovno prijavo.
  • Trajanje totp_session_hours (množica Settings, sicer Gateway:Security:TotpSessionHours), privzeto 10 ur, od 1 do 168.
  • Konec: potek; Revoked v SessionTokens; zaklepanje ključa; izklop osebe; nova nastavitev ali odstranitev njenega 2FA. Preveri se pri vsaki zahtevi.
  • Koda velja enkrat (njen časovni korak mora biti poznejši od nazadnje sprejetega) in en korak (30 sekund) pred uro prehoda ali za njo; ta toleranca je fiksna in je ni mogoče nastaviti. Pet napačnih kod na osebo oziroma dvajset na izvor v 15 minutah vodi do 429. Števci so v pomnilniku: ponovni zagon jih ponastavi, kdor pa pozna ime, lahko osebo z napačnimi poskusi za nekaj časa zaklene.
  • Izmenjava je mogoča samo prek zaščitene povezave (HTTPS, zaupanja vreden posredniški strežnik s https, isti računalnik).

Odjemalci brez pogovornega okna (Power BI, Excel, skripti) ne morejo zahtevati kode. Zanje obstajajo ključi s TotpExempt: izvzeti so iz zahteve po 2FA, ne pa iz zavrnitve, in so dovoljeni samo kot ključi samo za branje. S pravicami, ki osebo omejijo na odobrene poglede, in po želji z vezavo na omrežje je to ozko omejen dostop za poročila.

OdgovorPomen
401 z WWW-Authenticate: Wkl-Totp realm="Wkl.Data.Gateway", endpoint="/auth/v1/totp"Potreben 2FA: seje ni ali ni veljavna. Pri prijavi SQL Server endpoint navede alias (/auth/v1/totp/{alias}). Gonilnik ODBC kodo zahteva v pogovornem oknu in sejo hrani, dokler proces teče
401 „Der Code ist falsch oder wurde schon benutzt.“ (Koda je napačna ali je bila že uporabljena.)Izmenjava zavrnjena
403 „Die Anmelderichtlinie lässt dieses Anmeldeverfahren von dieser Herkunft nicht zu.“ (Pravilnik prijave tega postopka prijave iz tega izvora ne dovoli.)Pravilo Deny. Odgovor ne navaja države; dnevnik prijav zavrnitev, ki temelji samo na pravilih z državami, zabeleži z razlogom deniedByCountry, sicer z denied
401 z WWW-Authenticate: Wkl-Totp realm="Wkl.Data.Gateway", enrol="/auth/v1/enrol"Pravilnik zahteva 2FA, oseba pa 2FA še ni nastavila; to lahko stori zdaj
403 „… gehört zu keiner Person“ (… ne pripada nobeni osebi) / „… ist keiner eingerichtet, und die Frist … ist abgelaufen.“ (… ni nastavljen, rok … pa je potekel.)Pravilo zahteva 2FA, uporaba 2FA pa ni mogoča
403 „Ein zweiter Faktor wird nur über HTTPS oder vom eigenen Rechner angenommen.“ (Koda 2FA se sprejme samo prek HTTPS ali z istega računalnika.)Izmenjava prek nezaščitene povezave
429Preveč napačnih kod

Preizkus pravila

Novo pravilo – predvsem zavrnitev – najprej preizkusite z Mode = Report. Pravilo se tedaj pri vsaki prijavi ovrednoti, kot da bi bilo uveljavljeno, vendar ničesar ne spremeni: kdor bi bil brez njega sprejet, ostane sprejet. Dogodek prijave ga v Rules navede z "mode": "report"; SignInRuleReports za vsako pravilo in različico prešteje, koliko prijav bi zadelo, od koliko oseb in izvorov in katere bi oprostila izjema (glejte Skrbništvo). explain-sign-in ga prikaže ločeno pod tried.

Če je rezultat ustrezen, pravilo uveljavite z ukazom save-sign-in-rule in "mode": "Enforce"; od tedaj velja. Preklop je zapisan v dnevniku sprememb in spremeni različico pravila, tako da je dogodke iz preizkusa mogoče ločiti od dogodkov iz rednega delovanja. Spodnja meja skrbništva (RequireAdminTotp) ni pravilo in je ni mogoče preizkusiti.

Sorodne teme

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