Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Integracija podatkov in dostop do podatkov » WKL Database Gateway » Referenčni priročnik » Konfiguracija prehoda

Konfiguracija prehoda

Vsak konfiguracijski ključ prehoda pod Gateway s privzeto vrednostjo in učinkom. Vrednosti prihajajo iz appsettings.json, appsettings.<okolje>.json, okoljskih spremenljivk, zagonskih parametrov in appsettings.Local.json; pri istem ključu velja poznejši vir, appsettings.Local.json ima torej prednost pred vsemi drugimi. S skrbniško shrambo so obratovalni podatki (viri podatkov, pravila, dodelitve) shranjeni v njej namesto v datoteki. Konfiguracija, ki ne opravi preverjanja ob zagonu, prepreči zagon; dnevnik navede vsako napako.

Sintaksa

{
  "Gateway": {
    "Databases": [ { "Name": "fachdaten", "Provider": "sqlserver", "ConnectionString": "…" } ],
    "MetadataCacheSeconds": 300,
    "ResponseCompression": true,
    "Security": { "AuthMode": "ApiKey, Windows", "ApiKeys": [], "Clients": [] },
    "Limits": { "DefaultTop": 1000, "MaxTop": 10000 },
    "Store": { "Path": "store/gateway.db", "MasterKey": "env:WKL_GW_MASTER_KEY" },
    "Certificate": { "Subject": "daten.example.com" },
    "Downloads": { "Path": "downloads" }
  },
  "Kestrel": { "Endpoints": { } }
}

Kot okoljska spremenljivka z dvojnim podčrtajem: Gateway__Databases__0__ConnectionString.

Parametri

Koren vsebine

Datoteke appsettings*.json in vsaka relativna pot na tej strani se nanašajo na koren vsebine prehoda: kot storitev Windows je to programska mapa, sicer delovna mapa ob zagonu (pod systemd WorkingDirectory). Zagonski parameter --contentRoot <mapa> ga nastavi izrecno.

Skrivnosti in sklici

appsettings.json opisuje obliko in privzete nastavitve ter ne vsebuje niza povezave in ne ključa. Oboje pripada delujočemu primerku prehoda:

  • appsettings.Local.json v korenu vsebine: prehod jo prebere v vsakem okolju; pri razvoju je izključena iz gita, pri obratovanju pa vsebuje na primer zamenjavo glavnega ključa;
  • okoljske spremenljivke (Gateway__Databases__0__ConnectionString) pri delovanju prehoda.

Ključi se nastavljajo izključno kot sklic:

SklicPomen
env:NAMEOkoljska spremenljivka procesa. Priporočena oblika
file:POTVsebina datoteke, brez presledkov na začetku in koncu. Za geslo ali ključ v datoteki, ki jo sme brati samo račun storitve
plain:wertLiteral. Samo za razvoj
vault:nameRezervirano; se ne razreši in zato velja za sklic, ki ga ni mogoče razrešiti

Sklic, ki ga ni mogoče razrešiti, prepreči zagon. To je namerno: nenastavljena okoljska spremenljivka bi se sicer pokazala šele kot klicatelj, ki se brez pojasnila ne more prijaviti.

Gateway

KljučPrivzetoPomen
TransactionIdleSeconds120Kako dolgo sme transakcija, ki jo je odprl odjemalec, ostati neuporabljena, preden jo prehod povrne. Vsaka zahteva v njej rok začne znova
MaxTransactionsPerCaller4Koliko transakcij sme imeti klicatelj hkrati odprtih; vsaka nadaljnja se zavrne z 429
MetadataCacheSeconds300Kako dolgo velja katalog podatkovne zbirke. Nov objekt postane dosegljiv najpozneje po tem času, ne takoj; po izteku naslednja zahteva odgovori z dosedanjim stanjem, katalog pa se obnovi v ozadju
ResponseCompressiontrueOdgovore stisne z Brotli ali gzip, če klicatelj navede Accept-Encoding; glejte spodaj

