Farbschema: Riviera
Sie befinden sich hier: start » de » Dokumentation » Datenintegration und Datenzugriff » WKL Database Gateway » Referenz » Konfiguration des Dienstes (Referenz)

Konfiguration des Dienstes (Referenz)

Jeder Konfigurationsschlüssel des Dienstes unter Gateway mit Vorgabe und Wirkung. Die Werte kommen aus appsettings.json, appsettings.<Umgebung>.json, Umgebungsvariablen, Startparametern und appsettings.Local.json; bei gleichem Schlüssel gilt die spätere Quelle, appsettings.Local.json also vor allen anderen; mit einem Verwaltungsspeicher stehen die Betriebsdaten (Datenquellen, Regeln, Zuordnungen) dort statt in der Datei. Eine Konfiguration, die die Startprüfung nicht besteht, verhindert den Start; das Protokoll nennt jeden Fehler.

Syntax

{
  "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": { } }
}

Als Umgebungsvariable mit doppeltem Unterstrich: Gateway__Databases__0__ConnectionString.

Parameter

Inhaltsstamm

Die Dateien appsettings*.json und jeder relative Pfad dieser Seite beziehen sich auf den Inhaltsstamm des Dienstes: als Windows-Dienst der Programmordner, sonst das Arbeitsverzeichnis beim Start (unter systemd WorkingDirectory). Der Startparameter --contentRoot <ordner> setzt ihn ausdrücklich.

Geheimnisse und Verweise

appsettings.json beschreibt die Form und die Voreinstellungen und enthält keine Verbindungszeichenfolge und keinen Schlüssel. Beides gehört zur betriebenen Instanz:

  • appsettings.Local.json im Inhaltsstamm – der Dienst liest sie in jeder Umgebung; in der Entwicklung ist sie git-ignoriert, im Betrieb trägt sie etwa den Wechsel des Hauptschlüssels;
  • Umgebungsvariablen (Gateway__Databases__0__ConnectionString) im Dienstbetrieb.

Schlüssel werden ausschließlich als Verweis konfiguriert:

VerweisBedeutung
env:NAMEProzessumgebungsvariable. Die empfohlene Form
file:PFADInhalt der Datei, ohne Leerraum am Anfang und Ende. Für ein Geheimnis in einer Datei, die nur das Dienstkonto lesen darf
plain:wertLiteral. Nur für die Entwicklung
vault:nameReserviert; wird nicht aufgelöst und gilt damit als Verweis, der sich nicht auflösen lässt

Ein Verweis, der sich nicht auflösen lässt, verhindert den Start. Das ist beabsichtigt: eine nicht gesetzte Umgebungsvariable würde sonst als Aufrufer auftreten, der sich unerklärlich nicht anmelden kann.

Gateway

SchlüsselVorgabeBedeutung
TransactionIdleSeconds120Wie lange eine Transaktion, die ein Client geöffnet hat, ungenutzt bleiben darf, bevor der Dienst sie zurücknimmt. Jede Anfrage in ihr beginnt die Frist neu
MaxTransactionsPerCaller4Wie viele Transaktionen ein Aufrufer zugleich offen halten darf; jede weitere wird mit 429 abgewiesen
MetadataCacheSeconds300Wie lange der Ressourcenkatalog einer Datenbank gilt. Ein neues Objekt ist innerhalb dieser Zeit erreichbar, nicht sofort; nach Ablauf antwortet die nächste Anfrage mit dem bisherigen Stand und der Katalog wird im Hintergrund erneuert
ResponseCompressiontrueAntworten mit Brotli oder gzip packen, wenn der Aufrufer Accept-Encoding nennt; siehe unten

