Ga naar inhoud

WAF en eigen domein

Deze pagina is voor het platformteam. Ze beschrijft hoe je de portal achter een Application Gateway met een Web Application Firewall (WAF) plaatst en onder een eigen domein aanbiedt. Het is een referentieontwerp: de onderstaande instellingen werken voor de portal, maar jouw gatewaymodule, namen en prioriteiten zullen afwijken. De WAF is optioneel en wordt geregeld voordat de deployment start (Prerequisites).

flowchart LR
    user[User] -->|HTTPS, custom domain| agw[Application Gateway<br/>WAF policy, HTTPS listener]
    agw -->|HTTPS, rewrite headers| app[Portal web app<br/>private endpoint]
    agw -.->|probe| h[/.backstage/health/v1/liveness/]

Eigen domein

  1. Entra app registration. Voeg de redirect-URI https://<portal-domain>/api/auth/microsoft/handler/frame toe aan de app registration van de omgeving.
  2. Terraform. Zet de variabele domain_name van de module backstage in de omgevingsroot. De module stelt dan de app settings APP_CONFIG_app_baseUrl en APP_CONFIG_backend_baseUrl in, zodat de backend de URL kent die gebruikers gebruiken.
module "backstage" {
  source      = "../../modules/backstage"
  # ...
  domain_name = "portal.contoso.example"
}
  1. DNS en certificaat. De klant levert het DNS-record dat naar de gateway (of web app) wijst en een TLS-certificaat. Zie Prerequisites.

WAF-policy

Gebruik per omgeving één WAF-policy, gekoppeld aan de HTTPS-listener van de portal. De Default Rule Set 2.1 (DRS 2.1) van Microsoft werkt het best met de portal als je ook de fine-tuningrichtlijnen van Microsoft ervoor toepast.

Instelling Waarde
Modus Prevention
Rule set Microsoft_DefaultRuleSet 2.1
Controle van de request body Uit in het voorbeeld (maximale bodygrootte 128 KB, limiet voor bestandsupload 100 MB)
Log scrubbing Aan

Regel-overrides in de voorbeeldpolicy:

Regelgroep Regel Instelling Reden
SQLI 942110, 942150, 942260, 942430, 942440 Uitgeschakeld Fine-tuningrichtlijnen van Microsoft voor DRS 2.1
LFI 930120 Ingeschakeld, actie Log De portal kan requests genereren die valse positieven veroorzaken
PROTOCOL-ENFORCEMENT 920440 Ingeschakeld, actie Log Idem

Tune eerst in Log-modus

Als je geblokkeerde requests ziet die je niet kunt verklaren, zet de regel dan op Log, zoek het request op in de WAF-logs en tune vanaf daar.

Application Gateway

Maak de volgende elementen voor de portal aan. De namen zijn voorbeelden.

Element Configuratie
Backend pool FQDN van de web app, <app-service-name>.azurewebsites.net
Backend setting HTTPS op poort 443, hostnaam ingesteld op de FQDN van de web app, request timeout 30 seconden, cookie-based affinity uitgeschakeld
HTTPS-listener Hostnaam <portal-domain>, SNI vereist, certificaat uit Key Vault, de WAF-policy gekoppeld
HTTP-listener Stuurt door naar de HTTPS-listener (permanent, pad en query behouden), zodat een URL zonder protocol werkt
Routing rules Eén voor de HTTPS-listener (backend pool, backend setting, rewrite rule set), één voor de HTTP-listener (redirect)
Rewrite rule set Voegt requestheaders toe: X-Forwarded-Host met {var_host} en X-Original-URL met {var_uri_path}
Health probe HTTPS, host ingesteld op de FQDN van de web app, interval 30 s, timeout 30 s, unhealthy threshold 3, verwacht status 200

Endpoint voor de health probe

De portal heeft twee health-endpoints.

Endpoint Gedrag
/.backstage/health/v1/liveness Geeft 200 terug zolang het proces draait
/.backstage/health/v1/readiness Geeft ook 503 terug voordat de backend klaar is met opstarten, tijdens het afsluiten en zolang de credential van de Microsoft auth provider de validatie niet doorstaat

De voorbeeldprobe gebruikt liveness. Daarmee blijft de portal bereikbaar terwijl een falende credential wordt hersteld. Gebruik readiness als je wilt dat de gateway een instantie uit de pool haalt tijdens het opstarten, het afsluiten of een credentialfout.

Toegang tot de web app

Bepaal of de web app alleen via de gateway bereikbaar is. De module backstage heeft een instelling voor publieke netwerktoegang met drie waarden: none, full (de standaard) en een beperkte waarde bedoeld voor de Azure AI agent service. Zie Architectuur. Als je de gateway als enige ingang gebruikt, beperk dan de directe toegang tot de web app.