Stisnjeni odgovori (Gateway:ResponseCompression, privzeto true): če klicatelj navede Accept-Encoding, prehod vsak odgovor stisne z Brotli ali gzip na najhitrejši stopnji, tudi prek HTTPS. JSON v vsaki vrstici ponavlja imena stolpcev, zato se dobro stisne; prek počasne povezave to občutno skrajša nalaganje velikih tabel. Gonilnik in Power Query odgovore razširita sama. Napad BREACH, ki izkorišča stisnjene odgovore HTTPS (RFC 7457, razdelek 2.6), potrebuje zaupno vrednost (geslo ali ključ) v istem odgovoru kot besedilo, ki ga izbere napadalec, in brskalnik s samodejno prijavo. Podatkovni odgovori vsebujejo le zahtevane podatke; odgovori na izmenjavo in nastavitev 2FA ter na izdajo ključa pa vsebujejo ključe ali podatke za izračun kod in so prav tako stisnjeni. Če z istega izvora ponujate spletno aplikacijo s prijavo Windows in želite to tveganje izključiti, stikalo izklopite.

Gateway:Databases

En vnos na alias. S skrbniško shrambo so viri podatkov tam (množica DataSources).

KljučPrivzetoPomen
Name–Alias, pod katerim klicatelji naslavljajo podatkovno zbirko; edini podatek o viru, ki je viden zunaj prehoda
EnabledtrueIzklopljen alias odgovarja kot neznan; pravila ostanejo
Provider–Identifikator ponudnika, ki priklopi podatkovno zbirko; priložen je sqlserver. Prazno: velja Dialect. Nenameščen ali pri preverjanju zavrnjen ponudnik prepreči zagon; prehod nikoli ne preklopi na drugega
ProviderVersion–Fiksna različica paketa ponudnika; prazno: najvišja veljavna nameščena različica
ProviderOptionspraznoNastavitve, ki jih določi in dokumentira ponudnik, kot ime/vrednost; neznano ime preverjanje ponudnika zavrne. Priloženi ponudnik za SQL Server jih ne potrebuje. Provider, ProviderVersion in ProviderOptions obstajajo tudi za vire podatkov v skrbniški shrambi (množica DataSources); kateri ponudniki so nameščeni in katere lastnosti opišejo, kažeta množici Providers in ProviderProperties (lastnosti povezave ponudnika)
DialectmssqlStarejši podatek, velja samo brez Provider: mssql je drugo ime ponudnika sqlserver; neznana vrednost prepreči zagon
ConnectionString–Niz povezave; nikoli ga ne shranjujte v repozitorij
AllowPassThroughfalseLastni stavki na tem aliasu, glejte Omogočanje lastnih stavkov SQL
AllowCheckedStatementstruePreverjeni stavki za klicatelje brez pravice sql: stiki, funkcije in množične spremembe objektov, ki jih dovoljujejo njihova pravila, glejte Preverjeni stavki; false jih zavrne
AllowSqlLoginsfalsePrijave SQL Server prek HTTP Basic na tem aliasu, glejte Nastavitev prijave z računom SQL Server
RowStampTablespraznoTabele z izračunanim žigom vrstice (schema.tabelle, schema.*, *), glejte Urejanje tabel brez različice vrstice
KeylessWriteTablespraznoTabele brez ključa, v katere je dovoljeno pisati po njihovih prvotnih vrednostih, glejte Urejanje tabel brez ključa
PersonsServiceService ali Impersonate: ali oseba – prijavljena z računom Windows ali osebnim ključem – v SQL Serverju teče pod lastno prijavo; učinek glede na postopek prijave opisuje Prijava in posredovanje identitete, nastavitev pa Posredovanje identitete oseb strežniku SQL Server. Impersonate zahteva Windows v AuthMode, sicer prehod zavrne zagon.
DenyImpersonatepraznoSeznam zavrnitev z vnosi Logins, Roles, From, ExceptFrom; velja tudi za identitete podatkovne zbirke, glejte Posredovanje identitete in identitete podatkovne zbirke

Pravilo poimenovanja aliasa

Alias (Name) postane del vsakega naslova (/odata/v4/<alias>/…, /api/v1/cf/<alias>/…) in se primerja s pravili klicateljev. Zato zanj velja isto pravilo kot za navaden identifikator SQL Serverja, brez dela s shemo:

ZnačilnostPravilo
Dolžina1 do 128 znakov (kodne enote UTF-16; znak zunaj osnovne ravnine, na primer emoji, šteje dvojno in tako ali tako ni dovoljen)
Prvi znakčrka (katera koli pisava, tudi ä, ß) ali _
Nadaljnji znakičrke, števke, _, @, #, $
Ni dovoljenopresledek, pika, vezaj, poševnica in vsak drug znak; števka, @, # ali $ na začetku
Velike in male črkeniso pomembne: Fachdaten in fachdaten sta isti alias, v naslovu, v pravilih klicateljev in pri preverjanju dvojnikov. Dva vnosa, ki se razlikujeta le v tem, preprečita zagon
Rezervirana imenanobeno. * v pravilih klicateljev pomeni vsak alias; kot ime * po pravilu o znakih tako ali tako ni dovoljen

Kršitev prepreči zagon s sporočilom „'<Name>' ist kein zulaessiger Aliasname“ ('<Name>' ni dovoljeno ime aliasa). Prek skrbniškega vmesnika (množica DataSources) vnos ni sprejet: odgovor je 422 z istim sporočilom, shramba pa ostane nespremenjena.

Vir pravila v kodi: GatewayIdentifier.IsValidPart v paketu specifikacije vmesnika Wkl.Data.Gateway.Contracts; aplikacija, ki uporablja paket, lahko pred shranjevanjem pokliče prav to metodo.

Gateway:Security

KljučPrivzetoPomen
AuthModeApiKeyPostopki prijave, ločeni z vejico: ApiKey, Windows, SqlLogin, PersonalKey; None samo v okolju Development. ApiKey zahteva vsaj en vnos pod ApiKeys, PersonalKey skrbniško shrambo; brez shrambe Windows in SqlLogin zahtevata vsaj eno preslikavo. Sicer se prehod ne zažene
ApiKeyHeaderX-Api-KeyGlava za ključe storitve in osebne ključe; glava zato, ker niz poizvedbe konča v dnevnikih dostopa, zgodovini brskalnika in sklicih
CorrelationHeaderX-Request-IdGlava s korelacijsko oznako, ki povezuje vnos v dnevniku z odgovorom z napako
ApiKeyspraznoKljuči storitve: Client (klicatelj) in Key (sklic). Vnosi brez ApiKey v AuthMode preprečijo zagon
ClientspraznoPravila: Id, Databases, Resources (tables, views, functions, procedures, sql, admin; * brez sql in admin), Objects in ExceptObjects (*, schema.*, schema.name; prazno = vsi objekti teh vrst; ne poleg sql), Verbs, ReadOnly; glejte Pravice
WindowsAccountspraznoAccount (ime ali SID) in Client; glejte Nastavitev prijave z računom Windows
SqlLoginspraznoLogin (ime ali *) in Client
RateLimit:PerCaller300Zahteve na klicatelja in obdobje; 0 omejitev izklopi. Naslednje strani, ki jih je izdal prehod, ne štejejo
RateLimit:WindowSeconds60Dolžina obdobja v sekundah
TrustedProxiespraznoNaslovi posredniških strežnikov pred prehodom, katerih X-Forwarded-For, X-Forwarded-Proto in X-Forwarded-Host prehod upošteva; glejte Delovanje prehoda za strežnikom IIS ali drugim posredniškim strežnikom
SignInRulespraznoPravilnik prijave. Brez skrbniške shrambe velja, kot je zapisan tukaj, in pozna samo Deny. S skrbniško shrambo je le začetna vrednost ob ustvarjanju shrambe (tudi RequireTotp); nato veljajo samo pravila v shrambi. Pravila navajajo omrežja, osebe, skupine Windows, države (Countries, ExceptCountries) in časovno omejene izjeme (Exceptions); Mode = Report pravilo preizkusi, namesto da bi ga uveljavilo. Glejte Pravilnik prijave in 2FA
TotpSessionHours10Trajanje seje 2FA v urah, od 1 do 168; nastavitev totp_session_hours v shrambi ima prednost
TotpEnrolHours24Rok, v katerem sme oseba 2FA ob prvi prijavi nastaviti sama, od 0 do 168; 0 to izklopi; totp_enrol_hours v shrambi ima prednost