Komprimierte Antworten (Gateway:ResponseCompression, Vorgabe true): Nennt der Aufrufer Accept-Encoding, packt der Dienst jede Antwort mit Brotli oder gzip auf der schnellsten Stufe – auch über HTTPS. JSON wiederholt in jeder Zeile die Spaltennamen und lässt sich deshalb stark packen; über eine langsame Leitung verkürzt das die Ladezeit großer Tabellen deutlich. Der Treiber und Power Query entpacken von sich aus. Zum Angriff BREACH, der komprimierte HTTPS-Antworten ausnutzt (RFC 7457, Abschnitt 2.6): Er braucht ein Geheimnis in derselben Antwort wie ein vom Angreifer gewählter Text und einen Browser mit selbsttätiger Anmeldung. Datenantworten tragen nur die angefragten Daten; die Antworten auf den Austausch und die Einrichtung des zweiten Faktors und auf das Ausstellen eines Schlüssels tragen aber ein Geheimnis und werden ebenfalls komprimiert. Wer eine Browseranwendung mit Windows-Anmeldung vom selben Ursprung bedient und die Frage ausschließen will, schaltet den Schalter ab.

Gateway:Databases

Je Eintrag ein Alias. Mit Verwaltungsspeicher stehen die Datenquellen dort (Menge DataSources).

SchlüsselVorgabeBedeutung
Name–Alias, unter dem Aufrufer die Datenbank ansprechen; der einzige Teil, der den Prozess verlässt
EnabledtrueAbgeschaltet antwortet der Alias wie ein unbekannter; Regeln bleiben stehen
Provider–Kennung des Providers, der die Datenbank anbindet; mitgeliefert ist sqlserver. Leer: es gilt Dialect. Ein nicht installierter oder bei der Prüfung abgewiesener Provider verhindert den Start; der Dienst weicht nie auf einen anderen aus
ProviderVersion–Feste Fassung des Provider-Pakets; leer: die höchste gültige installierte Fassung
ProviderOptionsleerEinstellungen, die der Provider festlegt und dokumentiert, als Name/Wert; einen unbekannten Namen weist die Prüfung des Providers ab. Der mitgelieferte SQL-Server-Provider braucht keine. Provider, ProviderVersion und ProviderOptions gibt es ebenso für Datenquellen im Verwaltungsspeicher (Menge DataSources); welche Provider installiert sind und welche Eigenschaften sie beschreiben, zeigen die Mengen Providers und ProviderProperties (Verbindungseigenschaften eines Providers)
DialectmssqlÄltere Angabe, gilt nur ohne Provider: mssql ist ein Zweitname des Providers sqlserver; ein unbekannter Wert verhindert den Start
ConnectionString–Verbindungszeichenfolge; nie in ein Repository
AllowPassThroughfalseEigene Anweisungen an diesem Alias, siehe Eigene Anweisungen freischalten
AllowCheckedStatementstrueGeprüfte Anweisungen für Aufrufer ohne das Recht sql: Verbünde, Funktionen und Mengenänderungen über Objekte, die ihre Regeln freigeben, siehe Geprüfte Anweisungen; false lehnt sie ab
AllowSqlLoginsfalseSQL-Anmeldungen per HTTP Basic an diesem Alias, siehe SQL-Anmeldung einrichten
RowStampTablesleerTabellen mit berechnetem Zeilenstempel (schema.tabelle, schema.*, *), siehe Zeilenstempel einschalten
KeylessWriteTablesleerTabellen ohne Schlüssel, die über ihre alten Werte geschrieben werden dürfen, siehe Tabellen ohne Schlüssel freigeben
PersonsServiceService oder Impersonate: ob eine Person – mit Windows-Konto oder persönlichem Schlüssel angemeldet – in SQL Server unter ihrer eigenen Anmeldung läuft; Wirkung je Verfahren unter Anmeldung und Weitergabe der Identität, Einrichtung unter Personen an SQL Server weitergeben. Impersonate verlangt Windows in AuthMode, sonst verweigert der Dienst den Start.
DenyImpersonateleerSperrliste je Eintrag Logins, Roles, From, ExceptFrom; gilt auch für Datenbank-Identitäten, siehe Identität

Namensregel für den Alias

Der Alias (Name) wird Teil jeder Adresse (/odata/v4/<alias>/…, /api/v1/cf/<alias>/…) und wird gegen die Regeln der Aufrufer verglichen. Deshalb gilt für ihn dieselbe Regel wie für einen gewöhnlichen Bezeichner von SQL Server, ohne Schema-Teil:

MerkmalRegel
Länge1 bis 128 Zeichen (UTF-16-Codeeinheiten; ein Zeichen außerhalb der Basisebene, etwa ein Emoji, zählt doppelt und ist ohnehin nicht zulässig)
Erstes Zeichenein Buchstabe (jede Schrift, auch ä, ß) oder _
Weitere ZeichenBuchstaben, Ziffern, _, @, #, $
Nicht zulässigLeerzeichen, Punkt, Bindestrich, Schrägstrich und jedes andere Zeichen; eine Ziffer, @, # oder $ am Anfang
Groß-/Kleinschreibungohne Bedeutung: Fachdaten und fachdaten sind derselbe Alias, in der Adresse, in den Regeln der Aufrufer und beim Prüfen auf Doppel. Zwei Einträge, die sich nur darin unterscheiden, verhindern den Start
Reservierte Namenkeine. * in den Regeln der Aufrufer meint jeden Alias; als Name ist * nach der Zeichenregel ohnehin unzulässig

Ein Verstoß verhindert den Start mit der Meldung „'<Name>' ist kein zulaessiger Aliasname“. Über die Verwaltungsschnittstelle (Menge DataSources) wird der Eintrag nicht übernommen: Antwort 422 mit derselben Meldung; der Speicher bleibt unverändert.

Quelle der Regel im Code: GatewayIdentifier.IsValidPart im Vertragspaket Wkl.Data.Gateway.Contracts; eine Anwendung, die das Paket bezieht, kann vor dem Speichern genau diese Methode aufrufen.

Gateway:Security

SchlüsselVorgabeBedeutung
AuthModeApiKeyAnmeldeverfahren, durch Komma getrennt: ApiKey, Windows, SqlLogin, PersonalKey; None nur in der Umgebung Development. ApiKey verlangt mindestens einen Eintrag unter ApiKeys, PersonalKey einen Verwaltungsspeicher; ohne Speicher verlangen Windows und SqlLogin mindestens eine Zuordnung. Sonst startet der Dienst nicht
ApiKeyHeaderX-Api-KeyKopfzeile für Dienstschlüssel und persönliche Schlüssel – eine Kopfzeile, weil eine Abfragezeichenfolge in Zugriffsprotokollen, Browserverläufen und Verweisen landet
CorrelationHeaderX-Request-IdKopfzeile mit der Korrelationskennung, unter der Protokoll und Fehlerantwort zusammengehören
ApiKeysleerDienstschlüssel: Client (Aufrufer) und Key (Verweis). Einträge ohne ApiKey in AuthMode verhindern den Start
ClientsleerRegeln: Id, Databases, Resources (tables, views, functions, procedures, sql, admin; * ohne sql und admin), Objects und ExceptObjects (*, schema.*, schema.name; leer = alle Objekte der Arten; nicht neben sql), Verbs, ReadOnly; siehe Rechte
WindowsAccountsleerAccount (Name oder SID) und Client; siehe Windows-Anmeldung
SqlLoginsleerLogin (Name oder *) und Client
RateLimit:PerCaller300Anfragen je Aufrufer und Zeitraum; 0 schaltet die Grenze ab. Folgeseiten, die der Dienst ausgegeben hat, zählen nicht
RateLimit:WindowSeconds60Länge des Zeitraums in Sekunden
TrustedProxiesleerAdressen vorgeschalteter Proxys, deren X-Forwarded-For, X-Forwarded-Proto und X-Forwarded-Host der Dienst glaubt; siehe Hinter IIS oder einem Proxy
SignInRulesleerAnmelderichtlinie. Ohne Verwaltungsspeicher gilt sie, wie sie hier steht, und kennt nur Deny. Mit Verwaltungsspeicher ist sie nur der Startwert beim Anlegen des Speichers (auch RequireTotp); danach gelten allein die Regeln im Speicher. Regeln nennen Netze, Personen, Windows-Gruppen, Länder (Countries, ExceptCountries) und befristete Ausnahmen (Exceptions); Mode = Report erprobt eine Regel, statt sie durchzusetzen. Siehe Anmeldung
TotpSessionHours10Laufzeit einer Sitzung des zweiten Faktors in Stunden, 1 bis 168; die Einstellung totp_session_hours im Speicher geht vor
TotpEnrolHours24Frist, in der eine Person den zweiten Faktor bei der ersten Anmeldung selbst einrichten darf, 0 bis 168; 0 schaltet das ab; totp_enrol_hours im Speicher geht vor

