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.jsonv 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:
| Sklic | Pomen |
|---|---|
env:NAME | Okoljska spremenljivka procesa. Priporočena oblika |
file:POT | Vsebina datoteke, brez presledkov na začetku in koncu. Za geslo ali ključ v datoteki, ki jo sme brati samo račun storitve |
plain:wert | Literal. Samo za razvoj |
vault:name | Rezervirano; 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č | Privzeto | Pomen |
|---|---|---|
TransactionIdleSeconds | 120 | Kako dolgo sme transakcija, ki jo je odprl odjemalec, ostati neuporabljena, preden jo prehod povrne. Vsaka zahteva v njej rok začne znova |
MaxTransactionsPerCaller | 4 | Koliko transakcij sme imeti klicatelj hkrati odprtih; vsaka nadaljnja se zavrne z 429 |
MetadataCacheSeconds | 300 | Kako 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 |
ResponseCompression | true | Odgovore 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č | Privzeto | Pomen |
|---|---|---|
Name | – | Alias, pod katerim klicatelji naslavljajo podatkovno zbirko; edini podatek o viru, ki je viden zunaj prehoda |
Enabled | true | Izklopljen 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 |
ProviderOptions | prazno | Nastavitve, 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) |
Dialect | mssql | Starejš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 |
AllowPassThrough | false | Lastni stavki na tem aliasu, glejte Omogočanje lastnih stavkov SQL |
AllowCheckedStatements | true | Preverjeni 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 |
AllowSqlLogins | false | Prijave SQL Server prek HTTP Basic na tem aliasu, glejte Nastavitev prijave z računom SQL Server |
RowStampTables | prazno | Tabele z izračunanim žigom vrstice (schema.tabelle, schema.*, *), glejte Urejanje tabel brez različice vrstice |
KeylessWriteTables | prazno | Tabele brez ključa, v katere je dovoljeno pisati po njihovih prvotnih vrednostih, glejte Urejanje tabel brez ključa |
Persons | Service | Service 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. |
DenyImpersonate | prazno | Seznam 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čilnost | Pravilo |
|---|---|
| Dolžina | 1 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 dovoljeno | presledek, pika, vezaj, poševnica in vsak drug znak; števka, @, # ali $ na začetku |
| Velike in male črke | niso 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 imena | nobeno. * 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č | Privzeto | Pomen |
|---|---|---|
AuthMode | ApiKey | Postopki 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 |
ApiKeyHeader | X-Api-Key | Glava za ključe storitve in osebne ključe; glava zato, ker niz poizvedbe konča v dnevnikih dostopa, zgodovini brskalnika in sklicih |
CorrelationHeader | X-Request-Id | Glava s korelacijsko oznako, ki povezuje vnos v dnevniku z odgovorom z napako |
ApiKeys | prazno | Ključi storitve: Client (klicatelj) in Key (sklic). Vnosi brez ApiKey v AuthMode preprečijo zagon |
Clients | prazno | Pravila: 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 |
WindowsAccounts | prazno | Account (ime ali SID) in Client; glejte Nastavitev prijave z računom Windows |
SqlLogins | prazno | Login (ime ali *) in Client |
RateLimit:PerCaller | 300 | Zahteve na klicatelja in obdobje; 0 omejitev izklopi. Naslednje strani, ki jih je izdal prehod, ne štejejo |
RateLimit:WindowSeconds | 60 | Dolžina obdobja v sekundah |
TrustedProxies | prazno | Naslovi 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 |
SignInRules | prazno | Pravilnik 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 |
TotpSessionHours | 10 | Trajanje seje 2FA v urah, od 1 do 168; nastavitev totp_session_hours v shrambi ima prednost |
TotpEnrolHours | 24 | Rok, 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č | Privzeto | Pomen |
|---|---|---|
DefaultTop | 1000 | Velikost okna, če je klicatelj ne navede |
MaxTop | 10000 | Največje okno; večja vrednost se omeji na to vrednost. Skupine po $apply brez navedbe okna se vrnejo v oknih te velikosti |
MaxRows | 100000 | Največ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. |
MaxBodyBytes | 1048576 | Največje telo zahteve; nad tem 429 |
QueryTimeoutSeconds | 30 | Časovna omejitev stavka; nad tem 504 (TIMEOUT) |
Objects | prazno | Odstopajoč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č | Privzeto | Pomen |
|---|---|---|
Path | prazno | Mapa 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
}
}
}
| Nastavitev | Pomen |
|---|---|
Path | Pot datoteke; relativno glede na koren vsebine. Prazno: ni shrambe, vse iz konfiguracijske datoteke |
LogPath | Pot 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 |
LogMaxMegabytes | Največja velikost datoteke dnevnikov v MB (64–65.536), privzeto 4096. Nad njo prehod odstrani najstarejše vnose |
MasterKey | Sklic (env: ali file:) na glavni ključ, najmanj 32 bajtov. Obvezno s Path |
MaxKeyLifetimeDays | Najdaljša veljavnost osebnega ključa v dneh, privzeto 365; 0 dovoli ključe brez poteka |
MaxActivationHours | Najdaljše trajanje odobritve ključa na zahtevo v urah (1–168), privzeto 12; nastavitev max_activation_hours v shrambi ima prednost |
SelfServiceKeyDays | Veljavnost ključa, izdanega v samopostrežbi, v dneh (0–3650), privzeto 0 = samopostrežba izklopljena; nastavitev self_service_key_days v shrambi ima prednost |
MasterKeyId | Identifikator 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 |
RetiredKeys | Nadomešč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 |
PollSeconds | Razmik preverjanja sprememb v sekundah, privzeto 5; 0 ga izklopi |
RequireAdminTotp | Fiksna 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 |
PickupMinutes | Veljavnost enkratne povezave v minutah, privzeto 15 (od 1 do 1440) |
MailLinkHours | Veljavnost enkratne povezave po pošti v urah, privzeto 72 (od 1 do 720); nastavitev mail_link_hours v shrambi ima prednost |
TotpIssuer | Ime, 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 }
}
}
| Nastavitev | Privzeto | Pomen |
|---|---|---|
Enabled | true | Beleženje prijav |
SuccessWindowMinutes | 15 | Uspešna prijava je zapisana enkrat na toliko minut za vsako kombinacijo osebe, postopka in izvora (1–1440) |
EventDays | 90 | Koliko 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) |
HourDays | 400 | Hramba urnih vrednosti v dneh (1–3650) |
TimeZone | časovni pas strežnika | Oznaka č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:Recipients | prazno | E-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:Digest | true | Ugotovitve stopnje ask sporoči enkrat na dan v zbirnem sporočilu; false to izklopi |
Alerts:DigestHour | 7 | Ura (0–23, TimeZone), od katere se pošlje dnevno zbirno sporočilo |
Networks | prazno | Lastna 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:Folder | mapa geoip poleg datoteke shrambe | Mapa geolokacijske zbirke, relativno glede na koren vsebine |
GeoIp:MaxMegabytes | 256 | Največja velikost datoteke geolokacijske zbirke v MB, pri prenosu in po razširitvi (1–2048) |
GeoIp:StaleDays | 60 | Starost 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"
}
}
| Nastavitev | Privzeto | Pomen |
|---|---|---|
Transport | none | none (brez pošiljanja), smtp ali file (vsako sporočilo kot datoteka v MailboxDirectory, za preizkuse) |
Host, Port | –, 587 | Poštni strežnik za smtp |
Encryption | starttls | starttls, tls ali none |
VerifyPeer | true | Preverjanje potrdila poštnega strežnika |
Username | prazno | Prijavno 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 |
TimeoutSeconds | 10 | Čakanje na poštni strežnik |
FromAddress, FromName | prazno | Pošiljatelj; FromAddress je obvezen |
PublicBaseUrl | prazno | Javni naslov prehoda (https://…); obvezen za vsako pošiljanje |
MailboxDirectory | prazno | Mapa za file, relativno glede na koren vsebine |
Strict | true | Zavrne 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 }
}
| Nastavitev | Privzeto | Pomen |
|---|---|---|
Enabled | true | Beleženje obremenitve po oblikah; izklopljeno beleženje stane le eno preverjanje na zahtevo |
HourDays | 400 | Hramba urnih vrednosti po oblikah v dneh (1–3650); hkrati zgornja meja za export-load |
PersonDays | 7 | Hramba dnevnih številk po osebah v dneh (1–90) |
SlowDays | 7 | Hramba posameznih počasnih zahtev v dneh (1–90) |
SlowMilliseconds | 1000 | Od 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" }
}
| Nastavitev | Pomen |
|---|---|
Subject | Ime, na katerega je izdano potrdilo (splošno ime ali ime DNS), v shrambi potrdil Windows; samo v Windows |
StoreLocation, StoreName | Mesto v shrambi potrdil, privzeto LocalMachine in My; StoreLocation je LocalMachine ali CurrentUser |
File | Datoteka potrdila (PFX ali PEM s ključem v KeyFile oz. v isti datoteki), na vsaki platformi; relativno glede na koren vsebine |
KeyFile | Datoteka z zasebnim ključem k datoteki PEM v File; prazno, če je v isti datoteki |
Password | Sklic (env: ali file:) na geslo datoteke PFX |
WarnDays | Od 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č | Privzeto | Pomen |
|---|---|---|
Path | downloads | Mapa namestitvenih paketov za /download/, relativno glede na koren vsebine; prazno izklopi prenašanje |
Gateway:SchemaState
| Ključ | Privzeto | Pomen |
|---|---|---|
Anonymous | false | true: 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č | Privzeto | Pomen |
|---|---|---|
Folder | %ProgramData%\Wkl.Data.Gateway\updates | Mapa 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 |
PollSeconds | 15 | Razmik 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>.jsonlz 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 dogodka | event | Raven | Pomen |
|---|---|---|---|
| 4101 | waiting | Opozorilo | Paket čaka: na potrditev, varnostno kopijo IT, zaprtje aplikacij ali zaklep (code) |
| 4102 | announced | Informacija | Nezdružljiv paket je napovedan in se izvede ob roku |
| 4103 | done | Informacija | Paket je nameščen |
| 4104 | failed | Napaka | Paket je zavrnjen ali neuspešen in je v failed |
| 4105 | nextKey | Opozorilo | Izdajatelj napoveduje nov ključ (SHA-256); velja šele, ko ga IT doda v keys |
| 4106 | blocked | Opozorilo | Rok 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,
sqlna pravilu samo za branje, omrežje z nastavljenimi biti gostitelja,RequireTotpza ključe storitve, neznane račune Windows. SqlLoginvAuthModezahteva vsaj en vir podatkov zAllowSqlLoginsin vsaj en vnos podSqlLogins. 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 z401. Obratno preverjanje ob zagonu in skrbništvo zavrnetaAllowSqlLoginsin 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 }
]
}
}
}