Gateway:Limits

KljučPrivzetoPomen
DefaultTop1000Velikost okna, če je klicatelj ne navede
MaxTop10000Največje okno; večja vrednost se omeji na to vrednost. Skupine po $apply brez navedbe okna se vrnejo v oknih te velikosti
MaxRows100000Največje število vrstic odgovora, ne glede na izvor. V lastnem vmesniku HTTP in pri lastnih stavkih skrajšan odgovor vsebuje truncated. Okno (DefaultTop, MaxTop, $top) ni nikoli večje od MaxRows, tudi po objektu: stran se zato nikoli ne skrajša na tej meji, prek OData pa se branje nadaljuje z @odata.nextLink.
MaxBodyBytes1048576Največje telo zahteve; nad tem 429
QueryTimeoutSeconds30Časovna omejitev stavka; nad tem 504 (TIMEOUT)
ObjectspraznoOdstopajoče omejitve po objektu: Match (vzorec z nadomestnimi znaki proti <alias>/<vrsta>/<objekt>, na primer fachdaten/views/container_*, za lastne stavke <alias>/sql/) in poljubne od DefaultTop, MaxTop, MaxRows, QueryTimeoutSeconds (ne MaxBodyBytes)

Omejitve virov nastavite v Gateway:Limits in jih lahko prilagodite za posamezne objekte. Vzorec se primerja z <alias>/<vrsta>/<objekt>; velja prvi ustrezni vnos v nastavljenem vrstnem redu.

Gateway:Providers

KljučPrivzetoPomen
PathpraznoMapa za ponudnike, ki jih namestite sami, absolutno ali relativno glede na koren vsebine; prazno: samo priloženi

Prehod ob zagonu išče v dveh mapah, vsakič z zgradbo <mapa>/<oznaka>/<različica>/ in datoteko provider.json v njej: v mapi providers poleg programa (priloženi ponudniki; posodobitev jo nadomesti) in pod Path (v vaši pristojnosti, ob posodobitvi ostane). Paket se naloži le, če se ime mape in identifikator ujemata, se ujema različica specifikacije vmesnika ponudnika, se ujema platforma in vsaka datoteka ustreza svoji kontrolni vsoti (SHA-256). Paket, ki ga namestite sami, ne sme uporabiti niti identifikatorja niti drugega imena priloženega ponudnika.

Ponudnik teče v prehodu z njegovimi pravicami. Pisati v obe mapi smejo le računi, ki smejo spreminjati tudi sam prehod; prek omrežja paketa ni mogoče odložiti.

Gateway:Store

