Niveau:timer 15 s14 contrôlesbail 30 sexport mTLS localaucun listener

Collecteur de santé edge privé

Le collecteur et son consommateur d’admission locale existent en code et en lab. Ils ne sont pas déployés sur une Instance et ne pilotent aucun carrier réel; le contrat A/B reste un modèle fermé séparé.

Timer 15 s

Indépendant et non-SPOF

navy-phone-edge-health.timer lance un oneshot root. Il n’est ni RequiredBy ni PartOf du runtime, ne le démarre pas, n’ouvre aucun listener ni port et ne participe pas au chemin d’appel.

Bail 30 s

Admission locale fail-closed

admission.py accepte un snapshot exact âgé de 25 s au plus, renouvelle un bail Kamailio de 30 s, et demande un drain sur non-ready, invalidité ou échec de collecte. La CLI de diagnostic conserve sa fraîcheur 45 s. Le carrier ne consomme pas encore cette preuve.

mTLS 9443

Export privé indépendant

telemetry.py pousse une enveloppe content-free vers une IPv4 RFC1918 exacte sur le NIC management. Le spool garde trois éléments, les retries sont idempotents et une panne distante n’affecte ni le runtime ni l’admission locale.

Quatorze contrôles critiques

Chaque échec rend la cellule non-ready sans tuer la liveness du collecteur.

SocleAsteriskRTPEngineKamailio
5 contrôles
runtime target, pare-feu actif, Chrony, attestation, secrets runtime
3 contrôles
unité, conteneur, boot + SIP TLS + ARI TLS
3 contrôles
unité, conteneur, ping NG loopback
3 contrôles
unité, conteneur, process/listener 5061

Identité du pare-feu actif

Le contrôle ne se limite pas à « nftables actif ». Il recalcule l’identité du contenu et vérifie les permissions.

Config

Politique canonique + mode

SHA-256 de la politique normalisée et fichier root-only 0600.

Rendu

Fichier de règles

SHA-256 de /etc/nftables.conf et mode 0644 attendu.

Actif

Règles réellement chargées

SHA-256 de la sortie nft list table inet navy_phone.

Health-lab

Quatre dérives injectées

Config, config-mode, rules-file et active-rules sont refusés séparément.

Artefacts et spool privés

Les écritures sont atomiques. La santé vit dans un répertoire root 0700 en 0640; l’export possède un répertoire 0700 séparé et des enveloppes 0600.

FichierContenuCardinalité / vie privéeConsommateur
snapshot.jsonCellule, liveness, readiness, 14 checks, redémarrages connusAucun identifiant d’appel, adresse réseau, média ou payloadCLI et contrôleur local
metrics.promTimestamp, readiness, checks, redémarrages mesurablesLabels fixes cell/check/component; métrique inconnue omiseDiagnostic local; aucun backend Prometheus
last-transition.jsonDernière transition ready/not-ready et checks échouésUn seul événement bornéDiagnostic local, aucune notification livrée
admission.jsonÉtat demandé/appliqué, motif borné et durée du bailAucune sortie de commande, donnée d’appel, adresse, média ou payloadPreuve locale seulement
export.jsonLivré, en file, supprimé et code de résultat bornéAucun corps distant, identifiant d’appel, média, adresse ou credentialDiagnostic exporter local
spool/*.jsonAu plus trois enveloppes v1 idempotentesForme exacte, digest et cellule revérifiés; symlinks refusésCollecteur candidat en code/lab, non déployé

Séparation des niveaux de preuve

Les commandes du health-lab sont simulées pour injecter les fautes. Les processus et protocoles réels sont prouvés séparément par runtime-lab.

NiveauAcquisNon acquis
CodeTimer/service, collecteur, politique image, IaC et gatesExécution distante
Health-lab14 fautes, 4 dérives firewall, snapshot forgé/ancien, admission/drain, échec actionneur et échec d’écriture de preuveCommandes/processus réels
Telemetry-labmTLS client, SAN serveur exact, refus TLS/HTTP, retry idempotent, spool borné/hostile, vie privée et absence de listenerRéseau cloud et alerting livré
Collector-labRéception mTLS réelle A/B, SAN lié à la cellule, déduplication, rétention locale 256, ordre, anti-Slowloris et cinq règles fixesDéploiement, HA, sauvegarde, backend externe, notification et SLO
Runtime-lab exact-edgeRuntimes épinglés; démarrage drainé, OPTIONS disponible, bail RPC réel, appel maintenu jusqu’à expiration puis BYE, nouvel INVITE 503; appel média intégré complet ensuiteCarrier/PSTN, cloud, PKI production, voix humaine, pipeline STT-LLM-TTS, charge, failover carrier et SLO
Preuves et IaCRapports locaux content-free et gate OpenTofu credential-freeVoir la matrice de preuve et la topologie de déploiement; promotion NO-GO
Cloud / productionRien pour ce lotImage, Instances, réseau, backend, retrait carrier, alerting, SLO, chaos A/B