Scrydon

Renforcement de l'ingress

Comment l'ingress Traefik supprime les en-têtes d'identité falsifiables avant que les requêtes n'atteignent les services Scrydon.

Chaque requête externe entrant dans Scrydon transite par Traefik. Avant qu'une requête n'atteigne une application, un middleware de suppression d'en-têtes purge les en-têtes portant une identité qui permettraient sinon à un attaquant d'usurper l'identité d'un appelant interne.

Pourquoi c'est important

Les appelants de services internes dans Scrydon sont identifiés par des en-têtes émis par leur sidecar Dapr — un jeton de sidecar, un identifiant d'application appelant, un espace de noms appelant. Si un attaquant externe pouvait définir ces en-têtes sur une requête entrante, il pourrait se faire passer pour un service interne et contourner le contrôle d'identité au niveau applicatif.

La défense est simple : supprimer tous les en-têtes d'identité interne au niveau de l'ingress, avant que la requête n'atteigne tout code applicatif.

Ce qui est supprimé

Le middleware Traefik vide les en-têtes suivants sur chaque requête entrante :

En-têteRôle (lorsque défini légitimement par Dapr)
dapr-api-tokenPreuve qu'une requête a traversé un sidecar Dapr
dapr-caller-app-idL'identifiant applicatif interne de l'appelant
dapr-caller-namespaceL'espace de noms Kubernetes de l'appelant
x-scrydon-internal-devMarqueur de contournement en mode dev (rejeté hors dev de toute façon)

Une requête interne légitime ne passe jamais par l'ingress — elle transite par le maillage interne. Une requête qui entre par l'ingress n'a, par définition, aucun besoin légitime de ces en-têtes ; leur suppression ne coûte rien et prévient l'usurpation d'identité.

Terminaison TLS

Traefik gère la terminaison TLS. La posture recommandée :

  • TLS 1.2+ uniquement. TLS 1.0 / 1.1 désactivé.
  • HSTS avec max-age=31536000 et includeSubDomains.
  • Gestion des certificats via cert-manager. Le chart provisionne une ressource Certificate cert-manager si vous l'activez.
  • Suites de chiffrement limitées aux AEAD uniquement (ex. TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256).

La liste exacte des suites de chiffrement est configurable dans le chart Helm sous traefik.tls.options.

Limitation de débit

L'ingress applique des limites de débit par IP sur les points d'entrée d'authentification pour ralentir les tentatives de force brute :

  • Connexion : 10 requêtes par minute par IP.
  • Réinitialisation de mot de passe : 5 requêtes par minute par IP.
  • Validation de clé API : 60 requêtes par minute par IP.

Les limites sont configurables dans le chart Helm sous traefik.middleware.rateLimit.

Derrière un équilibreur de charge terminant TLS ? Les limites par IP (et les IP clientes dans le journal d'audit) ne sont précises que si Traefik fait confiance à la plage source de l'équilibreur de charge en amont — sinon chaque requête est attribuée à l'IP de l'équilibreur. Si une Azure Application Gateway, un AWS ALB ou un équipement similaire termine TLS devant Traefik, définissez forwardedHeaders.trustedIPs sur les points d'entrée Traefik. Voir Derrière un équilibreur de charge terminant TLS.

CORS

Par défaut, le CORS est désactivé pour l'API de la plateforme — la seule origine web légitime est votre interface Scrydon elle-même, servie depuis le même domaine. Si votre déploiement héberge l'interface sur un domaine séparé (rare mais supporté), définissez explicitement les origines autorisées dans platform.cors.origins. Les caractères génériques ne sont pas acceptés.

Ce que vous pouvez vérifier

Après le déploiement, vous pouvez vérifier le renforcement depuis n'importe quel client accessible par Internet :

# Header stripping — these headers should not appear in the response,
# and the service should not honour them.
curl -i https://scrydon.yourcompany.internal/health \
  -H "dapr-caller-app-id: api-platform" \
  -H "x-scrydon-internal-dev: 1"

# TLS configuration — version + cipher
openssl s_client -connect scrydon.yourcompany.internal:443 -tls1_3 < /dev/null

Voir aussi

  • SPIFFE / mTLS — le modèle d'identité interne que la suppression d'en-têtes à l'ingress protège.
  • Frontière réseau — modèle complet des flux entrants / sortants.
Sur cette page

Sur cette page