{
  "Gateway": {
    "Store": {
      "Path": "store/gateway.db",
      "MasterKey": "env:WKL_GW_MASTER_KEY",
      "PollSeconds": 5
    }
  }
}
NastavitevPomen
PathPot datoteke; relativno glede na koren vsebine. Prazno: ni shrambe, vse iz konfiguracijske datoteke
LogPathPot datoteke dnevnikov z dnevnikom prijav in dnevnikom obremenitve; relativno glede na koren vsebine. Prazno (privzeto): poleg shrambe s pripono -logs, torej store/gateway-logs.db za store/gateway.db
LogMaxMegabytesNajvečja velikost datoteke dnevnikov v MB (64–65.536), privzeto 4096. Nad njo prehod odstrani najstarejše vnose
MasterKeySklic (env: ali file:) na glavni ključ, najmanj 32 bajtov. Obvezno s Path
MaxKeyLifetimeDaysNajdaljša veljavnost osebnega ključa v dneh, privzeto 365; 0 dovoli ključe brez poteka
MaxActivationHoursNajdaljše trajanje odobritve ključa na zahtevo v urah (1–168), privzeto 12; nastavitev max_activation_hours v shrambi ima prednost
SelfServiceKeyDaysVeljavnost ključa, izdanega v samopostrežbi, v dneh (0–3650), privzeto 0 = samopostrežba izklopljena; nastavitev self_service_key_days v shrambi ima prednost
MasterKeyIdIdentifikator glavnega ključa, privzeto 1; od 1 do 64 znakov iz črk, števk, ., -, _, velike in male črke se razlikujejo. V vsaki zapečateni vrednosti je zapisan nešifrirano
RetiredKeysNadomeščeni glavni ključi med zamenjavo ključa, vsak vnos z Id in Key (sklic); z njimi se vrednosti le odpirajo, nobena se ne zapečati
PollSecondsRazmik preverjanja sprememb v sekundah, privzeto 5; 0 ga izklopi
RequireAdminTotpFiksna spodnja meja, privzeto true: skrbništvo vedno zahteva 2FA, tudi če je bilo pravilo v shrambi izbrisano; izklopiti jo je mogoče samo tukaj, glejte Prvi skrbnik in reševanje
PickupMinutesVeljavnost enkratne povezave v minutah, privzeto 15 (od 1 do 1440)
MailLinkHoursVeljavnost enkratne povezave po pošti v urah, privzeto 72 (od 1 do 720); nastavitev mail_link_hours v shrambi ima prednost
TotpIssuerIme, pod katerim aplikacija Authenticator prikaže vnos za 2FA, privzeto Wkl.Data.Gateway; izberite ga razločljivo za vsako namestitev. Namestitveni paket ga nastavi iz imena namestitve (GW_INSTALLATION_NAME). Od 1 do 64 znakov, brez presledkov na robu, dvopičja (ločilo v naslovu za aplikacijo), narekovajev in krmilnih znakov; nastavitev installation_name v shrambi ima prednost. Novo ime velja le za 2FA, nastavljen pozneje

SetupKey in EmergencyAccess ne obstajata več. Nastavitveni ključ je prek HTTPS veljal z vsakega računalnika in je samodejno znova postal veljaven, ko se noben skrbnik ni več mogel prijaviti, in to brez 2FA. Prvega skrbnika zdaj ustvarite z ukazom init-admin na strežniku. Konfiguracija, ki ti vrednosti še navaja, se še vedno zažene; prehod ob zagonu sporoči, da ju ne upošteva.

Gateway:SignInLog

Dnevnik prijav v datoteki dnevnikov poleg skrbniške shrambe, pravila prijave in sporočanje njihovih ugotovitev; brez shrambe prehod ne beleži ničesar.

"Gateway": {
  "SignInLog": {
    "TimeZone": "Europe/Ljubljana",
    "Networks": [ { "Name": "Obrat 3", "Network": "10.3.0.0/16" } ],
    "GeoIp": { "StaleDays": 60 },
    "Alerts": { "Recipients": [ "varnost@example.com" ], "DigestHour": 7 }
  }
}
NastavitevPrivzetoPomen
EnabledtrueBeleženje prijav
SuccessWindowMinutes15Uspešna prijava je zapisana enkrat na toliko minut za vsako kombinacijo osebe, postopka in izvora (1–1440)
EventDays90Koliko dni nazaj bereta SignInOrigins in SignInEvents brez lastnega časovnega pogoja (1–3650). Ne briše ničesar: posamezni dogodki ostanejo, dokler datoteka dnevnikov ne doseže svoje velikosti (Gateway:Store:LogMaxMegabytes)
HourDays400Hramba urnih vrednosti v dneh (1–3650)
TimeZonečasovni pas strežnikaOznaka časovnega pasu (ime Windows ali IANA) za Weekday in HourOfDay, za dneve in ure ugotovitev in profilov, za časovna okna pravilnika prijave ter za uro v sporočilih; shranjuje se v UTC
Alerts:RecipientspraznoE-poštni naslovi, na katere prehod sporoča ugotovitve. Prazno: brez pošte, ugotovitve le v dnevniku prehoda in v SignInFindings. Zahteva pošiljanje pošte
Alerts:DigesttrueUgotovitve stopnje ask sporoči enkrat na dan v zbirnem sporočilu; false to izklopi
Alerts:DigestHour7Ura (0–23, TimeZone), od katere se pošlje dnevno zbirno sporočilo
NetworkspraznoLastna omrežja z Name (1–64 znakov) in Network (naslov ali omrežje v zapisu CIDR); prvo ujemajoče omrežje poimenuje izvor. Zahteva iz lastnega omrežja za pravila po državi nima ne države ne operaterja omrežja. V From in ExceptFrom pravila prijave ime velja za vsa omrežja, navedena pod njim
GeoIp:Foldermapa geoip poleg datoteke shrambeMapa geolokacijske zbirke, relativno glede na koren vsebine
GeoIp:MaxMegabytes256Največja velikost datoteke geolokacijske zbirke v MB, pri prenosu in po razširitvi (1–2048)
GeoIp:StaleDays60Starost v dneh, od katere datoteka velja za zastarelo (GeoIpFiles.Stale) (1–365)