Gateway:Limits

SchlüsselVorgabeBedeutung
DefaultTop1000Fenstergröße, wenn der Aufrufer keine nennt
MaxTop10000Größtes Fenster; eine größere Angabe wird auf diesen Wert begrenzt. Gruppen nach $apply kommen ohne Angabe in Fenstern dieser Größe
MaxRows100000Größte Zeilenzahl einer Antwort, gleich woher. Auf der eigenen Route und bei eigenen Anweisungen trägt eine gekürzte Antwort truncated. Ein Fenster (DefaultTop, MaxTop, $top) ist nie größer als MaxRows, auch je Objekt: Eine Seite wird deshalb nie an dieser Grenze gekürzt, und über OData geht das Lesen mit @odata.nextLink weiter.
MaxBodyBytes1048576Größter Rumpf einer Anfrage; darüber 429
QueryTimeoutSeconds30Zeitgrenze einer Anweisung; darüber 504 (TIMEOUT)
ObjectsleerAbweichende Grenzen je Objekt: Match (Platzhaltermuster gegen <alias>/<art>/<objekt>, etwa fachdaten/views/container_*, für eigene Anweisungen <alias>/sql/) und beliebige von DefaultTop, MaxTop, MaxRows, QueryTimeoutSeconds (nicht MaxBodyBytes)

Ressourcengrenzen über Gateway:Limits, verfeinerbar je Objekt. Eine Regel wird gegen <alias>/<art>/<objekt> geprüft; die erste passende gewinnt, in der konfigurierten Reihenfolge.

Gateway:Providers

SchlüsselVorgabeBedeutung
PathleerOrdner für Provider, die der Betreiber selbst installiert, absolut oder relativ zum Inhaltsstamm; leer: nur die mitgelieferten

Der Dienst sucht beim Start in zwei Ordnern, jeweils mit dem Aufbau <Ordner>/<Kennung>/<Fassung>/ und einer Datei provider.json darin: im Ordner providers neben dem Programm (mitgelieferte Provider; eine Aktualisierung ersetzt ihn) und unter Path (gehört dem Betreiber und bleibt bei einer Aktualisierung stehen). Ein Paket wird nur geladen, wenn Ordnername und Kennung übereinstimmen, die Fassung des Provider-Vertrags passt, die Plattform passt und jede Datei ihre Prüfsumme (SHA-256) trifft. Ein Paket des Betreibers darf weder die Kennung noch einen Zweitnamen eines mitgelieferten Providers belegen.

Ein Provider läuft im Dienst mit dessen Rechten. Schreiben dürfen in beide Ordner nur Konten, die auch den Dienst selbst ändern dürfen; über das Netz lässt sich kein Paket ablegen.

Gateway:Store

