Sécurité & plateforme · 2026.4.x

2026 OpenClaw MeshMac en pratique : passerelle multi-nœuds fail-closed, validate JSON et gouvernance anti-dérive du proxy

2026.04.25 Équipe Meshmac 8 min de lecture

Sur un maillage MeshMac, une dérive silencieuse apparaît dès qu’un nœud accepte un rechargement proxy élargi pendant que les autres restent stricts. La ligne 2026.4.x impose le fail-closed, des listes blanches de correctifs et des preuves JSON. Parcours minimal : Node figé, installation homogène, doctor et validate, diff par mesh_node_id, rollback depuis des clichés datés.

Sommaire

Croisez avec le guide cluster, les plugins fail-closed et la rotation des jetons pour éviter ports de debug partagés.

La gouvernance de la dérive repose sur une habitude simple : aucune promotion de politique sans artefact JSON archivé et sans comparaison normalisée entre hôtes. Lorsque plusieurs fuseaux horaires co-éditent la passerelle, cette discipline évite que « ça marchait sur ma machine » ne devienne « ça filtrait sur un seul nœud du pool ».

Tensions typiques lorsque plusieurs ingénieurs touchent la passerelle

  1. Vérité éclatée. Correctif sur un Mac sans promotion du même gateway.proxy.yaml vers les autres mesh_node_id → refus asymétriques.
  2. Surcharges hors dépôt. Env shell ou LaunchAgents ajoutent des cibles proxy jamais revues en liste blanche.
  3. Incidents feutrés. Trafic malgré validate rouge : 403 ou 502 ressemblent à une panne amont, pas à une politique scindée.

Matrice : comment trancher sur le runtime proxy

La grille ci-dessous cadrera la décision devant l’équipe plateforme. Elle distingue l’expérimentation locale du cadre contractuel imposé aux Mac mutualisés où chaque élargissement d’egress se répercute sur des locataires qui n’ont pas voté le changement.

Approche Quand elle convient Risque MeshMac partagé
Rechargement tolérant Lab mono-utilisateur sans egress réglementé Une faute de frappe élargit les sorties pour tous les locataires du pool
Fail-closed + listes blanches de correctifs Production, CI convergente, webhooks Exige promotion disciplinée et contrôles JSON, mais borne le rayon d’explosion
Fichiers statiques sans lien runtime Documentation interne Les opérateurs croient être protégés pendant que la mémoire conserve d’anciennes tables proxy

Étapes reproductibles : Node, installation, clichés, doctor, validate

Unifier Node. node -v identique sur chaque passerelle (LTS 20.x ou 22.x) pour stabiliser OpenSSL et le diagnostic TLS.

Même build OpenClaw. Joignez openclaw version au ticket ; des builds mélangés font souvent disparaître des champs JSON au validate.

Point de reprise A (avant toute édition).

mkdir -p .meshmac-checkpoints/2026-04-25-gateway
cp gateway.proxy.yaml .meshmac-checkpoints/2026-04-25-gateway/
cp com.openclaw.gateway.plist .meshmac-checkpoints/2026-04-25-gateway/ 2>/dev/null || true

Bloc 2026.4.x. proxy.runtime.fail_closed: true, listes allowed_patch_channels et allowed_upstream_hosts, pas de reload générique ; YAML ou clé inconnue ⇒ refus de démarrage.

Doctor puis validate strict avec traces JSON.

openclaw gateway doctor --json | tee /tmp/gw-doctor.json
openclaw gateway validate --config ./gateway.proxy.yaml --strict --json | tee /tmp/gw-validate.json

Ports et jetons. Admin sur 127.0.0.1 dédié, webhooks derrière ACL, secrets hors YAML versionné. Voir répartition et bascule avant de rouvrir l’ingress.

Attendu JSON et alignement multi-nœuds

ok: true seulement si toutes les barrières passent. Exemple de corps utile pour la corrélation logs :

{
  "ok": true,
  "mesh_node_id": "meshmac-pool-7",
  "policy_revision": "gateway-proxy@2026-04-25.3",
  "fail_closed": true,
  "allowed_upstream_hosts": ["api.meshmac.internal", "hooks.slack.com"],
  "deny_reason": null
}

Gouvernance anti-dérive : agréger puis trier pour que l’ordre des clés ne cache rien :

for h in gw-a gw-b gw-c; do
  ssh "$h" 'openclaw gateway validate --config /etc/openclaw/gateway.proxy.yaml --strict --json'
done | jq -s 'sort_by(.mesh_node_id)' > /tmp/tous-passerelles.json
jq -c '.[] | {mesh_node_id, policy_revision, fail_closed}' /tmp/tous-passerelles.json

Points de reprise B et ordre de retour arrière

Après validate canari, cliché YAML suffixe .ok = point B. Incident : restaurer A, reload unité, boucler validate --strict --json jusqu’à même policy_revision et fail_closed sur chaque mesh_node_id. Journaliser ticket et acteur à chaque promotion. Si seul le point B est sain, vous pouvez tenter une restauration ciblée depuis B vers A fichier par fichier en observant le validate à chaque étape.

Trois faits « copier-coller » pour vos runbooks

  • Validate : alertes si mesh_node_id, policy_revision ou fail_closed manquent dans la collecte.
  • Node : versions LTS différentes = suites TLS différentes, bruit sur les incidents proxy.
  • Patches : semver ou digest ; pas de latest sur artefacts runtime partagés.

Synthèse

Contrat versionné : Node et build alignés, proxy fail-closed, traces JSON doctor/validate, diff avant trafic. Liens utiles : accueil, aide, blog.

Mesh · OpenClaw 2026

Poursuivre après le durcissement passerelle

Ouvrez le centre d’aide pour l’accès SSH et VNC, revenez à l’accueil pour comparer les classes de matériel, puis enchaînez avec le guide cluster multi-nœuds et le hub articles OpenClaw afin d’aligner rôles workers, files et quotas avec la nouvelle politique proxy. Les forfaits restent consultables sur les pages commerciales sans créer de session administrateur préalable.

Fail-closed vérifiable Maillage cohérent Guides sans login
Forfaits MeshMac