Vir geolokacijske zbirke ni nastavljen tukaj, temveč v shrambi (set-geoip-source), ker k njemu lahko spada licenčni ključ in ga mora spreminjati skrbništvo.

Sporočanje ugotovitev. Vsaka ugotovitev je zapisana v dnevniku prehoda (act kot opozorilo, ask kot informacija) s pravilom, časom in osebo. Z Alerts:Recipients prehod vsako ugotovitev stopnje act dodatno takoj pošlje po pošti, ugotovitve stopnje ask pa enkrat na dan v zbirnem sporočilu. Sporočilo navede pravilo, čas, osebo in številko ugotovitve, nikoli naslova, države ali ključa; ti so na voljo le upravičenim osebam v skrbniškem vmesniku. Zbirno sporočilo, ki ga poštni strežnik ni sprejel, prehod pošlje znova naslednji dan.

Gateway:Mail

Pošiljanje pošte za sporočanje ugotovitev. Brez vnosa prehod ne pošilja pošte.

"Gateway": {
  "Mail": {
    "Transport": "smtp",
    "Host": "mail.example.com",
    "Port": 587,
    "Encryption": "starttls",
    "Username": "gateway@example.com",
    "FromAddress": "gateway@example.com",
    "FromName": "Podatkovni prehod",
    "PublicBaseUrl": "https://gateway.example.com"
  }
}
NastavitevPrivzetoPomen
Transportnonenone (brez pošiljanja), smtp ali file (vsako sporočilo kot datoteka v MailboxDirectory, za preizkuse)
Host, Port–, 587Poštni strežnik za smtp
Encryptionstarttlsstarttls, tls ali none
VerifyPeertruePreverjanje potrdila poštnega strežnika
UsernamepraznoPrijavno ime na poštnem strežniku
Password–Geslo na poštnem strežniku. Ne vpisujte ga v datoteko, temveč ga nastavite kot okoljsko spremenljivko prehoda Gateway__Mail__Password
TimeoutSeconds10Čakanje na poštni strežnik
FromAddress, FromNamepraznoPošiljatelj; FromAddress je obvezen
PublicBaseUrlpraznoJavni naslov prehoda (https://…); obvezen za vsako pošiljanje
MailboxDirectorypraznoMapa za file, relativno glede na koren vsebine
StricttrueZavrne nevarne nastavitve: file, nešifrirano povezavo, nepreverjeno potrdilo, nešifriran javni naslov. Izklopite le za preizkuse

Nastavitev, s katero pošiljanje ni mogoče, prepreči zagon in navede razlog; enako velja za Alerts:Recipients brez Transport. none brez prejemnikov je običajno stanje.

Gateway:LoadLog

Dnevnik obremenitve v datoteki dnevnikov poleg skrbniške shrambe; brez shrambe prehod ne beleži ničesar.

"Gateway": {
  "LoadLog": { "PersonDays": 3, "SlowMilliseconds": 2000 }
}
NastavitevPrivzetoPomen
EnabledtrueBeleženje obremenitve po oblikah; izklopljeno beleženje stane le eno preverjanje na zahtevo
HourDays400Hramba urnih vrednosti po oblikah v dneh (1–3650); hkrati zgornja meja za export-load
PersonDays7Hramba dnevnih številk po osebah v dneh (1–90)
SlowDays7Hramba posameznih počasnih zahtev v dneh (1–90)
SlowMilliseconds1000Od tega trajanja v milisekundah naprej se zahteva zabeleži posamično (10–600000)

Zahtev na /health prehod ne beleži. V eni minuti hrani največ 5.000 različnih oblik in 2.000 počasnih zahtev; preostalih ne šteje in to sporoči v svojem dnevniku.

Gateway:Certificate

"Gateway": {
  "Certificate": { "Subject": "daten.example.local", "StoreLocation": "LocalMachine", "StoreName": "My" }
}
"Gateway": {
  "Certificate": { "File": "zertifikat/gateway.pfx", "Password": "env:WKL_GW_CERT_PASSWORD" }
}
NastavitevPomen
SubjectIme, na katerega je izdano potrdilo (splošno ime ali ime DNS), v shrambi potrdil Windows; samo v Windows
StoreLocation, StoreNameMesto v shrambi potrdil, privzeto LocalMachine in My; StoreLocation je LocalMachine ali CurrentUser
FileDatoteka potrdila (PFX ali PEM s ključem v KeyFile oz. v isti datoteki), na vsaki platformi; relativno glede na koren vsebine
KeyFileDatoteka z zasebnim ključem k datoteki PEM v File; prazno, če je v isti datoteki
PasswordSklic (env: ali file:) na geslo datoteke PFX
WarnDaysOd koliko dni pred potekom stanje prehoda opozarja, od 1 do 365, privzeto 14 (pod 3 dnevi: bad)

Učinek in zamenjavo brez ponovnega zagona opisuje Nastavitev protokola HTTPS in potrdila.

Gateway:Downloads

KljučPrivzetoPomen
PathdownloadsMapa namestitvenih paketov za /download/, relativno glede na koren vsebine; prazno izklopi prenašanje

Gateway:SchemaState

KljučPrivzetoPomen
Anonymousfalsetrue: stanje sheme tudi brez prijave. Izdelek, različica sheme in razpon različic razkrijejo stopnjo popravkov aplikacije; vklopite samo, če jo sme poznati vsak računalnik, ki doseže storitev

Gateway:Updates

Modul za posodobitve namešča posodobitve v podatkovne zbirke, za katere ima ta mapa zaščiteno konfiguracijo.

KljučPrivzetoPomen
Folder%ProgramData%\Wkl.Data.Gateway\updatesMapa zaščitenih konfiguracij, ena datoteka <id>.json za vsako podatkovno zbirko. setup-host (namestitveni paket) nastavi mapo updates v podatkovni mapi in jo ustvari tako, da jo lahko spreminjajo samo skrbniki in sistem
PollSeconds15Razmik med dvema pregledoma v sekundah, od 5 do 60

Konfiguracija velja samo, če datoteko in mapo lahko spreminjajo le skrbniki in SYSTEM (račun storitve ju bere) in se ime datoteke ujema z id; sicer modul podatkovno zbirko izpusti in razlog navede v update-databases. Modul se poveže z lastno prijavo SQL Server, nikoli z računom storitve; geslo ni v datoteki, temveč v spremenljivki okolja ali v datoteki, ki jo lahko berejo le skrbniki, SYSTEM in račun storitve:

{
  "format": 1, "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": [ "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE…" ],
  "inbox": "D:\\Updates\\Demo", "archive": "D:\\Updates\\Demo-Archiv",
  "backup": { "mode": "native", "target": "D:\\Sicherung" }
}

keys so javni ključi izdajateljev, ki jim podatkovna zbirka zaupa. Pri backup.mode native modul pred vsakim paketom naredi varnostno kopijo v mapo backup.target na strežniku podatkovne zbirke; pri external za varnostne kopije poskrbi IT sam in vsak paket čaka na potrditev. starterSource (neobvezno) je mapa, v katero modul zapiše stanje sheme za WKL Bootstrapper. Če v mapi ni datoteke, modul ne naredi ničesar.

Hramba varnostnih kopij. Po vsaki novi varnostni kopiji modul izbriše starejše kopije iste podatkovne zbirke, vendar samo kopijo, ki ima vsaj BackupKeepCount novejših (privzeto 10) in je starejša od BackupKeepDays dni (privzeto 30; 0: šteje samo število). Najnovejših BackupKeepCount torej vedno ostane. Obe vrednosti nastavite v množici `UpdateSettings`. Upoštevane so samo datoteke, ki jih je ustvaril modul sam (<zbirka>-<llllMMdd-uummss>-<paket>.bak, čas v UTC); druge datoteke v mapi ostanejo nedotaknjene. Modul briše prek datotečnega sistema in samo, če pod backup.target vidi pravkar zapisano kopijo: na istem računalniku kot SQL Server ali v mapi v skupni rabi, ki jo dosežeta oba (\\strežnik\mapa\...). Če je mapa samo na drugem strežniku podatkovne zbirke, modul to enkrat zapiše v dnevnik storitve in vse kopije pusti; počisti jih IT.

Sporočila. Kaj se zgodi s paketom, modul sporoči po poteh, ki so za podatkovno zbirko vklopljene v množici `UpdateSettings`:

  • Dnevnik dogodkov (privzeto): dnevnik aplikacij, vir Wkl.Data.Gateway. Vir registrira namestitev (setup-host); če ga ni, je to enkrat zapisano v dnevniku storitve.
  • Datoteka: za vsak dan (UTC) datoteka %ProgramData%\Wkl.Data.Gateway\logs\updates\<LLLL-MM-DD>.jsonl z enim objektom JSON v vsaki vrstici (utc, database, product, event, file, schema, code, message). Mapa je nespremenljiva; modul datotek nikoli ne izbriše.
  • Pošta: prejemnikom podatkovne zbirke prek poštnih nastavitev storitve (`Gateway:Mail`), z enakim besedilom kot v dnevniku dogodkov. Pošta se pošlje zunaj prehoda; počasen ali nedosegljiv poštni strežnik ne zadrži nobenega paketa.
ID dogodkaeventRavenPomen
4101waitingOpozoriloPaket čaka: na potrditev, varnostno kopijo IT, zaprtje aplikacij ali zaklep (code)
4102announcedInformacijaNezdružljiv paket je napovedan in se izvede ob roku
4103doneInformacijaPaket je nameščen
4104failedNapakaPaket je zavrnjen ali neuspešen in je v failed
4105nextKeyOpozoriloIzdajatelj napoveduje nov ključ (SHA-256); velja šele, ko ga IT doda v keys
4106blockedOpozoriloRok je potekel, starejše aplikacije pa so še odprte ali še niso znane

Čakanje modul sporoči samo, ko se spremeni njegov razlog, ne ob vsakem prehodu.

Kestrel

Naslovi poslušanja in fiksno potrdilo po pravilih ASP.NET Core (Kestrel:Endpoints); glejte Nastavitev protokola HTTPS in potrdila. Brez tega razdelka velja --urls.

Opombe

  • Preverjanje ob zagonu zavrne protislovne nastavitve, namesto da bi izbralo eno od njih: podvojene ključe, dve pravili enega klicatelja za isti alias, sql na pravilu samo za branje, omrežje z nastavljenimi biti gostitelja, RequireTotp za ključe storitve, neznane račune Windows.
  • SqlLogin v AuthMode zahteva vsaj en vir podatkov z AllowSqlLogins in vsaj en vnos pod SqlLogins. Brez skrbniške shrambe manjkajoči podatek prepreči zagon. S skrbniško shrambo se prehod zažene in manjkajočo nastavitev zapiše v dnevnik, ker je stikalo in preslikave tam mogoče nastaviti šele po vklopu postopka; do tedaj se prijava SQL Server konča z 401. Obratno preverjanje ob zagonu in skrbništvo zavrneta AllowSqlLogins in preslikave brez vklopljenega postopka. Vrstni red korakov: Nastavitev prijave z računom SQL Server.
  • Spremenjena konfiguracijska datoteka začne veljati šele po ponovnem zagonu; spremembe v skrbniški shrambi veljajo takoj.

Primer

Alias z lastnimi stavki in klicatelj, ki jih sme uporabljati:

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

Glejte tudi

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