{
  "Gateway": {
    "Store": {
      "Path": "store/gateway.db",
      "MasterKey": "env:WKL_GW_MASTER_KEY",
      "PollSeconds": 5
    }
  }
}
EinstellungBedeutung
PathPfad der Datei; relativ zum Inhaltsstamm. Leer: kein Speicher, alles aus der Konfigurationsdatei
LogPathPfad der Protokolldatei mit Anmelde- und Lastprotokoll; relativ zum Inhaltsstamm. Leer (Vorgabe): neben dem Speicher mit angehängtem -logs, also store/gateway-logs.db zu store/gateway.db
LogMaxMegabytesGröße, in der die Protokolldatei gehalten wird, in MB (64–65 536), Vorgabe 4 096. Darüber entfernt der Dienst die ältesten Einträge
MasterKeyVerweis (env: oder file:) auf den Hauptschlüssel, mindestens 32 Bytes. Pflicht mit Path
MaxKeyLifetimeDaysHöchstlaufzeit eines persönlichen Schlüssels in Tagen, Vorgabe 365; 0 erlaubt Schlüssel ohne Ablauf
MaxActivationHoursHöchstdauer einer Freischaltung eines Schlüssels auf Abruf in Stunden (1–168), Vorgabe 12; die Einstellung max_activation_hours im Speicher geht vor
SelfServiceKeyDaysLaufzeit eines in der Selbstbedienung ausgestellten Schlüssels in Tagen (0–3650), Vorgabe 0 = Selbstbedienung aus; die Einstellung self_service_key_days im Speicher geht vor
MasterKeyIdKennung des Hauptschlüssels, Vorgabe 1; 1 bis 64 Zeichen aus Buchstaben, Ziffern, ., -, _, Groß-/Kleinschreibung zählt. Steht im Klartext in jedem versiegelten Wert
RetiredKeysAbgelöste Hauptschlüssel während eines Schlüsselwechsels, je Eintrag Id und Key (Verweis); sie öffnen nur, mit ihnen wird nichts versiegelt
PollSecondsAbstand der Prüfung auf Änderungen in Sekunden, Vorgabe 5; 0 schaltet sie ab
RequireAdminTotpFeste Untergrenze, Vorgabe true: Die Verwaltung verlangt immer einen zweiten Faktor, auch wenn die Regel im Speicher gelöscht wurde; nur hier abschaltbar, siehe Erster Administrator und Rettung
PickupMinutesGültigkeit eines Einmal-Links in Minuten, Vorgabe 15 (1 bis 1440)
MailLinkHoursGültigkeit eines Einmal-Links per Mail in Stunden, Vorgabe 72 (1 bis 720); die Einstellung mail_link_hours im Speicher geht vor
TotpIssuerName, unter dem eine Authenticator-App den zweiten Faktor führt, Vorgabe Wkl.Data.Gateway; je Installation unterscheidbar wählen. Das Installationspaket setzt ihn aus dem Namen der Installation (GW_INSTALLATION_NAME). 1 bis 64 Zeichen, ohne Leerzeichen am Rand, Doppelpunkt (Trenner in der Adresse für die App), Anführungszeichen und Steuerzeichen; die Einstellung installation_name im Speicher geht vor. Ein neuer Name gilt nur für danach eingerichtete Faktoren

SetupKey und EmergencyAccess gibt es nicht mehr. Der Einrichtungsschlüssel galt über HTTPS von jedem Rechner aus und wurde von selbst wieder gültig, sobald kein Administrator mehr anmelden konnte – dann ohne zweiten Faktor. Den ersten Administrator legt jetzt der Befehl init-admin am Server an. Eine Konfiguration, die die Werte noch nennt, startet weiter; der Dienst meldet beim Start, dass er sie nicht beachtet.

Gateway:SignInLog

Das Anmeldeprotokoll in der Protokolldatei neben dem Verwaltungsspeicher, die Anmelderegeln und die Meldung ihrer Befunde; ohne Speicher zeichnet der Dienst nichts auf.

"Gateway": {
  "SignInLog": {
    "TimeZone": "Europe/Berlin",
    "Networks": [ { "Name": "Werk 3", "Network": "10.3.0.0/16" } ],
    "GeoIp": { "StaleDays": 60 },
    "Alerts": { "Recipients": [ "sicherheit@example.com" ], "DigestHour": 7 }
  }
}
EinstellungVorgabeBedeutung
EnabledtrueAnmeldungen aufzeichnen
SuccessWindowMinutes15Eine erfolgreiche Anmeldung erscheint einmal je so viele Minuten, Person, Verfahren und Herkunft (1–1440)
EventDays90Wie viele Tage SignInOrigins und SignInEvents ohne eigene Zeitangabe zurücklesen (1–3650). Löscht nichts: Die Einzelereignisse bleiben, bis die Protokolldatei ihre Größe erreicht (Gateway:Store:LogMaxMegabytes)
HourDays400Aufbewahrung der Stundenwerte in Tagen (1–3650)
TimeZoneZeitzone des ServersKennung einer Zeitzone (Windows- oder IANA-Name) für Weekday und HourOfDay, für die Tage und Stunden der Befunde und der Profile, für die Zeitfenster der Anmelderichtlinie sowie für die Uhrzeit in Meldungen; gespeichert wird in UTC
Alerts:RecipientsleerMail-Adressen, an die der Dienst Befunde meldet. Leer: keine Mail, Befunde nur im Dienstprotokoll und in SignInFindings. Verlangt einen Mailversand
Alerts:DigesttrueBefunde der Stufe ask einmal am Tag gesammelt melden; false schaltet das ab
Alerts:DigestHour7Ab welcher Stunde (0–23, TimeZone) die tägliche Sammlung verschickt wird
NetworksleerEigene Netze mit Name (1–64 Zeichen) und Network (Adresse oder Netz in CIDR-Form); das erste passende benennt die Herkunft. Eine Anfrage aus einem eigenen Netz hat für Regeln nach Land kein Land und keinen Netzbetreiber. In From und ExceptFrom einer Anmelderegel steht ein Name für alle unter ihm geführten Netze
GeoIp:FolderOrdner geoip neben der SpeicherdateiOrdner der Geodatenbank, relativ zum Inhaltsstamm
GeoIp:MaxMegabytes256Größte Datei der Geodatenbank in MB, beim Hochladen und entpackt (1–2048)
GeoIp:StaleDays60Ab diesem Alter in Tagen gilt eine Datei als veraltet (GeoIpFiles.Stale) (1–365)

Die Quelle der Geodatenbank steht nicht hier, sondern im Speicher (set-geoip-source), weil ein Lizenzschlüssel dazugehören kann und die Verwaltung sie ändern soll.

Meldung der Befunde. Jeder Befund steht im Dienstprotokoll – act als Warnung, ask als Information – mit Regel, Zeit und Person. Mit Alerts:Recipients schickt der Dienst zusätzlich jeden Befund der Stufe act sofort als Mail und die Befunde der Stufe ask einmal am Tag gesammelt. Eine Mail nennt Regel, Zeitpunkt, Person und Nummer des Befunds, nie Adresse, Land oder Schlüssel; diese stehen nur in der Verwaltungsschnittstelle für Berechtigte. Eine Sammlung, die niemand annahm, holt der Dienst am nächsten Tag nach.

Gateway:Mail

Mailversand für die Meldung der Befunde. Ohne Eintrag verschickt der Dienst keine Mail.

"Gateway": {
  "Mail": {
    "Transport": "smtp",
    "Host": "mail.example.com",
    "Port": 587,
    "Encryption": "starttls",
    "Username": "gateway@example.com",
    "FromAddress": "gateway@example.com",
    "FromName": "Datengateway",
    "PublicBaseUrl": "https://gateway.example.com"
  }
}
EinstellungVorgabeBedeutung
Transportnonenone (kein Versand), smtp oder file (jede Mail als Datei in MailboxDirectory, zum Testen)
Host, Port–, 587Mailserver für smtp
Encryptionstarttlsstarttls, tls oder none
VerifyPeertrueZertifikat des Mailservers prüfen
UsernameleerAnmeldename am Mailserver
Password–Kennwort am Mailserver. Nicht in die Datei schreiben, sondern als Umgebungsvariable Gateway__Mail__Password des Dienstes setzen
TimeoutSeconds10Wartezeit auf den Mailserver
FromAddress, FromNameleerAbsender; FromAddress ist Pflicht
PublicBaseUrlleerÖffentliche Adresse des Dienstes (https://…); Pflicht für jeden Versand
MailboxDirectoryleerOrdner für file, relativ zum Inhaltsstamm
StricttrueLehnt unsichere Einstellungen ab: file, unverschlüsselte Verbindung, ungeprüftes Zertifikat, unverschlüsselte öffentliche Adresse. Nur für Tests abschalten

Eine Einstellung, mit der kein Versand möglich ist, verhindert den Start mit dem Grund; ebenso Alerts:Recipients ohne Transport. none ohne Empfänger ist der gewöhnliche Zustand.

Gateway:LoadLog

Das Lastprotokoll in der Protokolldatei neben dem Verwaltungsspeicher; ohne Speicher zeichnet der Dienst nichts auf.

"Gateway": {
  "LoadLog": { "PersonDays": 3, "SlowMilliseconds": 2000 }
}
EinstellungVorgabeBedeutung
EnabledtrueLast je Form aufzeichnen; ausgeschaltet kostet es eine Prüfung je Anfrage
HourDays400Aufbewahrung der Stundenwerte je Form in Tagen (1–3650); zugleich die Obergrenze für export-load
PersonDays7Aufbewahrung der Tageszahlen je Person in Tagen (1–90)
SlowDays7Aufbewahrung der langsamen Einzelanfragen in Tagen (1–90)
SlowMilliseconds1000Ab dieser Dauer in Millisekunden wird eine Anfrage einzeln festgehalten (10–600000)

Anfragen an /health zeichnet der Dienst nicht auf. In einer Minute hält er höchstens 5 000 verschiedene Formen und 2 000 langsame Anfragen fest; was darüber hinausgeht, zählt er nicht mit und meldet es im Protokoll des Dienstes.

Gateway:Certificate

"Gateway": {
  "Certificate": { "Subject": "daten.example.local", "StoreLocation": "LocalMachine", "StoreName": "My" }
}
"Gateway": {
  "Certificate": { "File": "zertifikat/gateway.pfx", "Password": "env:WKL_GW_CERT_PASSWORD" }
}
EinstellungBedeutung
SubjectName, auf den das Zertifikat ausgestellt ist (gemeiner Name oder DNS-Name), im Zertifikatspeicher von Windows; nur unter Windows
StoreLocation, StoreNameOrt im Zertifikatspeicher, Vorgabe LocalMachine und My; StoreLocation ist LocalMachine oder CurrentUser
FileZertifikatsdatei (PFX, oder PEM mit dem Schlüssel in KeyFile bzw. derselben Datei), auf jeder Plattform; relativ zum Inhaltsstamm
KeyFileDatei mit dem privaten Schlüssel zu einer PEM-Datei in File; leer, wenn er in derselben Datei steht
PasswordVerweis (env: oder file:) auf das Kennwort einer PFX-Datei
WarnDaysAb wie vielen Tagen vor dem Ablauf der Dienststatus warnt, 1 bis 365, Vorgabe 14 (unter 3 Tagen: bad)

Wirkung und Wechsel ohne Neustart: HTTPS und Zertifikat.

Gateway:Downloads

SchlüsselVorgabeBedeutung
PathdownloadsOrdner der Installationspakete für /download/, relativ zum Inhaltsstamm; leer schaltet das Herunterladen ab

Gateway:SchemaState

SchlüsselVorgabeBedeutung
Anonymousfalsetrue: Schemastand auch ohne Anmeldung. Produkt, Schemafassung und Fassungsbereich verraten den Patchstand einer Anwendung; nur einschalten, wenn jeder Rechner, der den Dienst erreicht, ihn kennen darf

Kestrel

Lauschadressen und ein festes Zertifikat nach den Regeln von ASP.NET Core (Kestrel:Endpoints); siehe HTTPS und Zertifikat. Ohne den Abschnitt gilt --urls.

Bemerkungen

  • Die Startprüfung weist widersprüchliche Angaben ab, statt eine davon zu wählen: doppelte Schlüssel, zwei Regeln eines Aufrufers für denselben Alias, sql an einer nur lesenden Regel, ein Netz mit gesetzten Host-Bits, RequireTotp für Dienstschlüssel, unbekannte Windows-Konten.
  • SqlLogin in AuthMode verlangt mindestens eine Datenquelle mit AllowSqlLogins und mindestens einen Eintrag unter SqlLogins. Ohne Verwaltungsspeicher verhindert eine fehlende Angabe den Start. Mit Verwaltungsspeicher startet der Dienst und meldet die Lücke im Protokoll, weil Schalter und Zuordnungen dort erst nach dem Verfahren gesetzt werden können; bis dahin endet eine SQL-Anmeldung mit 401. Umgekehrt weisen Startprüfung und Verwaltung AllowSqlLogins und Zuordnungen ohne das Verfahren ab. Reihenfolge: SQL-Anmeldung einrichten.
  • Eine geänderte Konfigurationsdatei wirkt erst nach einem Neustart; Änderungen im Verwaltungsspeicher wirken sofort.

Beispiel

Ein Alias mit eigenen Anweisungen und ein Aufrufer, der sie nutzen darf:

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

Siehe auch

de/wiki/data-conectivity/database-gateway/reference/configuration.txt · Zuletzt geändert: von Wolfgang van der Stille